.it — IntentText · open format · trust built inIntentText (.it) is an open format for business documents — contracts, invoices, tenders, reports. The same file is a human-readable document, a queryable database, an enterprise PDF, and a tamper-evident, signable, certifiable record anyone can verify offline. No platform, no account, no lock-in.
$ npm install -g @dotit/core| Description | Qty | Rate | Amount |
|---|---|---|---|
| Strategy consulting — May 2026 | 40 | 150.00 | 6,000.00 |
| Systems integration | 12 | 175.00 | 2,100.00 |
| Compliance review | 1 | 405.00 | 405.00 |
Every line is one intent: keyword: content | prop: value. The source on the left is the single artifact — the invoice on the right is dotit invoice.it --html --theme corporate.
page: | size: A4 | margin: 20mmheader: Horizon Consultingfooter: INV-2026-042 · Page {{page}} of {{pages}}title: Invoice INV-2026-042 | end: 2026-06-01summary: Horizon Consulting → Acme Corpmeta: | theme: corporate | status: Unpaidsection: Bill Tocontact: Acme Corp | email: accounts@acme.com | vat: VAT-300214section: Line Items| Description | Qty | Unit | Total || Consulting — May 2026 | 40 | 150.00 | 6,000.00 || Systems integration | 12 | 175.00 | 2,100.00 |metric: Subtotal | value: 8,100.00 USDmetric: Tax (5%) | value: 405.00 USDmetric: Total Due | value: [8,505.00 USD]{ weight: bold }deadline: Payment due | date: 2026-06-30 | consequence: 2% monthly late feesign: Layla Hassan | role: Finance Director | at: 2026-06-01T09:30:00Zfreeze: | status: locked
Horizon Consulting → Acme Corp
| Description | Qty | Unit | Total |
|---|---|---|---|
| Consulting — May 2026 | 40 | 150.00 | 6,000.00 |
| Systems integration | 12 | 175.00 | 2,100.00 |
end:Inline styled spans — [text]{…}Running header / footer with page countersTyped blocks — metric:, deadline:, contact:Not translated — native. Write the keywords themselves in Arabic: عنوان: قسم: جهة: مهلة: توقيع:. The document below is a complete, sealable services contract.
عنوان: عقد خدمات استشاريةملخص: بين شركة الأفق للاستشارات ومؤسسة النور التجاريةبيانات: | التاريخ: 2026-06-01 | الحالة: ساريقسم: الأطرافجهة: شركة الأفق للاستشارات | البريد: info@alufuq.qa | السجل: CR-10442جهة: مؤسسة النور التجارية | البريد: contact@alnoor.qa | السجل: CR-22871قسم: نطاق العملنص: يقدّم الطرف الأول خدمات استشارية إدارية خلال الربع الثالث من عام 2026.مؤشر: قيمة العقد | value: 45,000 ر.قمهلة: سداد الدفعة الأولى | date: 2026-07-15 | consequence: غرامة تأخير 2%قسم: الجدول الزمنيأعمدة: المرحلة | التسليم | الموعدصف: الأولى | دراسة الوضع الراهن | 2026-07-01صف: الثانية | التقرير النهائي | 2026-09-30اعتماد: روجع من الإدارة القانونية | by: سارة المنصوري | role: مستشارة قانونيةتوقيع: أحمد الجابر | role: المدير التنفيذي | at: 2026-06-01T10:00:00Zتجميد: | status: locked
بين شركة الأفق للاستشارات ومؤسسة النور التجارية
يقدّم الطرف الأول خدمات استشارية إدارية خلال الربع الثالث من عام 2026.
| المرحلة | التسليم | الموعد |
|---|---|---|
| الأولى | دراسة الوضع الراهن | 2026-07-01 |
| الثانية | التقرير النهائي | 2026-09-30 |
--type deadline finds مهلة: tooThe page is part of the document. Paper size, margins, running headers and footers, watermarks, and house typography are all declared in the same .it file — no CSS, no Word template drift.
Word-like pages at editor.uts.qa — what you see on the canvas is what prints.
header: / footer: render in the print margins with {{page}} / {{pages}} resolved per page. watermark: DRAFT overlays every page.
corporate, legal, editorial, technical, minimal, warm, dark, print — plus leading:, space-before:, space-after: per block or document-wide via style: rules.
Browser printing needs zero dependencies. For invoicing pipelines and archives, @dotit/pdf merges, seals, and returns real PDF bytes in one call.
Horizon Consulting → Acme Corp
| Description | Qty | Unit | Total |
|---|---|---|---|
| Consulting — May 2026 | 40 | 150.00 | 6,000.00 |
| Systems integration | 12 | 175.00 | 2,100.00 |
dotit invoice.it --print --theme corporatepage: | size: A4 | margin: 20mmheader: ACME Holdings — Confidentialfooter: Page {{page}} of {{pages}}watermark: DRAFT | opacity: 0.1style: text | leading: 1.6 | space-after: 12pxstyle: section | color: #1e3a5f | weight: 600
import { issuePDF } from "@dotit/pdf";
const { source, hash, pdf } = await issuePDF(template, data, {
signer: "Layla Hassan",
role: "Finance Director",
theme: "corporate",
});
// source — the sealed .it: the queryable, verifiable record
// pdf — real PDF bytes, ready to email or archiveA bank, a court, or a procurement office needs to know three things about a document: that it hasn't changed, who stands behind it, and that they are a real, vetted entity. IntentText answers all three — and anyone can check the answers offline, with no app and no account.
Has anything changed?
seal: freezes the content and stamps it with a SHA-256 hash. Change a single character — a date, a number, a payment term — and the hash no longer matches. Tampering becomes visible instantly, to anyone, forever.
Who signed it?
sign: is a real Ed25519 cryptographic signature, not a typed name. It proves the document was signed by the holder of a specific private key, and it verifies offline against the public key embedded in the file.
@dotit/signIs the signer a vetted entity?
certify: binds the signature to a KYC-verified legal entity through a UTS certification. An offline root key vouches for an online issuing key; that chain travels inside the document and verifies against the root alone.
That is what makes .it different. The very same file you read on screen is the file a system queries, the file that prints to PDF, and the tamper-evident record a third party verifies — with no conversion, no export step, and no platform in the middle.
approve: lines are part of what the hash covers. The append-only audit log below the history: boundary never disturbs the seal.
A sealed document changes only through amendment: — was: / now: records the change while the original seal stays intact and provable.
No service to call, no key to license. Open format, open math — the proof is in the file and stays there.
// 1 · INTEGRITY — freeze the content with a SHA-256 sealdotit seal contract.it --signer "Ahmed Al-Jaber" --role "CEO"✅ Sealed sha256:9f1c2ab87d… frozen 2026-06-12T10:02Z// 2 · IDENTITY — add a real Ed25519 signature (proves WHO)dotit sign contract.it --key ahmed.key✅ Signed key ed25519:6f2a… sig 30c4…// 3 · AUTHORITY — bind a KYC-verified entity via UTS certifydotit verify contract.it --root uts-root.pub✅ Intact · signature valid · certified — offlineSigner: Ahmed Al-Jaber (CEO)Certified: Horizon Consulting · UTS-verified entityChain: root → issuing key → document ✅// a payment term is edited after sealing…dotit verify contract.it❌ Modified since sealingExpected: sha256:9f1c2ab87d…Current: sha256:3e8d41c09a…
A hash is a string of hex — true, but invisible. The Ambient Seal turns that hash into a mark on the page: a pattern drawn deterministically from the document's SHA-256. Same document, identical seal — every time. Change one character and the seal becomes completely different. Trust stops being something you check and becomes something you recognise at a glance.
@dotit/core from the document's SHA-256 hash. Same doc → same seal; any change → a different one. Colour states the tier: gray draft, blue signed, green certified, gold root-certified. The slate dashed seal is a template — a blueprint, not a record: it sits outside the trust tiers (merge it with data to produce a signable document).

