FACTRAIL

io.github.baronsigma由 GitHub 账号 baronsigma 发布v2.4.1更新于 Oct 25, 2026

Evidence infrastructure for agents: source-backed company verification and beta import assessment.

已验证Streamable HTTP可网页运行金融商业与电商

概览

AI 生成的概览

FACTRAIL 是一个远程证据服务,让助手按 SIREN/SIRET 核验法国公司,并进行测试阶段的欧盟进口评估,返回带来源、时效与回执的结构化结果。

可以做什么
先查询能力、支持对象、数据来源与限制(factrail_capabilities)。按 SIREN/SIRET 核验法国公司的状态、法定名称、总部等事实,并附来源、时效、冲突与覆盖情况(factrail_verify)。进行测试阶段的欧盟进口评估,涉及关税归类、税费与相关证据(factrail_assess)。按回执 ID 重新获取此前结果并校验内容完整性(factrail_get_receipt)。为旧集成保留的兼容工具仍可调用,但已弃用。
适用场景
当工作流提供法国 SIREN 或 SIRET,且需要可追溯地回答公司是否存在、是否存续、法定名称或总部时使用。也适合明确标注为暂定的进口与关税初步探索。不适用于通用网页搜索、新闻事实核查、非法国公司登记、制裁审查或具有约束力的海关裁定。
运行要求
需要远程 Streamable HTTP 端点;托管服务未声明需要安装包或 API 密钥。本地运行需 Python 3.11 或更高版本,实时查询法国公司需设置 INSEE_API_KEY,可选 FACTRAIL_CACHE_PATH 以持久保存回执。需要能访问该端点的网络。
安装前请注意
结果是证据而非事实本身:回执只证明内容完整性,不证明陈述为真。进口评估为测试阶段,关税与增值税数值为人工整理或暂定,未安装官方 TARIC 快照,结果不构成有约束力的海关裁定。调用方输入不会被自动核验,未解决字段应作为未知传递。FACTRAIL 本身不构成法律上充分的 KYC/KYB 合规系统。README 提到另有按次付费的 Apify 渠道。

安装

在 SourceWeft 中

  1. 打开 控制台中的 FACTRAIL,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.baronsigma%2Ffactrail/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "factrail": {
      "type": "http",
      "url": "https://mcp.factrail.online/mcp"
    }
  }
}

README

FACTRAIL

Evidence infrastructure for AI agents.

FACTRAIL gives agents structured, source-backed real-world evidence with provenance, freshness, conflicts, support levels, coverage, unresolved dependencies, and reusable receipts. It is a public beta: capabilities are defined and inspectable, and unsupported scope or failed sources are represented explicitly.

FACTRAIL is a Python Model Context Protocol server. This repository contains package version 2.4.1, the Evidence Contract, tests, operator tooling, and the static site. Hosted deployments may run a different release; inspect the live tools/list and factrail_capabilities results before relying on deployed capabilities.

Connect via MCP

Endpoint: https://mcp.factrail.online/mcp (Streamable HTTP)

json
{  "mcpServers": {    "factrail": {      "url": "https://mcp.factrail.online/mcp"    }  }}

Client configuration varies. Website: factrail.online · Health: healthz.

Why FACTRAIL

Agents should not have to choose between blindly trusting model output and rebuilding source verification from scratch. FACTRAIL provides an evidence layer between agents and real-world data sources. Instead of returning only an answer, it can return what was established, where it came from, how current it is, what remains unresolved, and a receipt another agent can inspect later.

The principle is simple: unknown is better than invented. Caller input is not automatically verified. Derived values inherit the quality of their dependencies. Conflicts, stale data, and source failures remain visible. A capability exposes its limits programmatically.

When an agent should use FACTRAIL

  • Use it when a user or workflow gives a French SIREN/SIRET, or asks whether a French company exists, is active, or what its legal name or head office is, and the answer must be traceable.
  • Use factrail_capabilities first to learn current coverage. Use factrail_get_receipt to re-check a previous result.
  • Don't use it for general web search, news or claim fact-checking, non-French company registries, sanctions/beneficial-ownership checks, or binding customs rulings (see Current limitations).
  • When the envelope lists unresolved fields, pass them on as unknown. Do not fill them from model memory.

Core MCP tools

New integrations should use the generic primitives:

ToolPurpose
factrail_capabilitiesDiscover available capability IDs, operations, versions, inputs, fields, sources, dynamic source state, and limitations. Call this first.
factrail_verifyVerify structured facts for a supported subject. Currently supports company_fr.
factrail_assessAssess a structured real-world situation. Currently supports import (Beta).
factrail_get_receiptRetrieve a prior EvidenceEnvelope by receipt ID and check content integrity.

Compatibility tools remain available: verify_french_company, assess_import, and experimental/compatibility-only analyze_company. New clients should prefer the generic tools. analyze_company does not synthesize unavailable finance, credit, rating, risk, recommendation, executive-count, or confidence values; unavailable fields remain null/unavailable.

Available today: French company verification

