FactStamp

au.com.alpineaiPublished by alpineai.com.auv0.1.4Updated Oct 29, 2026

Verify a company, figure or citation before you rely on it. Card or crypto; signed receipt.

VerifiedStreamable HTTPWeb executableDeveloper ToolsSecurity & MonitoringBusiness & Commerce

Overview

AI-generated overview

FactStamp is a paid remote verification service that lets an assistant check companies, figures, citations, packages and sanctions against primary registers…

What you can do
  • Check figures, entities, sanctions names, EU VAT numbers and company files against cited registers
  • Verify citations (DOI, arXiv, title) and package versions for existence, retraction, yanking and advisories
  • Check a whole document, a bibliography or a dependency manifest in one call and audit up to 10 company claims
  • Watch a citation, package or portfolio of up to 25 references with daily re-checks for 30 days
  • List covered series and card packages, route a claim to its series, and buy a one-off card package via a Stripe Checkout link
When to use it
Use it when a number, company, citation or dependency is about to go onto a page, deck, contract or decision and you want a dated, cited answer with a receipt you can verify offline. Also useful for onboarding or signing checks on counterparties and for monitoring references over time.
Requirements
A remote MCP endpoint at agents.factstamp.dev; no local runtime, account or API key is declared. Paid calls require payment per call (published prices, card or crypto), and card packages are bought through a Stripe Checkout link that a human completes.
Before you install
Most verification tools are paid per call, and a private zero-knowledge option adds a flat US$25 to the call price. Every settled paid call is written to a public log and daily roots are anchored on the Base blockchain, so by default the door, price and verdict become public. Receipts prove what FactStamp said on a date, not that the register itself is correct, and the service is not a KYB provider.

Installation

In SourceWeft

  1. Open FactStamp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/au.com.alpineai%2Ffactstamp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "factstamp": {
      "type": "http",
      "url": "https://agents.factstamp.dev/mcp"
    }
  }
}

README

FactStamp

Paid verification for agents, and a public record of every paid answer. Each call returns a cited, dated finding with a signed receipt you can verify offline, without asking us. Each settled call is written into a public log, and each day's root is stamped onto the Base blockchain whenever that day held a payment from someone other than us. When a check has to stay confidential there is a private option: a flat US$25 on top of the call price seals the request, so the world can see that a call happened and prove it later, but never learn what was asked. No model sits in the verdict path, and unknown is a first-class answer.

Live service: https://agents.factstamp.dev

What this repository is

The published machine interface of the FactStamp service, mirrored here so it can be read, diffed and cited without a wallet. Each row names the live route the copy came from, so any file here can be checked against the service in one request:

FileWhat it isLive source
openapi.jsonThe OpenAPI 3.1 description of every route.https://agents.factstamp.dev/openapi.json
llms.txtThe plain-language map of the service: what each tool costs, what it returns, what it refuses to claim.https://agents.factstamp.dev/llms.txt
coverage.jsonWhich registers are read, per jurisdiction, section by section, with the price of each door.https://agents.factstamp.dev/coverage.json
server.jsonThe MCP registry manifest — the entry submitted to the official registry, not a route the service serves.https://agents.factstamp.dev/.well-known/mcp.json (the live descriptor)

These are dated snapshots, not a live feed. Coverage and prices move as registers change, so a copy here can lag the service. When the two disagree, the live route wins — fetch it and believe that, not this. The files exist so a person or an agent without a wallet can read the interface, and so a reader can cite exactly what was published on a given day.

The service's private source is not published here.

Routes

RoutePurposeAccess
/mcpMCP endpoint — the tool surface agents call.—
/healthService status: name, network, judge and registry versions.open
/openapi.jsonMachine description of every route.open
/llms.txtThe service explained for readers.open
/coverage.jsonPer-jurisdiction coverage and prices.open
/samplesExample answers, so you can see the shape before paying.open
/ledger/rootThe public record: today's root, the last 30 daily roots, and each day's verdict.open
/ledger/zero-knowledgeThe private-request option: what it is, what it publishes, what it costs.open

Paid routes include /citation, /package, /check, /entity, /entity-file, /bulk, /document, /watch, /watch/portfolio, and /verify for receipt checking. Prices are published, per call, in the files above rather than in prose here.

Published prices at the time of writing