You don't have to write .it by hand. A Word-like editor and a native desktop app give business users the familiar surface — the trust model rides along underneath.
A ribbon, real pages, page sizes from A5 to A1 in portrait or landscape, easy zoom, and a live trust banner. Export to PDF is the on-screen page, byte-for-byte. Open it at editor.uts.qa.
A native cross-platform app (macOS, Windows, Linux) built on Tauri. Open, read, and edit .it files from disk, with an always-visible trust badge showing the integrity, signature, and certification status of the document in front of you.
dotit convert imports Markdown, HTML, Excel (XLSX) and Word (DOCX) — and exports back to XLSX and DOCX. Your spreadsheets and contracts become queryable, sealable .it, and ship back out unchanged.
// bring existing files in — Markdown, HTML, Excel, Worddotit convert budget.xlsx budget.it✅ budget.it — 3 sheets → typed tablesdotit convert proposal.docx proposal.it✅ proposal.it — headings, lists, tables preserved// and send them back out — round-trips both waysdotit convert report.it report.xlsxdotit convert report.it report.docx✅ report.xlsx · report.docx
Every block is typed and every property is queryable — so a directory of contracts answers questions without a database, an importer, or a server.
Filter by type, author, status, section, or content; output as table, JSON, or CSV. Date ranges work because dates are ISO 8601.
Each folder owns a shallow .it-index that refreshes lazily on query. The .it files stay the source of truth — greppable and git-diffable.
queryBlocks(doc, "type:task owner:Ahmed sort:due:asc limit:5") — one function, no schema migration, works offline.
dotit query ./contracts --type deadlineFILE TYPE CONTENT PROPERTIES-------------- -------- ------------------ --------------------------acme-2026.it deadline Payment due date: 2026-06-30 | consequence: 2% monthly late feealnoor-svc.it deadline سداد الدفعة الأولى date: 2026-07-15 | consequence: غرامة تأخير 2%orbit-nda.it deadline Renewal notice date: 2026-09-01// build per-folder indexes once — queries self-heal them afterwardsdotit index ./contracts --recursive// or ask in natural languagedotit ask ./contracts "which contracts renew this quarter?"
IntentText is designed to be authored by models as much as by people — deterministic grammar, no layout ambiguity, and trust operations an agent can run.
The complete machine reference: line grammar, all 41 canonical keywords, styling layers, templates and merge, the trust model, and generation rules. Point any LLM at it and it writes valid .it — documents, templates, and workflows — immediately.
{
"mcpServers": {
"intenttext": {
"command": "npx",
"args": ["-y", "-p", "@dotit/mcp", "intenttext-mcp"]
}
}
}And agents don't just read .it — they run on it: step:, decision:, gate:, trigger:, result:, policy:, audit: define executable workflows with human checkpoints. Read the agent guide →
A zero-dependency core, opt-in companions, and tooling for every surface you work on.
dotit CLI. Zero dependencies.@dotit/pdfServer-side PDF bytes: merge → seal → render in one issuePDF() call.@dotit/signEd25519 signatures and UTS certification — identity and authority on top of the seal.@dotit/mcpMCP server with 17 tools — parse, render, query, seal, sign, certify, verify from any AI agent.Desktop appNative Tauri app for macOS, Windows and Linux — double-click a .it file, edit, and watch the trust badge.VS Code extensionSyntax highlighting from the same keyword registry the parser uses.EditorWord-like WYSIWYG pages, template mode, trust chips, print preview — in the browser.GitHubThe spec, the source, the issues. The format is open — the file is yours.Author → merge → print → sign → seal → query → verify. Open format, no lock-in.
$ npm install -g @dotit/core