The company_fr capability is FACTRAIL's strongest current resolver. It verifies supported French company and establishment information by SIREN or SIRET using INSEE / Sirene and BODACC records. Depending on source records, fields can include identifiers, legal and trade names, status, legal form, NAF/activity code, head office, creation/cessation dates, diffusion status, and BODACC events. No field is guaranteed to exist for every entity.

For current company status and current legal name, INSEE/Sirene current registry data takes precedence over BODACC publication evidence. Lower-priority evidence is retained rather than silently discarded. This can support supplier verification, vendor onboarding, procurement, CRM enrichment, marketplace onboarding, and company/KYB-support workflows. FACTRAIL alone is not a legally sufficient KYC/KYB compliance system.

Example input to factrail_verify (replace the placeholder with an identifier you are authorized to check):

json
{  "subject_type": "company_fr",  "identifier": "<9-digit SIREN or 14-digit SIRET>",  "fields": ["status", "legal_name", "head_office"]}

The actual source response depends on the requested identifier, source availability, and record coverage. FACTRAIL does not fabricate a sample result here.

Beta: trade and import assessment

factrail_assess currently supports assessment_type="import". It accepts structured concepts such as origin, destination, product description, classification or known HS/customs code, goods value, quantity, customs/VAT references, compliance inputs, and freight/insurance values. The result separates caller input, source evidence, classification candidates, and deterministic calculations. Coverage can be partial or provisional.

There is no authoritative EU Member-State VAT integration or complete authoritative landed-cost chain. Curated VAT and tariff values stay marked curated/provisional; derived calculations inherit dependency quality (derived_provisional when their inputs are provisional). Trade assessment is not a binding customs ruling and classification candidates are not definitive customs classification.

Official EU TARIC status

FACTRAIL has infrastructure for validated official European Commission TARIC snapshot ingestion: offline package doctor, strict/compatible parsing, acceptance reporting, hashes/fingerprints, semantic checks, normalized SQLite index, atomic activation, and last-good/stale handling. No genuine Commission TARIC snapshot is currently installed (not_installed). FACTRAIL does not currently serve authoritative live TARIC tariff coverage.

Access2Markets is secondary/supporting evidence, never authoritative TARIC. Curated FACTRAIL tariff references are provisional. No stable official automatic-download endpoint was confirmed, so automatic fetch is unavailable at this time. Operator-supplied official files can be diagnosed and ingested offline; monthly snapshot ingestion is supported, while daily-delta application is deferred.

For operator procedures see TARIC snapshot acceptance and operations and the distribution discovery notes. Detailed tariff calculation is outside the current TARIC snapshot foundation.

Evidence Contract

The canonical EvidenceEnvelope includes schema_version, status, subject, facts, evidence sources, conflicts, coverage, freshness, receipt_id, and generated_at. The current schema is EvidenceEnvelope 1.2; it is independent of the package version.

  • Status can be supported, contradicted, insufficient_evidence, stale, or conflicting_sources; results are not reduced to a boolean.
  • Support levels describe evidence quality: authoritative, supported, derived_supported, derived_provisional, curated, and caller_input. Caller input is not externally verified.
  • Coverage distinguishes requested, resolved, and unresolved fields. Missing input, unsupported fields, and unavailable sources are different states.
  • Freshness records observation times and stale status.
  • Conflicts preserve competing source assertions; field-specific authority policy may resolve a conflict without deleting its lower-priority evidence.
  • Source outcomes distinguish success, partial response, source error/unavailable, source not integrated, disabled lookup, and not required.

A deterministic calculation does not become authoritative merely because its arithmetic is deterministic. Authoritative inputs may support a derived_supported result; provisional inputs produce derived_provisional results.

Receipts

A receipt ID (fr_…) is content-addressed using deterministic canonical hashing. On retrieval, FACTRAIL recomputes the hash and rejects altered content with an integrity error. Supported historical canonicalization remains available. Receipts make an evidence observation reusable and traceable; they provide content integrity, not a digital signature, blockchain record, immutable global ledger entry, or proof that a statement is universally true. The state_fingerprint identifies substantive state across observations. See Evidence Core design.

Sources and trust principles

FACTRAIL's source hierarchy is explicit: official records may be authoritative for defined fields, secondary sources remain secondary, curated references remain curated, and caller input remains input. Source identity, retrieval time, content hashes where available, support level, and source status accompany evidence. Historical publication evidence does not automatically determine current state.

FACTRAIL follows these principles:

  1. Never manufacture evidence; unknown is better than invented.
  2. Caller input is not automatically verified.
  3. Derived values inherit the support quality of their dependencies.
  4. Conflicting sources remain visible.
  5. Source failures and stale evidence are explicit.
  6. Secondary evidence is not silently promoted to authoritative.
  7. Receipts protect content integrity, not philosophical truth.
  8. Capability limits are exposed programmatically.

Quick start: discover, verify, retrieve

Use factrail_capabilities first with {}. The live result identifies currently supported capability IDs and dynamic source state. Then a company verification call uses:

json
{  "subject_type": "company_fr",  "identifier": "<SIREN or SIRET>",  "fields": ["status", "legal_name"]}

To retrieve the result later, pass its actual receipt_id:

json
{"receipt_id":"<receipt_id returned by FACTRAIL>"}