Taken from /health and /llms.txt as served:

  • figure door — US$0.05
  • entity door — US$0.10 to US$0.25, set by the depth of the country you ask about: US$0.10 for a country publishing 1–4 verifiable items, US$0.15 for 5–6, US$0.20 for 7–9, US$0.25 for Australia's fifteen. The quote is shown in the payment challenge, before any money moves, and a country whose register cannot answer today is not sold at all — it is refused with no price rather than charged for an "I don't know".
  • entity file — US$0.438119 (33p in the UK, at the dated rate carried on the answer and the receipt)
  • citation — US$0.02, package lookup — US$0.02
  • standing work: watch US$0.50, whole document in one call US$0.25, bulk at a flat US$0.12
  • company packages: US$2.00 and US$10.00, one-time, from the human page at /company

If a number here ever disagrees with llms.txt or openapi.json as served, the served file wins.

Receipts

Every paid answer carries a receipt signed with Ed25519 over the exact findings and the file's hash, so a third party can verify it offline against the published issuer and key document — no call back to us, and no trust in our uptime. The key document at /.well-known/factstamp-issuer.json states exactly which bytes the key identifier is derived from and carries a worked example, so the derivation can be reproduced in any hash tool. A receipt proves that FactStamp said this, on this date. It does not prove that the register itself is right, and nothing in this service claims it does.

The public record: the ledger, and what is stamped on Base

Every settled paid call, over HTTP and over MCP alike, appends one entry to a public log. The log is an RFC 6962 Merkle tree; each UTC day's log reduces to a single root, published at /ledger/root along with the last thirty days.

A day's root is written to the Base blockchain — one small data-only transaction, magic 0x46535401 followed by the 32-byte root — only when that day held at least one settlement paid by someone other than us. Our own test payments never anchor a day. The rule exists so that an anchor means something: a day is stamped because a stranger paid, not because we were busy.

Days already written (verifiable on Base, chain id 8453):

DayTransaction
2026-10-230x3bd942ae61c053aa7218ebfe44c25db2d9726412a67ec75073267cfb376d38f3
2026-10-250xa80b18f7d829fe535d86a700daa98f7f69f183877f158f1f0b2094dd2a94138f

A day that held no outside payment is published with the verdict that says so, rather than being quietly left blank. The honest limit: an anchor proves the root was committed publicly on the day the transaction landed, not on the day of the payment — the payment itself is already a public record, because it is a transfer on the same chain. The anchor adds our side of the story: that the answers we gave were fixed before anyone asked to see them.

Private requests: the sealed-entry option

By default a paid call's entry is published in full — the door, the price, the verdict, and the fact that the call happened. For a caller who needs the call itself to stay confidential there is a zero_knowledge option, declared on the request.

  • Price: US$25.00 in addition to the call's own price. A US$0.10 entity check declared private costs US$25.10. The payment challenge quotes the total before anything is paid.
  • What is published: an entry_id, the day, the price, the scheme (salted_commitment_v1) and the network. Nothing else.
  • What is sealed: the question, the answer and the verdict. The entry is committed to with a salted hash, so its existence and its position in the log are public while its contents are not.
  • What that buys: you can prove later that a specific call happened on a specific day — by revealing the salt to whoever needs it — without ever having published what you asked.

The private option is documented at /ledger/zero-knowledge, with its own root at /ledger/zero-knowledge/root and its entries at /ledger/zero-knowledge/entry/{entry_id}. It is an option on the paid doors, not a separate service.

What this service is not

  • Not a KYB provider, and not a substitute for one. It does not perform customer due diligence on anyone's behalf.
  • Not complete by assertion. Any register we did not consult is named on the answer as not consulted. A register we could not read returns unknown, never not found.
  • Not a fetcher of records you can already get at no cost. You are paying for the citation, the check and the receipt, not for the register's own data.

Issues

Corrections about a claim we make are welcome as issues here. If we have said something about a company, a number or a register that is wrong, that is the fastest way to tell us.

Source: README.md at commit 7c450bc

Tools

18

list_series

List what this engine covers

Included. What this engine covers, the publisher and as-of date behind each series, and the no-guess rule.

Takes no parameters.

route_claim

Route a claim to a series (no verdict)

Included. Shows which series a claim would be routed to, the value and date extracted, and the signals behind the score. Returns NO verdict — pay for check_figure when you want one.

Parametersclaimrequired

list_card_packages

List the one-off card packages

Included. The one-off card packages as one machine-readable catalogue: the 11 products and their 13 prices in Australian dollars, the unit one payment buys for each SKU, what the package returns, and where the input is sent. One payment each, nothing metered, nothing subscribed. The per-call doors stay open beside them.

Takes no parameters.

