MCP Server

FACTRAIL

io.github.baronsigma/factrail
Business & Operations Legal & Compliance Public & reachable MCP 2025-11-25

What this MCP does

Verifies French company records and corporate events using INSEE Sirene and BODACC evidence, and supports structured import assessments.

analyze_company
[Deprecated] Company Analysis
Deprecated: use factrail_verify instead. Use only when an older integration still calls this experimental tool; financial and credit data sources are unavailable and returned fields are null.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': [], 'properties': {'siren': {'type': 'string', 'description': 'Optional SIREN (9-digit) or SIRET (14-digit) identifier.'}, 'company_name': {'type': 'string', 'description': 'Optional caller-provided display name; it is echoed without verification.'}, 'country_code': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code.'}}}
assess_import
[Deprecated] EU Import Assessment
Deprecated: use factrail_assess instead. Use when an older integration still expects the legacy beta EU import assessment format; coverage may be partial or provisional and this is not a binding customs result.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['product', 'origin_country', 'destination_country', 'quantity', 'goods_value', 'currency'], 'properties': {'model': {'type': 'string', 'description': 'Optional model identifier.'}, 'product': {'type': 'string', 'description': "Short product description (e.g. '750ml insulated stainless steel drinking bottle')."}, 'currency': {'type': 'string', 'description': "ISO 4217 currency code (e.g. 'EUR')."}, 'incoterm': {'type': 'string', 'description': "Optional Incoterm (e.g. 'FCA', 'CIF', 'DDP')."}, 'material': {'type': 'string', 'description': "Optional primary material (e.g. 'stainless steel')."}, 'quantity': {'type': 'integer', 'description': 'Number of units.'}, 'weight_kg': {'type': 'number', 'description': 'Optional gross weight per unit in kg.'}, 'dimensions': {'type': 'string', 'description': "Optional product dimensions (e.g. '25x8x8 cm')."}, 'goods_value': {'type': 'number', 'description': 'Total goods value in the given currency.'}, 'freight_cost': {'type': 'number', 'description': 'Optional total freight cost in the given currency.'}, 'manufacturer': {'type': 'string', 'description': 'Optional manufacturer name.'}, 'known_hs_code': {'type': 'string', 'description': 'Optional known HS code (6-10 digits). If supplied, validated and enriched.'}, 'shipping_mode': {'type': 'string', 'description': "Optional shipping mode (e.g. 'sea', 'air', 'road')."}, 'insurance_cost': {'type': 'number', 'description': 'Optional total insurance cost in the given currency.'}, 'origin_country': {'type': 'string', 'description': "ISO 3166-1 alpha-2 origin country code (e.g. 'CN')."}, 'origin_location': {'type': 'string', 'description': 'Optional origin city/port/location.'}, 'destination_country': {'type': 'string', 'description': "ISO 3166-1 alpha-2 EU destination country code (e.g. 'FR'). V0 supports EU member states only."}, 'destination_location': {'type': 'string', 'description': 'Optional destination city/port/location.'}}}
factrail_assess
Assess EU Import (Beta)
Use when you need a source-backed assessment of importing a product into the EU (tariff classification, duties, and related evidence). Returns an EvidenceEnvelope; import assessment is Beta and results expose source coverage and support levels.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['assessment_type', 'parameters'], 'properties': {'parameters': {'type': 'object', 'title': 'AssessImportInput', 'required': ['product', 'origin_country', 'destination_country', 'quantity', 'goods_value', 'currency'], 'properties': {'model': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Model', 'default': None}, 'product': {'type': 'string', 'title': 'Product', 'examples': ['750ml insulated stainless steel drinking bottle'], 'maxLength': 500, 'minLength': 3}, 'currency': {'type': 'string', 'title': 'Currency', 'examples': ['EUR'], 'maxLength': 3, 'minLength': 3}, 'incoterm': {'anyOf': [{'type': 'string', 'maxLength': 10}, {'type': 'null'}], 'title': 'Incoterm', 'default': None}, 'material': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Material', 'default': None}, 'quantity': {'type': 'integer', 'title': 'Quantity', 'maximum': 1000000000, 'minimum': 1, 'examples': [5000]}, 'weight_kg': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0.0001}, {'type': 'null'}], 'title': 'Weight Kg', 'default': None}, 'dimensions': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Dimensions', 'default': None}, 'goods_value': {'type': 'number', 'title': 'Goods Value', 'maximum': 1000000000000, 'minimum': 0.01, 'examples': [13500.0]}, 'freight_cost': {'anyOf': [{'type': 'number', 'minimum': 0.0}, {'type': 'null'}], 'title': 'Freight Cost', 'default': None}, 'manufacturer': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Manufacturer', 'default': None}, 'known_hs_code': {'anyOf': [{'type': 'string', 'maxLength': 10, 'minLength': 6}, {'type': 'null'}], 'title': 'Known Hs Code', 'default': None, 'examples': ['960100']}, 'shipping_mode': {'anyOf': [{'type': 'string', 'maxLength': 50}, {'type': 'null'}], 'title': 'Shipping Mode', 'default': None}, 'insurance_cost': {'anyOf': [{'type': 'number', 'minimum': 0.0}, {'type': 'null'}], 'title': 'Insurance Cost', 'default': None}, 'origin_country': {'type': 'string', 'title': 'Origin Country', 'examples': ['CN'], 'maxLength': 2, 'minLength': 2}, 'assessment_date': {'anyOf': [{'type': 'string', 'format': 'date'}, {'type': 'null'}], 'title': 'Assessment Date', 'default': None, 'description': 'Optional TARIC effective/simulation date; availability depends on the installed snapshot.'}, 'origin_location': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Origin Location', 'default': None}, 'destination_country': {'type': 'string', 'title': 'Destination Country', 'examples': ['FR'], 'maxLength': 2, 'minLength': 2}, 'destination_location': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Destination Location', 'default': None}}, 'description': 'Required + optional inputs for assess_import.', 'additionalProperties': False}, 'assessment_type': {'enum': ['import'], 'type': 'string', 'description': 'Currently only import is supported.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Fact': {'type': 'object', 'title': 'Fact', 'required': ['field', 'value', 'evidence_ids'], 'properties': {'field': {'type': 'string', 'title': 'Field'}, 'value': {'title': 'Value'}, 'metadata': {'type': 'object', 'title': 'Metadata', 'additionalProperties': True}, 'effective_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Effective At', 'default': None}, 'evidence_ids': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Evidence Ids', 'minItems': 1}, 'jurisdiction': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Jurisdiction', 'default': None}, 'support_level': {'$ref': '#/$defs/SupportLevel', 'default': 'supported'}, 'provenance_type': {'type': 'string', 'title': 'Provenance Type', 'default': 'sourced'}, 'normalized_value': {'title': 'Normalized Value', 'default': None}}}, 'Subject': {'type': 'object', 'title': 'Subject', 'required': ['type'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'type': {'type': 'string', 'title': 'Type'}, 'identifiers': {'type': 'object', 'title': 'Identifiers', 'additionalProperties': {'type': 'string'}}}}, 'Conflict': {'type': 'object', 'title': 'Conflict', 'required': ['field', 'sides', 'resolution_status'], 'properties': {'field': {'type': 'string', 'title': 'Field'}, 'sides': {'type': 'array', 'items': {'$ref': '#/$defs/ConflictSide'}, 'title': 'Sides', 'minItems': 2}, 'resolution_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Resolution Reason', 'default': None}, 'resolution_status': {'type': 'string', 'title': 'Resolution Status'}}}, 'Coverage': {'type': 'object', 'title': 'Coverage', 'required': ['level', 'fields_requested', 'fields_resolved', 'fields_unresolved'], 'properties': {'level': {'$ref': '#/$defs/CoverageLevel'}, 'metadata': {'type': 'object', 'title': 'Metadata', 'additionalProperties': True}, 'fields_resolved': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Fields Resolved'}, 'fields_requested': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Fields Requested'}, 'fields_unresolved': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Fields Unresolved'}}}, 'Freshness': {'type': 'object', 'title': 'Freshness', 'required': ['generated_at', 'stale'], 'properties': {'stale': {'type': 'boolean', 'title': 'Stale'}, 'generated_at': {'type': 'string', 'title': 'Generated At', 'format': 'date-time'}, 'recheck_after': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Recheck After', 'default': None}, 'newest_supporting_retrieved_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Newest Supporting Retrieved At', 'default': None}, 'oldest_supporting_retrieved_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Oldest Supporting Retrieved At', 'default': None}}}, 'ConflictSide': {'type': 'object', 'title': 'ConflictSide', 'required': ['value', 'evidence_ids'], 'properties': {'value': {'title': 'Value'}, 'evidence_ids': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Evidence Ids', 'minItems': 1}}}, 'SupportLevel': {'enum': ['authoritative', 'supported', 'derived_supported', 'derived_provisional', 'curated', 'caller_input'], 'type': 'string', 'title': 'SupportLevel', 'description': 'How strongly a fact is supported, independent of numeric confidence.'}, 'CoverageLevel': {'enum': ['sufficient', 'partial', 'insufficient'], 'type': 'string', 'title': 'CoverageLevel'}, 'EvidenceSource': {'type': 'object', 'title': 'EvidenceSource', 'required': ['id', 'source_type', 'authority_class', 'publisher', 'retrieved_at', 'source_status'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Url', 'default': None}, 'metadata': {'type': 'object', 'title': 'Metadata', 'additionalProperties': True}, 'publisher': {'type': 'string', 'title': 'Publisher'}, 'source_type': {'type': 'string', 'title': 'Source Type'}, 'content_hash': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Content Hash', 'default': None}, 'effective_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Effective At', 'default': None}, 'retrieved_at': {'type': 'string', 'title': 'Retrieved At', 'format': 'date-time'}, 'source_status': {'type': 'string', 'title': 'Source Status'}, 'authority_class': {'type': 'string', 'title': 'Authority Class'}}}, 'VerificationStatus': {'enum': ['supported', 'contradicted', 'insufficient_evidence', 'stale', 'conflicting_sources'], 'type': 'string', 'title': 'VerificationStatus'}}, 'title': 'EvidenceEnvelope', 'required': ['status', 'subject', 'facts', 'evidence', 'conflicts', 'coverage', 'freshness', 'generated_at'], 'properties': {'facts': {'type': 'array', 'items': {'$ref': '#/$defs/Fact'}, 'title': 'Facts'}, 'status': {'$ref': '#/$defs/VerificationStatus'}, 'subject': {'$ref': '#/$defs/Subject'}, 'coverage': {'$ref': '#/$defs/Coverage'}, 'evidence': {'type': 'array', 'items': {'$ref': '#/$defs/EvidenceSource'}, 'title': 'Evidence'}, 'conflicts': {'type': 'array', 'items': {'$ref': '#/$defs/Conflict'}, 'title': 'Conflicts'}, 'freshness': {'$ref': '#/$defs/Freshness'}, 'receipt_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Receipt Id', 'default': None}, 'generated_at': {'type': 'string', 'title': 'Generated At', 'format': 'date-time'}, 'schema_version': {'type': 'string', 'title': 'Schema Version', 'default': '1.2'}, 'state_fingerprint': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'State Fingerprint', 'default': None}}}
factrail_capabilities
FACTRAIL Capabilities
Use when you need to discover what FACTRAIL can verify or assess before calling another tool. Returns available capabilities, inputs, fields, sources, versions, and limitations; call first to inspect current coverage and source state.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'operation': {'enum': ['verify', 'assess'], 'type': 'string'}, 'capability': {'enum': ['company_fr', 'import'], 'type': 'string'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['capabilities'], 'properties': {'capabilities': {'type': 'array', 'items': {'type': 'object'}}}}
factrail_get_receipt
Get Evidence Receipt
Use when you need to re-fetch or audit a previously returned FACTRAIL result by its receipt ID. Recomputes the stored EvidenceEnvelope's content hash and rejects altered content; this checks integrity, not truth.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['receipt_id'], 'properties': {'receipt_id': {'type': 'string', 'pattern': '^fr_[0-9a-f]{64}$', 'description': 'A FACTRAIL evidence observation ID.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Fact': {'type': 'object', 'title': 'Fact', 'required': ['field', 'value', 'evidence_ids'], 'properties': {'field': {'type': 'string', 'title': 'Field'}, 'value': {'title': 'Value'}, 'metadata': {'type': 'object', 'title': 'Metadata', 'additionalProperties': True}, 'effective_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Effective At', 'default': None}, 'evidence_ids': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Evidence Ids', 'minItems': 1}, 'jurisdiction': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Jurisdiction', 'default': None}, 'support_level': {'$ref': '#/$defs/SupportLevel', 'default': 'supported'}, 'provenance_type': {'type': 'string', 'title': 'Provenance Type', 'default': 'sourced'}, 'normalized_value': {'title': 'Normalized Value', 'default': None}}}, 'Subject': {'type': 'object', 'title': 'Subject', 'required': ['type'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'type': {'type': 'string', 'title': 'Type'}, 'identifiers': {'type': 'object', 'title': 'Identifiers', 'additionalProperties': {'type': 'string'}}}}, 'Conflict': {'type': 'object', 'title': 'Conflict', 'required': ['field', 'sides', 'resolution_status'], 'properties': {'field': {'type': 'string', 'title': 'Field'}, 'sides': {'type': 'array', 'items': {'$ref': '#/$defs/ConflictSide'}, 'title': 'Sides', 'minItems': 2}, 'resolution_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Resolution Reason', 'default': None}, 'resolution_status': {'type': 'string', 'title': 'Resolution Status'}}}, 'Coverage': {'type': 'object', 'title': 'Coverage', 'required': ['level', 'fields_requested', 'fields_resolved', 'fields_unresolved'], 'properties': {'level': {'$ref': '#/$defs/CoverageLevel'}, 'metadata': {'type': 'object', 'title': 'Metadata', 'additionalProperties': True}, 'fields_resolved': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Fields Resolved'}, 'fields_requested': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Fields Requested'}, 'fields_unresolved': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Fields Unresolved'}}}, 'Freshness': {'type': 'object', 'title': 'Freshness', 'required': ['generated_at', 'stale'], 'properties': {'stale': {'type': 'boolean', 'title': 'Stale'}, 'generated_at': {'type': 'string', 'title': 'Generated At', 'format': 'date-time'}, 'recheck_after': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Recheck After', 'default': None}, 'newest_supporting_retrieved_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Newest Supporting Retrieved At', 'default': None}, 'oldest_supporting_retrieved_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Oldest Supporting Retrieved At', 'default': None}}}, 'ConflictSide': {'type': 'object', 'title': 'ConflictSide', 'required': ['value', 'evidence_ids'], 'properties': {'value': {'title': 'Value'}, 'evidence_ids': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Evidence Ids', 'minItems': 1}}}, 'SupportLevel': {'enum': ['authoritative', 'supported', 'derived_supported', 'derived_provisional', 'curated', 'caller_input'], 'type': 'string', 'title': 'SupportLevel', 'description': 'How strongly a fact is supported, independent of numeric confidence.'}, 'CoverageLevel': {'enum': ['sufficient', 'partial', 'insufficient'], 'type': 'string', 'title': 'CoverageLevel'}, 'EvidenceSource': {'type': 'object', 'title': 'EvidenceSource', 'required': ['id', 'source_type', 'authority_class', 'publisher', 'retrieved_at', 'source_status'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Url', 'default': None}, 'metadata': {'type': 'object', 'title': 'Metadata', 'additionalProperties': True}, 'publisher': {'type': 'string', 'title': 'Publisher'}, 'source_type': {'type': 'string', 'title': 'Source Type'}, 'content_hash': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Content Hash', 'default': None}, 'effective_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Effective At', 'default': None}, 'retrieved_at': {'type': 'string', 'title': 'Retrieved At', 'format': 'date-time'}, 'source_status': {'type': 'string', 'title': 'Source Status'}, 'authority_class': {'type': 'string', 'title': 'Authority Class'}}}, 'VerificationStatus': {'enum': ['supported', 'contradicted', 'insufficient_evidence', 'stale', 'conflicting_sources'], 'type': 'string', 'title': 'VerificationStatus'}}, 'title': 'EvidenceEnvelope', 'required': ['status', 'subject', 'facts', 'evidence', 'conflicts', 'coverage', 'freshness', 'generated_at'], 'properties': {'facts': {'type': 'array', 'items': {'$ref': '#/$defs/Fact'}, 'title': 'Facts'}, 'status': {'$ref': '#/$defs/VerificationStatus'}, 'subject': {'$ref': '#/$defs/Subject'}, 'coverage': {'$ref': '#/$defs/Coverage'}, 'evidence': {'type': 'array', 'items': {'$ref': '#/$defs/EvidenceSource'}, 'title': 'Evidence'}, 'conflicts': {'type': 'array', 'items': {'$ref': '#/$defs/Conflict'}, 'title': 'Conflicts'}, 'freshness': {'$ref': '#/$defs/Freshness'}, 'receipt_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Receipt Id', 'default': None}, 'generated_at': {'type': 'string', 'title': 'Generated At', 'format': 'date-time'}, 'schema_version': {'type': 'string', 'title': 'Schema Version', 'default': '1.2'}, 'state_fingerprint': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'State Fingerprint', 'default': None}}}
factrail_verify
Verify French Company
Use when you need verified, source-backed facts about a French company from its SIREN or SIRET. Returns Evidence with provenance, freshness, coverage, conflicts, and a reusable receipt.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['subject_type', 'identifier'], 'properties': {'fields': {'type': 'array', 'items': {'enum': ['cessation_date', 'creation_date', 'diffusion_status', 'head_office', 'legal_form', 'legal_name', 'naf_code', 'siren', 'siret', 'status', 'trade_name'], 'type': 'string'}, 'minItems': 1, 'description': 'Optional company fields to resolve; omit for the default set.'}, 'identifier': {'type': 'string', 'pattern': '^([0-9]{9}|[0-9]{14})$', 'description': 'A 9-digit SIREN or 14-digit SIRET.'}, 'subject_type': {'enum': ['company_fr'], 'type': 'string', 'description': 'Currently only French companies are supported.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Fact': {'type': 'object', 'title': 'Fact', 'required': ['field', 'value', 'evidence_ids'], 'properties': {'field': {'type': 'string', 'title': 'Field'}, 'value': {'title': 'Value'}, 'metadata': {'type': 'object', 'title': 'Metadata', 'additionalProperties': True}, 'effective_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Effective At', 'default': None}, 'evidence_ids': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Evidence Ids', 'minItems': 1}, 'jurisdiction': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Jurisdiction', 'default': None}, 'support_level': {'$ref': '#/$defs/SupportLevel', 'default': 'supported'}, 'provenance_type': {'type': 'string', 'title': 'Provenance Type', 'default': 'sourced'}, 'normalized_value': {'title': 'Normalized Value', 'default': None}}}, 'Subject': {'type': 'object', 'title': 'Subject', 'required': ['type'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'type': {'type': 'string', 'title': 'Type'}, 'identifiers': {'type': 'object', 'title': 'Identifiers', 'additionalProperties': {'type': 'string'}}}}, 'Conflict': {'type': 'object', 'title': 'Conflict', 'required': ['field', 'sides', 'resolution_status'], 'properties': {'field': {'type': 'string', 'title': 'Field'}, 'sides': {'type': 'array', 'items': {'$ref': '#/$defs/ConflictSide'}, 'title': 'Sides', 'minItems': 2}, 'resolution_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Resolution Reason', 'default': None}, 'resolution_status': {'type': 'string', 'title': 'Resolution Status'}}}, 'Coverage': {'type': 'object', 'title': 'Coverage', 'required': ['level', 'fields_requested', 'fields_resolved', 'fields_unresolved'], 'properties': {'level': {'$ref': '#/$defs/CoverageLevel'}, 'metadata': {'type': 'object', 'title': 'Metadata', 'additionalProperties': True}, 'fields_resolved': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Fields Resolved'}, 'fields_requested': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Fields Requested'}, 'fields_unresolved': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Fields Unresolved'}}}, 'Freshness': {'type': 'object', 'title': 'Freshness', 'required': ['generated_at', 'stale'], 'properties': {'stale': {'type': 'boolean', 'title': 'Stale'}, 'generated_at': {'type': 'string', 'title': 'Generated At', 'format': 'date-time'}, 'recheck_after': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Recheck After', 'default': None}, 'newest_supporting_retrieved_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Newest Supporting Retrieved At', 'default': None}, 'oldest_supporting_retrieved_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Oldest Supporting Retrieved At', 'default': None}}}, 'ConflictSide': {'type': 'object', 'title': 'ConflictSide', 'required': ['value', 'evidence_ids'], 'properties': {'value': {'title': 'Value'}, 'evidence_ids': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Evidence Ids', 'minItems': 1}}}, 'SupportLevel': {'enum': ['authoritative', 'supported', 'derived_supported', 'derived_provisional', 'curated', 'caller_input'], 'type': 'string', 'title': 'SupportLevel', 'description': 'How strongly a fact is supported, independent of numeric confidence.'}, 'CoverageLevel': {'enum': ['sufficient', 'partial', 'insufficient'], 'type': 'string', 'title': 'CoverageLevel'}, 'EvidenceSource': {'type': 'object', 'title': 'EvidenceSource', 'required': ['id', 'source_type', 'authority_class', 'publisher', 'retrieved_at', 'source_status'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Url', 'default': None}, 'metadata': {'type': 'object', 'title': 'Metadata', 'additionalProperties': True}, 'publisher': {'type': 'string', 'title': 'Publisher'}, 'source_type': {'type': 'string', 'title': 'Source Type'}, 'content_hash': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Content Hash', 'default': None}, 'effective_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Effective At', 'default': None}, 'retrieved_at': {'type': 'string', 'title': 'Retrieved At', 'format': 'date-time'}, 'source_status': {'type': 'string', 'title': 'Source Status'}, 'authority_class': {'type': 'string', 'title': 'Authority Class'}}}, 'VerificationStatus': {'enum': ['supported', 'contradicted', 'insufficient_evidence', 'stale', 'conflicting_sources'], 'type': 'string', 'title': 'VerificationStatus'}}, 'title': 'EvidenceEnvelope', 'required': ['status', 'subject', 'facts', 'evidence', 'conflicts', 'coverage', 'freshness', 'generated_at'], 'properties': {'facts': {'type': 'array', 'items': {'$ref': '#/$defs/Fact'}, 'title': 'Facts'}, 'status': {'$ref': '#/$defs/VerificationStatus'}, 'subject': {'$ref': '#/$defs/Subject'}, 'coverage': {'$ref': '#/$defs/Coverage'}, 'evidence': {'type': 'array', 'items': {'$ref': '#/$defs/EvidenceSource'}, 'title': 'Evidence'}, 'conflicts': {'type': 'array', 'items': {'$ref': '#/$defs/Conflict'}, 'title': 'Conflicts'}, 'freshness': {'$ref': '#/$defs/Freshness'}, 'receipt_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Receipt Id', 'default': None}, 'generated_at': {'type': 'string', 'title': 'Generated At', 'format': 'date-time'}, 'schema_version': {'type': 'string', 'title': 'Schema Version', 'default': '1.2'}, 'state_fingerprint': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'State Fingerprint', 'default': None}}}
verify_french_company
[Deprecated] French Company Lookup
Deprecated: use factrail_verify instead. Use when an older integration still expects the legacy flat French company lookup by SIREN/SIRET; kept callable for compatibility only.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['identifier'], 'properties': {'identifier': {'type': 'string', 'description': 'A 9-digit SIREN or 14-digit SIRET.'}}}
Changed
analyze_company
Oct. 1, 2026, 2:42 a.m.
Changed
assess_import
Oct. 1, 2026, 2:42 a.m.
Changed
verify_french_company
Oct. 1, 2026, 2:42 a.m.
Changed
factrail_get_receipt
Oct. 1, 2026, 2:42 a.m.
Changed
factrail_verify
Oct. 1, 2026, 2:42 a.m.
Changed
factrail_assess
Oct. 1, 2026, 2:42 a.m.
Added
factrail_capabilities
Oct. 1, 2026, 2:42 a.m.
Added
analyze_company
Sept. 29, 2026, 2:49 a.m.
Changed
assess_import
Sept. 29, 2026, 2:49 a.m.
Changed
verify_french_company
Sept. 29, 2026, 2:49 a.m.
Added
factrail_get_receipt
Sept. 29, 2026, 2:49 a.m.
Added
factrail_verify
Sept. 29, 2026, 2:49 a.m.
Added
factrail_assess
Sept. 29, 2026, 2:49 a.m.
Added
assess_import
Sept. 27, 2026, 2:40 a.m.
Added
verify_french_company
Sept. 25, 2026, 2:40 a.m.