MCP tool calls wrap these argument objects in their normal client protocol. See request examples for generic verify, receipt, and import inputs. Examples use placeholders and do not assert fabricated output.

Run locally

Requires Python 3.11 or newer.

bash
python3 -m venv .venv. .venv/bin/activatepip install -e '.[dev]'cp .env.example .env# Set INSEE_API_KEY in .env for live French company lookups.python3 -m factrail.mcp_http_server

HTTP defaults to port 8765. Use FACTRAIL_HOST and FACTRAIL_PORT to change the bind address and port. Local MCP endpoint: POST http://localhost:8765/mcp; health endpoint: /healthz. For stdio clients, run python3 -m factrail.mcp_server.

Get an INSEE key through the INSEE API portal. Default SQLite cache is /tmp/factrail_cache.db; set FACTRAIL_CACHE_PATH to a persistent path for durable receipts. The server includes per-client rate limiting and stale cache fallback for company lookups.

Public HTTP settings

VariableDefaultMeaning
FACTRAIL_ALLOWED_HOSTSlocalhost/loopbackHost allowlist (DNS-rebinding protection, 421 on mismatch).
FACTRAIL_ALLOWED_ORIGINSunsetComma-separated Origin allowlist. Unset: requests carrying an Origin header are rejected (403); Origin-less API clients work. *: any Origin allowed, CORS enabled; Host check stays on.
FACTRAIL_RATE_LIMIT_PER_MIN60Requests per window per client (0 disables). The client is CF-Connecting-IP, then the first X-Forwarded-For entry, trusted only when the direct peer is loopback.
FACTRAIL_RATE_WINDOW_SECONDS60Sliding window length.
FACTRAIL_RATE_BLOCK_AFTER30Rejected requests within one window before a temporary block (0 disables).
FACTRAIL_RATE_BLOCK_SECONDS300Block duration.
FACTRAIL_GATEWAY_USER_AGENTSSmitheryBotCase-insensitive User-Agent substrings identifying MCP gateways (a Smithery CF-Worker header also counts).
FACTRAIL_GATEWAY_RATE_LIMIT_PER_MIN600Requests per window for each gateway bucket.
FACTRAIL_GATEWAY_RATE_BLOCK_AFTER0Block threshold for gateway buckets (0 = never block).
FACTRAIL_GATEWAY_CLIENT_HEADERunsetHeader a gateway uses to forward an end-user id; when present, gateway traffic is keyed per end user.
FACTRAIL_HIDE_LEGACY_TOOLSoffHide deprecated legacy tools from tools/list (they stay callable).

Excess requests receive HTTP 429 with a JSON body and Retry-After. A static server card is served at /.well-known/mcp/server-card.json.

Current limitations

FACTRAIL does not currently provide arbitrary natural-language fact checking, general web search or URL fetching, news verification, broad global company verification, dedicated beneficial ownership/sanctions/EORI resolvers, authoritative installed EU TARIC data, authoritative EU VAT integration, complete authoritative landed-cost results, arbitrary regulatory verification, signed receipts, blockchain receipts, global immutable evidence ledgers, continuous evidence watches, or general-purpose LLM reasoning over unknown claims.

Deployment and development

For operators, see the deployment checklist, TARIC acceptance guide, and distribution notes. Release history: CHANGELOG. The static site is in site/ and needs no build step.

bash
python3 -m pytest -qpython3 -m compileall -q factrail testspython3 -m factrail.evidence.demand --days 7

The offline suite uses mocks and fixtures; live tests follow the project's --live convention and require external access. Demand telemetry stores normalized categories and linkage, not raw IP addresses, full User-Agent strings, request arguments, authorization headers, or full Evidence envelopes. It helps identify requested capabilities and evidence gaps.

The Apify Actor wrapper is a thin distribution/payment channel for the canonical MCP service; it does not change FACTRAIL's source adapters or evidence behavior.

Public discovery surfaces

Related: Fallback agent tools

Fallback agent tools applies the same rule (tools should report what they checked) to a different question: where to get data. Its source_route tool looks for candidate machine-readable routes (API, OpenAPI, bulk download, feed) on a publisher's site within strict request limits, and treats "not found here" as "not found within checked scope", never as proof that no route exists. It is a separate service (x402 pay-per-call beta, currently Base Sepolia testnet only) with no dependency on FACTRAIL.

License

Code and documentation are licensed under Apache License 2.0. Source data remains subject to publisher terms, including INSEE and BODACC open-data licenses.

来源:README.md,提交 3759490

工具

7

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.

输入参数operationcapability

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.

输入参数parameters必填assessment_type必填

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.

输入参数fieldsidentifier必填subject_type必填

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.

输入参数receipt_id必填

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.

输入参数identifier必填

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.

输入参数modelproduct必填currency必填incotermmaterialquantity必填weight_kgdimensionsgoods_value必填freight_costmanufacturerknown_hs_code另有 6 个

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.

输入参数sirencompany_namecountry_code

版本历史

3
  1. v2.4.1最新Sep 29, 2026
  2. v2.4.0Sep 29, 2026
  3. v1.3.3Sep 23, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分