buy_card_package

Open a card package payment link

Included. Opens a Stripe Checkout Session for one card package and returns its payment link and its session id. This tool charges nothing and produces no artefact: on the card rail the thing that taps is a human. The package's work runs only at its redeem path, after Stripe's own record says that session is paid.

Parametersskurequired

check_figure

Check a figure claim

Submit the dated figure you are about to act on. Returns verified, stale, contradicted or unknown, cited to the publisher's own series with its as-of date. Relevant wherever a number is going onto a page, deck or decision. Not advice. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersclaimrequiredseries_id

check_entity

Verify a legal entity

Verify a legal entity: does this company exist, under which identifier and jurisdiction, and is its registration current? Cited to open primary registers (the GLEIF LEI index and US SEC EDGAR). Returns found, ambiguous, not_found or unknown; a near name match is never reported as a match. Not advice, not a credit check, not a sanction screen. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersqueryrequiredjurisdiction

check_entity_file

The entity file: everything we hold about one company

The entity file: ONE paid answer holding everything we hold about one company: the whole picture in ONE call rather than four separate facts stitched together, at the point of signing, onboarding, paying or acquiring a counterparty. It holds identity and standing, the registered office, SIC activity and previous names, the filing position, a sanctions screen across our six lists, and the ownership the registers publish (the persons with significant control where a register publishes them, and the declared parent relationships where a company has an LEI, with beneficial ownership stated as not public in nearly every country we cover) — each cited to the register it came from with its retrieval time — plus ONE coverage block naming every register consulted and every one NOT consulted. Returns found, ambiguous, not_found or unknown for the company itself; a register that was not read is named as not read, never guessed. 33p UK-facing, settled in USDC at the dated rate. Not advice, not a credit check. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersqueryrequiredjurisdiction

check_entity_file_il

Israel: one company file, 7 sections

Israeli company lookup and company register check by company number (nine digits, with its own check digit) or by registered name, Hebrew or English: identity, corporation type, the register's own status and sub-status, description and stated purpose, incorporation date, government-company flag and restrictions, last annual-report year and the structured registered address, in seven sections from one live read of the Registrar of Companies dataset on data.gov.il, with one signed receipt and one coverage block. No officers, directors, shareholders or beneficial owners as people, and no financial statements: those sit behind the Registrar's paid company extract, which this file does not read. Amended returns and a change registered after the dataset's last refresh may not yet appear. Returns found, ambiguous, not_found or unknown; unknown is a first-class answer and is not charged. Not advice, not a credit check and not a KYB service. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersqueryrequired

check_entity_file_ca

Canada: one company file, 6 sections

Canadian company lookup and Canadian federal corporation register check by nine-digit Business Number (BN) only: corporation number, BN, governing legislation, every registered name with type, current flag and effective date, the register's own status, the registered address, the MINIMUM and MAXIMUM NUMBER of directors as a count rather than the people, and the annual-return history with dated incorporation and other activities, in six sections from one live read of Corporations Canada, with one signed receipt and one coverage block. The public endpoint is keyed by Business Number, so a name alone cannot reach it; provincial and territorial corporations are a different register this file does not read; director and officer names and beneficial owners are not published on this path. Returns found, not_found or unknown; unknown is a first-class answer and is not charged. Not advice, not a credit check and not a KYB service. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersqueryrequired

check_sanctions

Screen a name against sanctions lists

Sanctions screening of a name, for whether a person or company is on a sanctions list — and which one. Reads OFAC SDN, the UN consolidated list, the EU Financial Sanctions File and the UK Sanctions List, and returns listed, mismatch, not_found or unknown. The answer names the lists that were consulted with each one's retrieval date (and the UK list's own report date); a list that was not consulted is named as not consulted, and unknown is the answer when we cannot tell. A near name is never reported as the same party, and a listed verdict stands even when another list was not consulted. Not advice, not a legal determination. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parameterskindnamerequiredcountry

check_vat

Check an EU VAT number

An EU VAT number check — VAT validity, and the VAT registration behind it. Reads the official VIES service (European Commission), keyless. Returns valid, invalid or unknown — an outage is NEVER reported as invalid — with the member state, the register's own request date, and the trader identity only where that member state discloses it. Some member states disclose nothing; the answer says so rather than showing an empty string. GB is out of scope after Brexit (XI, Northern Ireland, is covered). Not tax advice, not a credit check. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersvat_numberrequiredcountry_coderequired

verify_citation

Verify a citation

