Temsor API — Turkey & EU business data
What this MCP does
Provides business identity and payment-data validation, tax and FX information, sanctions-related lookups, and PBX call indexing and transfer records.
Tools
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['email'], 'properties': {'email': {'type': 'string', 'maxLength': 254, 'minLength': 3, 'description': 'E-mail address to check.'}, 'rejectRoleAccounts': {'type': 'boolean', 'default': False}, 'rejectFreeProviders': {'type': 'boolean', 'default': False}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['iban'], 'properties': {'iban': {'type': 'string', 'maxLength': 42, 'minLength': 5, 'description': 'IBAN, with or without spaces.'}, 'expectCountry': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'Expected country code (ISO 3166-1 alpha-2).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['call_id'], 'properties': {'uri': {'type': 'string', 'format': 'uri', 'description': 'Customer-side media URI (preferred).'}, 't_ms': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'pbx_id': {'type': 'string', 'maxLength': 64}, 'call_id': {'type': 'string', 'maxLength': 64, 'minLength': 2}, 'bytes_b64': {'type': 'string', 'maxLength': 200000, 'description': 'Optional small demo chunk; production prefers URI.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Max recent calls to return (1–100).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['call_id'], 'properties': {'call_id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Call id (e.g. call_msp_002).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['call_id'], 'properties': {'call_id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Call id whose transfer graph to return.'}, 'stuck_at': {'type': 'string', 'maxLength': 16, 'description': 'Optional override for where the promise stuck (extension).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'domain': {'enum': ['otel', 'santral_firmasi', 'msp', 'sigorta', 'finans', 'enerji', 'otomotiv', 'all'], 'type': 'string', 'default': 'all', 'description': 'Domain slice: otel | santral_firmasi | sigorta | finans | enerji | otomotiv (legacy msp) | all'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['term', 'alias'], 'properties': {'kind': {'enum': ['imei', 'tarife', 'oda', 'oda_tipi', 'klima', 'check_out', 'iade', 'sku', 'police', 'hasar', 'yenileme', 'abone', 'kesinti', 'fatura', 'kart', 'iban', 'sube', 'other'], 'type': 'string', 'description': 'Fact kind; inferred from seed term when omitted.'}, 'term': {'type': 'string', 'maxLength': 64, 'minLength': 2, 'description': 'Canonical term (e.g. AC, tariff). Plain Turkish preferred.'}, 'alias': {'type': 'string', 'maxLength': 64, 'minLength': 2, 'description': 'Synonym / alias to add (e.g. cooling, line package).'}, 'boost': {'type': 'number', 'maximum': 5, 'minimum': 1, 'description': 'Search boost weight (default 2).'}, 'scope': {'enum': ['pbx', 'global'], 'type': 'string', 'description': 'pbx = scoped to x-temsor-pbx-key; global = demo-wide. Default: pbx if registered key, else global.'}, 'domain': {'enum': ['otel', 'santral_firmasi', 'msp', 'sigorta', 'finans', 'enerji', 'otomotiv'], 'type': 'string', 'default': 'otel', 'description': 'Domain: otel | santral_firmasi | sigorta | finans | enerji | otomotiv (legacy msp accepted).'}, 'hint_en': {'type': 'string', 'maxLength': 160}, 'hint_tr': {'type': 'string', 'maxLength': 160}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['events'], 'properties': {'events': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'maxItems': 200, 'minItems': 1, 'description': 'ARI / Stasis event batch. Utterance/text fields trigger heuristic promise extract.'}, 'pbx_id': {'type': 'string', 'maxLength': 64, 'minLength': 2, 'description': 'PBX id that emitted the ARI batch.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'q': {'type': 'string', 'maxLength': 200, 'description': 'Free-text filter over kind + value + call_id.'}, 'kind': {'type': 'string', 'maxLength': 32, 'description': 'Fact kind key (imei, oda, tarife, ...) or all.'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Max facts to return (1–200).'}, 'domain': {'enum': ['otel', 'santral_firmasi', 'msp', 'sigorta', 'finans', 'enerji', 'otomotiv', 'all'], 'type': 'string', 'description': 'Domain slice: otel | santral_firmasi | sigorta | finans | enerji (legacy msp) | all.'}, 'call_id': {'type': 'string', 'maxLength': 80, 'description': 'Filter by call id (e.g. call_msp_001).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Fact id (e.g. fact_001).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['call_id'], 'properties': {'live': {'type': 'boolean', 'description': 'Default true while call is live.'}, 't_ms': {'anyOf': [{'type': 'integer', 'maximum': 86400000, 'minimum': 0}, {'type': 'null'}]}, 'text': {'type': 'string', 'maxLength': 2000, 'description': 'Partial utterance / snippet (customer STT or demo). Empty = metadata-only.'}, 'pbx_id': {'type': 'string', 'maxLength': 64}, 'call_id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Live call id to upsert partial index for.'}, 'promote': {'type': 'boolean', 'description': 'Promote heuristic hints into durable Promise/Fact docs.'}, 'speaker': {'anyOf': [{'type': 'string', 'maxLength': 64}, {'type': 'null'}]}, 'end_call': {'type': 'boolean', 'description': 'Mark live=false; idle $0 for this call.'}, 'is_final': {'type': 'boolean', 'description': 'Finalized utterance span (vs interim).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['call_id'], 'properties': {'call_id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Call id whose live partial index to read.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['transcript'], 'properties': {'ext': {'type': 'string', 'maxLength': 16}, 'who': {'type': 'string', 'maxLength': 120}, 'pbx_id': {'type': 'string', 'maxLength': 64}, 'call_id': {'type': 'string', 'maxLength': 64}, 'transcript': {'type': 'string', 'maxLength': 50000, 'minLength': 1, 'description': 'TR utterance / transcript text to scan for promises.'}, 'persist_promises': {'type': 'boolean', 'default': True, 'description': 'When false, extract only (dry-run, no write). When true, create Promise docs status=open.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'q': {'type': 'string', 'maxLength': 200, 'description': 'Free-text over names, phones, org, extensions, facts.'}, 'kind': {'enum': ['caller', 'extension', 'all'], 'type': 'string', 'description': 'caller = durable Person; extension = derived from call-graph hops; all = both.'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Max persons to return (1–200).'}, 'call_id': {'type': 'string', 'maxLength': 80, 'description': 'Filter persons seen on this call id.'}, 'include_extensions': {'type': 'boolean', 'description': 'Include derived extension identities (default true).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Person id (e.g. per_001) or extension id (e.g. ext_101).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'status': {'enum': ['open', 'kept', 'broken', 'unknown', 'all', 'closed'], 'type': 'string', 'default': 'open', 'description': 'Promise status filter; closed = kept|broken. Sales demo uses open.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['promise_id'], 'properties': {'action': {'enum': ['whisper', 'hold', 'transfer', 'pci_stop', 'snoop'], 'type': 'string', 'description': 'Default whisper. transfer uses graph stuck_at / promise.ext.'}, 'pbx_id': {'type': 'string', 'maxLength': 64}, 'agent_ext': {'type': 'string', 'maxLength': 64}, 'promise_id': {'type': 'string', 'maxLength': 64, 'minLength': 2, 'description': 'Open (or any) promise id — closed loop reads call graph then records orchestra intent.'}, 'skip_forward': {'type': 'boolean', 'description': 'Default true — record intent only.'}, 'stasis_webhook_url': {'type': 'string', 'maxLength': 500}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['promise_id', 'status'], 'properties': {'note': {'type': 'string', 'maxLength': 200, 'description': 'Optional short operator note. Phones/emails stripped (KVKK-safe).'}, 'status': {'enum': ['kept', 'broken'], 'type': 'string', 'description': 'Close outcome: kept (honoured) or broken (not kept).'}, 'promise_id': {'type': 'string', 'maxLength': 64, 'minLength': 2, 'description': 'Promise id (prm_*). Sales demo marks open promises kept|broken.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'format': {'enum': ['csv', 'json'], 'type': 'string', 'default': 'csv', 'description': 'Export format.'}, 'status': {'enum': ['open', 'kept', 'broken', 'unknown', 'all', 'closed'], 'type': 'string', 'default': 'open', 'description': 'Promise status filter; closed = kept|broken. Sales demo uses open.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['promise_id'], 'properties': {'promise_id': {'type': 'string', 'maxLength': 64, 'minLength': 2, 'description': 'Promise id (prm_*). Undo a kept|broken close — restore open.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'who': {'type': 'string', 'maxLength': 80, 'description': 'Actor label for durable audit (defaults to pbx scope / demo-operator).'}, 'mode': {'enum': ['anonymize', 'delete'], 'type': 'string', 'description': 'anonymize (default) scrubs fields; delete removes docs.'}, 'phone': {'type': 'string', 'maxLength': 32, 'minLength': 7, 'description': 'Caller phone — finds Person phones (+ linked derived index).'}, 'reason': {'type': 'string', 'maxLength': 200, 'description': 'KVKK (personal-data) / forget reason.'}, 'target_id': {'type': 'string', 'maxLength': 64, 'minLength': 2, 'description': 'Document id (prm_*, per_*, call_*, fact_*).'}, 'target_type': {'enum': ['promise', 'call', 'person', 'fact', 'utterance'], 'type': 'string', 'description': 'Index document type. Optional when `phone` is set.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Max recent forget actions to return (default 20).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'name': {'type': 'string', 'maxLength': 120, 'description': 'Pilot contact name (waitlist / register).'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 254, 'description': 'Pilot contact email.'}, 'label': {'type': 'string', 'maxLength': 120, 'description': 'Human label, e.g. hotel or PBX/IT provider site.'}, 'pbx_id': {'type': 'string', 'maxLength': 64, 'minLength': 2, 'description': 'Pilot PBX id; auto-minted if omitted.'}, 'webhook_url': {'type': 'string', 'format': 'uri', 'maxLength': 500, 'description': 'Optional outbound webhook URL — Temsor POSTs promise/fact/orchestra/redact events.'}, 'webhook_events': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'string'}], 'description': 'Event list or comma string: promise.opened|closed, fact.extracted, orchestra.act, redact, or *.'}, 'webhook_secret': {'type': 'string', 'maxLength': 200, 'description': 'Optional HMAC secret for outbound webhook signatures (x-temsor-signature).'}, 'ari_webhook_secret': {'type': 'string', 'maxLength': 200, 'description': 'ARI webhook signing secret (stored as hint only).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'q': {'type': 'string', 'default': '', 'maxLength': 200, 'description': 'Full-text query over promises, facts, and call summaries.'}, 'ext': {'type': 'string', 'maxLength': 16}, 'status': {'enum': ['open', 'kept', 'broken', 'unknown'], 'type': 'string'}, 'date_to': {'type': 'string', 'maxLength': 40, 'description': 'ISO date/time upper bound.'}, 'date_from': {'type': 'string', 'maxLength': 40, 'description': 'ISO date/time lower bound (promise.when_iso / call.started_at).'}, 'competitor': {'type': 'string', 'maxLength': 64}, 'stuck_after': {'type': 'string', 'maxLength': 16, 'description': 'Filter: promise stuck after transfer to this extension (to_ext hop).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'description': 'No input — scoped by x-temsor-pbx-key when set.'}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'url': {'type': 'string', 'maxLength': 500, 'description': 'Outbound webhook URL (http/https). Present → register; omit on GET → list.'}, 'ping': {'type': 'boolean', 'description': 'If true with url → register then ping; if true without url → ping existing.'}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'List limit (default 50).'}, 'events': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'string'}], 'description': 'Events: promise.opened|closed, fact.extracted, orchestra.act, redact, or *.'}, 'secret': {'type': 'string', 'maxLength': 200, 'description': 'Optional HMAC-SHA256 secret → x-temsor-signature: sha256=<hex>.'}, 'webhook_id': {'type': 'string', 'maxLength': 64, 'description': 'For ping: target webhook id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Max deliveries (default 20).'}, 'webhook_id': {'type': 'string', 'maxLength': 64, 'description': 'Filter by webhook id.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'description': 'No input — TEMSOR_RTP_* from process env.'}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['call_id'], 'properties': {'call_id': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Active call id for agent UI context.'}, 'partial_text': {'type': 'string', 'default': '', 'maxLength': 2000, 'description': 'Partial transcript / utterance text (no live speech recognition).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['phone'], 'properties': {'phone': {'type': 'string', 'maxLength': 30, 'minLength': 4, 'description': 'Phone number in any common format.'}, 'defaultCountry': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'ISO 3166-1 alpha-2 country to assume when the number has no international prefix. Defaults to TR.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['address'], 'properties': {'address': {'type': 'string', 'maxLength': 500, 'minLength': 3, 'description': 'Free-text address.'}, 'defaultProvince': {'type': 'string', 'description': 'Province to assume when the address has none.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['start'], 'properties': {'end': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'If set, count business days between start and this date.'}, 'start': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Start date (YYYY-MM-DD).'}, 'addDays': {'type': 'integer', 'maximum': 3650, 'minimum': -3650, 'description': 'Add/subtract this many business days (not calendar days).'}, 'countHalfDaysAsWork': {'type': 'boolean', 'default': True, 'description': 'Count Arife half-days as working days?'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['bankCode', 'accountNumber'], 'properties': {'bankCode': {'type': 'string', 'description': '5-digit Turkish national bank / EFT code (e.g. 00062).'}, 'reserved': {'type': 'string', 'description': 'Reserved BBAN digit after the bank code. Defaults to 0.'}, 'accountNumber': {'type': 'string', 'description': 'Account number, up to 16 alphanumeric characters (padded left with zeros).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['issueDate', 'supplier', 'customer', 'lines'], 'properties': {'id': {'type': 'string', 'pattern': '^[A-Z]{3}[0-9]{13}$', 'description': 'Invoice number. Omit and supply `series` to have it built from the series and sequence.'}, 'uuid': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'Document UUID (ETTN). Generated when omitted.'}, 'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'unitPrice'], 'properties': {'name': {'type': 'string', 'maxLength': 300, 'minLength': 1, 'description': 'Item or service description as it must appear on the invoice.'}, 'note': {'type': 'string', 'maxLength': 500}, 'vatRate': {'type': 'number', 'default': 20, 'maximum': 100, 'minimum': 0, 'description': 'VAT percentage, e.g. 20, 10, 1 or 0.'}, 'quantity': {'type': 'number', 'default': 1, 'maximum': 1000000000, 'exclusiveMinimum': 0}, 'unitCode': {'type': 'string', 'default': 'C62', 'maxLength': 10, 'minLength': 1, 'description': 'UN/ECE unit code. C62 = piece, KGM = kg, MTR = metre, HUR = hour.'}, 'unitPrice': {'type': 'number', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Net unit price, before VAT and before the discount.'}, 'discountRate': {'type': 'number', 'default': 0, 'maximum': 100, 'minimum': 0, 'description': 'Line discount percentage applied to the net amount.'}, 'sellerItemCode': {'type': 'string', 'maxLength': 60}, 'vatExemptionReasonCode': {'type': 'string', 'maxLength': 10, 'description': 'Required by the tax authority when vatRate is 0.'}}}, 'maxItems': 500, 'minItems': 1}, 'notes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1000}, 'default': [], 'maxItems': 20}, 'series': {'type': 'string', 'pattern': '^[A-Z]{3}$', 'description': 'Three-letter series code, used with `sequence`.'}, 'profile': {'enum': ['TEMELFATURA', 'TICARIFATURA', 'EARSIVFATURA'], 'type': 'string', 'default': 'TEMELFATURA', 'description': 'TEMELFATURA: no formal objection flow. TICARIFATURA: buyer may accept/reject. EARSIVFATURA: buyer is not an e-Invoice user.'}, 'currency': {'type': 'string', 'default': 'TRY', 'maxLength': 3, 'minLength': 3, 'description': 'ISO 4217. Anything other than TRY requires `exchangeRate`.'}, 'customer': {'type': 'object', 'required': ['name', 'taxNumber'], 'properties': {'city': {'type': 'string', 'maxLength': 100, 'description': 'City.'}, 'name': {'type': 'string', 'maxLength': 300, 'minLength': 2, 'description': 'Registered trade name, or the person’s full name.'}, 'email': {'type': 'string', 'maxLength': 120}, 'phone': {'type': 'string', 'maxLength': 40}, 'street': {'type': 'string', 'maxLength': 200}, 'country': {'type': 'string', 'default': 'Türkiye', 'maxLength': 60}, 'district': {'type': 'string', 'maxLength': 100, 'description': 'District.'}, 'taxNumber': {'type': 'string', 'maxLength': 11, 'minLength': 10, 'description': 'VKN (10 digits) or, for an individual, TCKN (11 digits).'}, 'taxOffice': {'type': 'string', 'maxLength': 100, 'description': 'Tax office ("vergi dairesi"). Required for VKN holders.'}, 'postalCode': {'type': 'string', 'maxLength': 10}, 'buildingNumber': {'type': 'string', 'maxLength': 30}}}, 'sequence': {'type': 'integer', 'maximum': 999999999, 'minimum': 1, 'description': 'Sequence number within the series and year.'}, 'supplier': {'type': 'object', 'required': ['name', 'taxNumber'], 'properties': {'city': {'type': 'string', 'maxLength': 100, 'description': 'City.'}, 'name': {'type': 'string', 'maxLength': 300, 'minLength': 2, 'description': 'Registered trade name, or the person’s full name.'}, 'email': {'type': 'string', 'maxLength': 120}, 'phone': {'type': 'string', 'maxLength': 40}, 'street': {'type': 'string', 'maxLength': 200}, 'country': {'type': 'string', 'default': 'Türkiye', 'maxLength': 60}, 'district': {'type': 'string', 'maxLength': 100, 'description': 'District.'}, 'taxNumber': {'type': 'string', 'maxLength': 11, 'minLength': 10, 'description': 'VKN (10 digits) or, for an individual, TCKN (11 digits).'}, 'taxOffice': {'type': 'string', 'maxLength': 100, 'description': 'Tax office ("vergi dairesi"). Required for VKN holders.'}, 'postalCode': {'type': 'string', 'maxLength': 10}, 'buildingNumber': {'type': 'string', 'maxLength': 30}}}, 'issueDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'issueTime': {'type': 'string', 'pattern': '^\\d{2}:\\d{2}:\\d{2}$'}, 'exchangeRate': {'type': 'number', 'description': 'Units of TRY per one unit of `currency`.', 'exclusiveMinimum': 0}, 'amountInWords': {'type': 'boolean', 'default': True, 'description': 'Adds the payable amount written out in Turkish words as a note, the way invoices require.'}, 'invoiceTypeCode': {'enum': ['SATIS', 'IADE'], 'type': 'string', 'default': 'SATIS'}, 'orderReferenceId': {'type': 'string', 'maxLength': 50}, 'despatchDocumentId': {'type': 'string', 'maxLength': 50, 'description': 'Delivery note number, if the goods shipped separately.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['xml'], 'properties': {'xml': {'type': 'string', 'maxLength': 4000000, 'minLength': 20, 'description': 'UBL-TR e-Invoice / e-Archive (e-Arsiv) XML body.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['startDate', 'endDate', 'monthlyGross'], 'properties': {'age': {'type': 'integer', 'maximum': 90, 'minimum': 15, 'description': 'Employee age at termination — affects annual-leave entitlement (under 18 or 50+).'}, 'asOf': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Rate table date. Defaults to endDate.'}, 'endDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Termination date (YYYY-MM-DD). Inclusive of this day.'}, 'startDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Employment start date (YYYY-MM-DD).'}, 'monthlyGross': {'type': 'number', 'maximum': 10000000, 'description': 'Gross monthly wage the severance is based on (giydirilmiş brüt).', 'exclusiveMinimum': 0}, 'unusedLeaveDays': {'type': 'number', 'maximum': 400, 'minimum': 0, 'description': 'Unused annual-leave days, if you also want the unused-leave gross.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['amount'], 'properties': {'style': {'enum': ['lower', 'title', 'upper'], 'type': 'string', 'default': 'lower', 'description': 'Output letter case.'}, 'amount': {'anyOf': [{'type': 'string'}, {'type': 'number'}], 'description': 'Amount. Accepts both "1.234,56" and 1234.56.'}, 'currency': {'enum': ['TRY', 'USD', 'EUR', 'GBP'], 'type': 'string', 'default': 'TRY'}, 'wrapHash': {'type': 'boolean', 'default': False}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['postalCode'], 'properties': {'postalCode': {'type': 'string', 'maxLength': 10, 'minLength': 3, 'description': 'Turkish 5-digit postal code, with or without spaces.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['iban', 'name'], 'properties': {'iban': {'type': 'string', 'description': 'Beneficiary Turkish IBAN (with or without spaces).'}, 'name': {'type': 'string', 'description': 'Payee name shown to the payer (2–26 chars after trim).'}, 'amount': {'type': 'number', 'description': 'TRY amount; omitted → static QR (payer enters amount).'}, 'currency': {'type': 'string', 'description': 'Must be TRY if provided.'}, 'explanation': {'type': 'string', 'description': 'Optional remittance note (application free field 10).'}, 'generatorCode': {'type': 'string', 'description': 'QR generator / EFT code (4 digits). Defaults to last 4 of the IBAN bank code.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['type', 'lawFamily', 'basisDate', 'periodDays'], 'properties': {'type': {'enum': ['electronic', 'physical', 'vekil', 'ilanen', 'last_known_address'], 'type': 'string', 'description': 'Notification method. Determines which event `basisDate` refers to and whether the deemed-received date is same-day or shifted.'}, 'basisDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'The date `basisLabel` describes for this type — for "electronic" this is the date UETS reports the message as reached, not sent or read.'}, 'lawFamily': {'enum': ['hmk'], 'type': 'string', 'description': 'Body of procedural law the period is computed under. Only "hmk" (Code of Civil Procedure) is supported so far.'}, 'periodDays': {'type': 'integer', 'maximum': 3650, 'description': 'Length of the statutory or judicial period, in days, counted from `periodStart`.', 'exclusiveMinimum': 0}, 'periodType': {'type': 'string', 'maxLength': 120, 'description': 'Free-text label for the period (e.g. "itiraz", "temyiz"), echoed back only — not mapped to a day count.'}, 'hasAttorney': {'type': 'boolean', 'description': '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 to the attorney.'}, 'ilanenDeemedDays': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': '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 days for the underlying period.'}, 'subjectToJudicialRecess': {'type': 'boolean', 'description': '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 computed last day falls in the 20 July - 31 August window.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['value'], 'properties': {'type': {'enum': ['auto', 'tckn', 'vkn', 'iban', 'plate', 'imei', 'gtin', 'kep', 'mersis', 'postal', 'isbn'], 'type': 'string', 'default': 'auto', 'description': 'Omitted → inferred from the format.'}, 'value': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Value to validate.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['amount'], 'properties': {'rate': {'anyOf': [{'type': 'number', 'const': 0}, {'type': 'number', 'const': 1}, {'type': 'number', 'const': 10}, {'type': 'number', 'const': 20}], 'default': 20, 'description': 'VAT rate in percent. 0, 1, 10 or 20.'}, 'amount': {'type': 'number', 'maximum': 1000000000000, 'minimum': 0, 'description': 'The amount to tax. See amountIncludesVat.'}, 'withholding': {'type': 'string', 'description': 'Withholding fraction such as "5/10", or a code from the list (reklam, tasima, hurda, isgucu…).'}, 'amountIncludesVat': {'type': 'boolean', 'default': False, 'description': 'If true, `amount` is the gross (KDV dahil); if false, it is the net/matrah.'}}}
Recent tool changes
Similar MCP servers
Lovie Company Formation
Supports company formation and business administration with bank accounts, cards, invoicing, bookkeeping, accounting periods, and…
独行录 / opcmenu
Supports founder and company discovery, collaboration goals and tasks, events and signups, networking, messaging, profiles, produ…
AgentLot Marketplace
Enables agents and users to discover, bid on, purchase, deliver, and settle paid digital services and compute work.
Odichat
Manages WhatsApp, Instagram, and Facebook inboxes with contacts, conversations, agents, automation rules, labels, canned response…
BeeL
Provides Spanish company administration and VeriFactu-compliant invoicing, including customers, products, invoice issuance, corre…
corply
Supports company formation and corporate administration including incorporation documents, signatures, cap tables, corporate acti…
Speedbot Autonomous Work Network
Supports asynchronous collaboration, discovery, messaging, referrals, and optional USDC-based scenarios among AI agents.
KaiCalls
Provides AI phone reception, outbound calling campaigns, call transcripts and recordings, lead management, routing, staff alerts,…