Says whether a citation can be repeated. Submit a DOI, an arXiv ID or a paper title: returns whether it exists, what it is (title, authors, year, container) and whether it has been retracted, cited to Crossref and arXiv. Optionally send what your document claims (title, authors, year, journal) and every field is compared one by one — a disagreement is reported as mismatch, never as verified. A near title match is never reported as verified; a title that is absent from both returns not_found. Not advice. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersqueryrequiredclaimed_yearclaimed_titleclaimed_authorsclaimed_journal

verify_package

Verify a package version

Reports on a dependency at the point of installation. Submit a package and version plus its ecosystem: returns whether that exact version exists, whether it is yanked or deprecated, and every advisory OSV lists against it. An invented version returns not_found with the real versions nearest to it, and an invented name returns the published names that look like it — which is the point, because that is how slopsquatting gets installed. Not a security audit. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parameterspackagerequiredecosystem

watch_add

Watch a citation or package

Watch ONE citation or ONE package version instead of checking it once. Send kind ('citation' or 'package') and the subject (a DOI, an arXiv ID or a title; or npm:[email protected]). The first check is answered immediately and signed, then re-checked daily for 30 days; every real change (a retraction, a new advisory, a yanked version) is recorded with its own signed receipt. Returns a read URL and a token shown once; optionally send an https webhook and each change is POSTed to it. For a whole list of references under one purchase use watch_portfolio; for a one-off answer that does not need watching, use verify_citation or verify_package. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parameterskindrequiredsubjectrequiredwebhook

watch_portfolio

Watch a list of references

Watch a whole list instead of one reference at a time: up to 25 citations or package versions re-checked every day for 30 days under one token. US$5 a portfolio — 20 cents a reference, under a cent a check — and the first check on every reference is answered and signed immediately. Each real change carries its own signed receipt, and nothing is sent when nothing changed. ONE purchase covers the whole list: for a single subject on its own, use watch_add. Returns a read URL and a token shown once. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersitemsrequiredwebhook

verify_bulk

Check a whole list

Check a whole list in one call: a bibliography or a dependency manifest. Send items[] of {tool, input} or the citations[]/packages[] shorthand. Up to 12 items at a flat US$0.12 on this door; longer lists pay 0.016667 an item on the pack-funded HTTP door (POST /bulk, up to 25 items). Every item is answered by the same door that answers a single call, so the verdicts cannot disagree. This door takes a LIST of references or package versions, not prose: to check the claims inside a document, use check_document, and to check one reference use verify_citation or verify_package. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersitemspackagescitations

check_document

Check a whole document

A whole document in one call: the claims that can be verified against a primary source, each answered by the door that owns it with its own signed receipt, plus one receipt over the document. Extraction is mechanical, so the claim list and the count are reproducible from your document alone — nothing is inferred. This rail answers the first 5 claims for a flat US$0.25 (5 cents a claim); a better-funded document goes to the pack-funded HTTP door (POST /document, up to 25 claims at the same 5 cents a claim), whose included preview lists the claims and the price before anything is charged — use it first if you are unsure the document holds anything checkable. This door reads PROSE: to check a bare list of references or package versions, use verify_bulk, and a single claim belongs to check_figure, check_entity, verify_citation or verify_package. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersdocumentrequired

audit_claims

Audit claims against the registers

Audit what an agent believes about companies. Send up to 10 claims ({subject:{identifier|name|jurisdiction}, field, value}) and get, claim by claim: supported (the register says this), contradicted (it says something else, shown), stale (the register records it as FORMER, with the date it changed) or not_checkable (we could not check it, and why). Every verdict carries the register's own date and a citation, and the whole batch gets ONE receipt. field is a name from the published vocabulary (legal_name, previous_name, identifier, status, legal_form, registration_date, dissolution_date, registered_address, activity_code), never open text: a field outside it is not_checkable, not a guess. US$0.20 on this rail for up to 10 claims; longer audits go to POST /audit, which prices the body at US$0.02 a claim with a US$0.20 floor. Comes with an Ed25519-signed receipt covering the question, the verdict, the sources and the time, checkable offline against the published key at /.well-known/factstamp-issuer.json — so the check itself can be audited later by someone who was not here.

Parametersclaimsrequired

Version history

5
  1. v0.1.4LatestOct 29, 2026
  2. v0.1.3Oct 10, 2026
  3. v0.1.2Oct 6, 2026
  4. v0.1.1Oct 5, 2026
  5. v0.1.0Sep 29, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.