UNIDROIT Principles 2016

io.arxo由 arxo.io 發布官方發布者v0.3.11更新於 Oct 27, 2026

UNIDROIT Principles 2016 as executable rules: closed questions answered with grounds and source text

發布方自己的服務:UN Charter 1945

已驗證Streamable HTTP可網頁執行知識與記憶開發者工具

概覽

AI 產生的概覽

把 UNIDROIT 2016 國際商事契約通則做成可執行規則:助理可檢索形式化規則、提出封閉式法律問題並取得依據與原文,還能發布可驗證的答案。

可以做什麼
  • 檢索與目錄:語意搜尋形式化法律、查看規則包目錄、謂詞規則與原文摘錄
  • 提問與解釋:向規則提出封閉式問題、展開證明鏈、評估論證穩健度、執行案例包
  • 程序與版本:重建程序階段、逐步模擬案件進程、比較不同版本並查詢模型
  • 發布與核驗:擷取、準備、發布與撤銷凍結的答案文件,查看能力矩陣、護照與報告
  • 回報形式化與固定原文之間的落差
適用情境
當你需要關於 UNIDROIT 2016 通則的可追溯答案,而非泛泛的法律解說時適用:確認某條規則需要哪些事實、答案為何「未成立」、程序如何推進,或產生可分享、可撤銷的答案文件。
執行需求
可使用託管的遠端端點,或在本機執行(透過 npx 的 npm 套件,或 Docker Compose),讓資料不離開本機。未宣告任何身分驗證、環境變數或請求標頭。README 說明建置與 CI 皆為離線,相依項目已固定。
安裝前請注意
答案僅涵蓋已形式化的那部分規範,不構成一般法律意見;無法追溯到固定版本的答案不具權威性。發布會產生公開文件並回傳獨立的撤銷密鑰,應視為敏感資訊。報告只是供形式化人員分流的假設,不會改變法律。所固定的出版方文本仍受其各自的複製條款約束。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 UNIDROIT Principles 2016,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.arxo%2Fpicc/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "unidroit-principles-2016": {
      "type": "http",
      "url": "https://mcp.arxo.io/mcp/picc"
    }
  }
}

README

arxo-unidroit-picc

[Smithery]

Pinned canon, executable as it stands: source text with provenance, the model built over it and the scenarios that check its answers. The norms here are data — they are executed by law; this repository carries no rule code of its own.

Contents

PackageVersionScenariosDependencies
unidroit.picc0.1.050
unidroit.picc_formation0.1.041
unidroit.picc_limitation0.1.031
unidroit.picc_non_performance0.1.041
unidroit.picc_obligations0.1.041
unidroit.picc_performance0.1.041
unidroit.picc_validity0.1.041

How it is verified

Every package is built by package.py with the pinned toolchain: compilation, §267 scenarios on both evaluators, replay of saved evaluations and a rebuild from the release itself. A failure of any step stops the build.

sh
python3 tools/toolchain.py download --lock toolchain.lock.json --out /tmp/law-toolspython3 /tmp/law-tools/package.py packages/<name> \    --lawc /tmp/law-tools/law-cli --offline --out /tmp/<name>-release

Dependencies

Dependency bytes are pinned under packages/<name>/deps/ and verified against the contentHash recorded in law.lock: the build and the CI are offline.

Asking these packages

Two ways, the same slice of the canon and the same engine; the difference is whose machine evaluates.

  • Hosted: https://mcp.arxo.io/mcp/picc — requests are evaluated on Arxo infrastructure.
  • Local: docker compose -f mcp/compose.yml up — nothing leaves the machine.

mcp/pin.json records what either one must answer from: the content hash of the canon profile, the pinned packages, the ABI version of the engine and the availability of the hosted endpoint. An answer that cannot be traced to that pin is not this repository's answer.

Worked cases

Each collection is a case package of its own: the facts, the questions and the answers, with the pinned canon as its dependency. Ask one from its directory with law ask . — nothing is downloaded.

Rights

Code and model: see LICENSE. The pinned texts of the publishers keep their own terms of reproduction, listed per package in NOTICE; those terms are not covered by the code licence.

Maintainer: Rifat Dzhumagulov ([email protected]). Address: https://github.com/arxohq/arxo-unidroit-picc.

來源:README.md,提交 15a8de8

工具

20

law_passport

Release passport

Passport of an exact release: purpose, interface, boundaries, checks and performance. The reports section holds the history of measurements, failures included. Entries are paged by JSON Pointer; next continues the answer.

輸入參數name必填limitoffsetversion必填sectionscontentHash必填

law_answer_capabilities

Lens capabilities

A machine-readable matrix of the Lens producers that are actually installed, of replay/projection checks, profiles, limits and the contract tests that confirm them. declared_only means a schema with no executable witness.

無需輸入參數。

law_capture_answer

Capture a result for a Lens

Run a registered producer and obtain producerControl/0.2 for a later verifiable preparation of a Lens. The producer is chosen only from the shipped registry.

輸入參數request必填producer必填

law_prepare_answer

Prepare a public write-up

At the explicit request of the user, repeat between 1 and 12 earlier law_ask or law_process_run calls (the course of a case, DECISION-0160), compare their replayControl strictly, and prepare a non-public frozen document for 24 hours. The client never supplies the machine answer: the server obtains it only by executing afresh. A divergence in any input, in the law, in a resource, in the server code, in the engine library or in the result rejects the document as a whole.

輸入參數languagequestion必填assistantcalculationsproducerRunsdocumentVersion

law_publish_answer

Publish a write-up

Publish a prepared document. Repeating it with the same preparationId idempotently returns the same URL and the same separate revocation secret.

輸入參數preparationId必填

law_revoke_answer

Revoke a write-up

Revoke a published document using its separate secret. The public id alone grants no control; revocation closes the HTML page, the API and the download.

輸入參數publicId必填revokeSecret必填

law_packages

Catalogue of law

The catalogue of formalised law: instruments, predicates with signatures, the boundaries of coverage. This is where the NAMES of predicates come from — they must never be guessed. But do NOT start from the catalogue when looking for the right instrument: the overview is large, and the title of an instrument rarely matches the words of a question ("Newton's laws of motion" contains no word "physics"). A question in your own words goes to law_search first, which returns addresses; the catalogue is for the exact signature of what you found. With no arguments — the overview: one line per instrument (key, title, legal order, counters of rules, facts, signatures, norms, constants); a whole instrument — package="kz-gpk"; a search over the signatures, labels and constants of every instrument — query="substring". All three modes are PAGED: limit and offset, with the remainder named in the text (`showing a–b of N; k more`) and in structuredContent (total, truncated, next — a ready-made continuation call). The unit of a page is named by pageUnit: the overview and query page over INSTRUMENTS (20 and 20 by default), package=… pages over the SIGNATURES of one instrument (20 by default, 300 at most) — large codes carry thousands. package=… together with catalog=… pages a separate list of the instrument: "questions" — the CATALOGUE OF QUESTIONS (DECISION-0190): which enquiries are provided for (a question in words, a form, a predicate or norms) and what the instrument does NOT answer, with the type of reason; a card is a template of an enquiry, not an answer, and not every instrument has one; "norms" — the NORMS of the instrument (modality §107 and label), "constants" — the CONSTANTS (names of declarations). "task-guides" — TASK GUIDES (DECISION-0414): the order of applying a canon to a document — what to gather, which cards to ask and how to read the answers; a guide answers nothing. catalog="task-guides" is allowed without package too — every guide of the profile; guide=… — the d

輸入參數guidelimitqueryoffsetcatalogpackage

law_ask

Ask the law

Put a question to formalised law. When the answer is "not established" it carries whyNot — the engine's why_not report §185: the candidate rules and the state of every conjunct (satisfied / not satisfied / undetermined); the missing facts are visible there and need not be guessed. BEFORE THE FIRST call obtain the predicate names through law_search (a question in your own words → addresses) or law_packages (the signatures of a known instrument) — an invented name will be rejected. If the tool returned an error or "not established", THAT IS THE ANSWER: pass it to the user and do not substitute general knowledge about the law of some other country. But "I found no suitable instrument" is NOT an answer until law_search has been asked: silence of the catalogue is a property of searching by title, not a conclusion about the corpus. kind='truth' — whether a fact is established (the answer follows §62: established / refuted / contradiction / not established); kind='collect' — enumerate the records; kind='deadline' — compute a time limit on the official calendar; kind='positions' — which DUTIES arose from the facts and what their statuses are (active / fulfilled / violated, §134–§138); kind='why_not' — the why_not report §185 on the same goal, whatever the status of the answer. The answer carries the rules applied, the warnings and the provenance with hashes; truth/collect also carry a signature block (parameter types, the closure of types, constants; DECISION-0139) for presentation. The server does not guess: where a norm is not formalised, the answer is "not established" or an error.

輸入參數argscalcdayskindunitafterfactsproofcutofffocusedpackageversion另有 9 個

law_screen

Population screening

Build a necessary condition — a superset — for the preliminary selection of rows from an external source (DECISION-0120). This is NOT a legal answer and NOT SQL: the result is a typed tree and a manifest of the extensions up to TRUE. Every row that passes must then be computed in full by the engine, with a proof graph, on the same snapshot of the data. The binding is passed as a pinnable object; sourceSchemaContentHash is the actual hash of the source schema and is compared loudly with the pin. Case facts that carry provenance (origin, document, quote, extractor) are supplied to law_ask, not here. The confidence figure is read by the package EvidencePolicy, not by this tool and not by the engine.

輸入參數goal必填binding必填package必填legalTimesourceSchemaContentHash必填

law_rules

Rules of inference

The rules of formalised law put into words: exactly how a predicate is derived (premises, source articles). Call this BEFORE supplying facts to law_ask — the rules say which facts are needed instead of leaving them to be guessed. For large instruments package=… returns a table of contents; the full text comes from predicate=…. The listing by package is paged: limit (20 by default, 500 at most) and offset; the remainder is named in the text (`showing a–b of N; k more`) and in structuredContent (total, truncated, next — a ready-made continuation call).

輸入參數langlimitoffsetpackagepredicate

law_explain

Unfold the proof

Unfold the proof of a law_ask answer into a chain "rule ← premises → conclusion". The compact input: question (the original law_ask arguments, truth/collect), resultHash and codeHash from the provenance of the answer. The server repeats the computation and compares the hashes; if anything changed it refuses explicitly. Alternatively pass the evaluation from law_ask(proof=true). answerResource=fullAnswer.uri explains a stored compact snapshot without recomputing and without the client loading pages; by default only the proofRef chain. nodeId selects one node and all of its premises (up to 24 KB, otherwise an explicit refusal). proofHash refers to the whole graph; scope marks the part selected.

輸入參數nodeIdcodeHashquestionevaluationresultHashanswerResource

law_case_ask

Case package: ask

The ask operation §168.4 (DECISION-0165, DECISION-0399): run a registered case of a case package over its pinned dependencies and return the canonical evaluation document with a proof and a manifest. The question is JSON per query.schema.json (query), an evaluate string (evaluate + queryId), a saved queryId without query, or card + args. A refusal to prepare is an error with an LDC-* code, never an empty answer.

輸入參數argscardcasequerypackage必填queryIdevaluate

law_sources

Official text

Sources: by default short excerpts (view=summary), 5 texts per page, with the address of the full text in fragments[].full. Either package or fragment is required (a StableId from law_search/law_rules). view=full returns exact parts of the text: textRange sets a range of Unicode characters, fragments[].next is the continuation with a contentHash. The hash refers to the WHOLE source, not to the excerpt or the part. textOffset/textLimit require fragment; a continuation requires contentHash. Lists are paged with offset/limit; the answer budget may shrink a page.

輸入參數viewlimitoffsetstatuspackagefragmentlanguagetextLimittextOffsetcontentHash

law_argue

Robustness of a conclusion

How robust a conclusion is: the map of the dispute under the argumentation profile §274 (DECISION-0039). The answer falls into four classes: SKEPTICALLY_ACCEPTED — the conclusion is invulnerable (it survives in the grounded extension); CREDULOUSLY_ACCEPTED — merely defensible (there is a position for it and a position against); REJECTED — it survives nowhere; NO_ARGUMENT — there are no arguments at all. It builds ALL arguments out of the facts and the rules of the instrument (chains that did not fire in ordinary inference included), the rebut/undermine/undercut attacks and the defeats by priority. Predicate names come from law_packages. On large instruments a refusal by cap is possible — narrow facts or raise limits.maxArguments.

輸入參數argsfactslimitspackagelegalTimepredicate必填

law_process

The instrument as a procedure

Which stages the procedure established by an instrument consists of, and whether it carries a structural defect (O-5, DECISION-0052). The stages, the transitions and the condition of every transition are reconstructed from the formalisation rather than retold: what leads from where to where, and under what condition. The check of the graph: unreachable stages, dead transitions, a transition that enters no stage at all. Without package — the list of instruments whose procedure is formalised. A stage with no exit is named but is NOT counted as a defect: whether it is terminal by design cannot be seen from the formalisation.

輸入參數package

law_process_run

The course of a case

How a particular case will run, step by step (O-5, DECISION-0052): a log of {date, attempt?, facts?} is executed frame by frame, and the law of each frame is the law of ITS date. The answer says: which stages have been entered; which attempted transition produced NO legal effect (§164 — "the act was performed but did not take place"); which duties are violated and which time limits are running; what is available next and WHAT EXACTLY is missing for the rest. The names of transitions come from law_process. Stages entered means "was it ever entered", not "where it is now": the core 0.1 does not compute points of the current state.

輸入參數steps必填package必填instance必填legalTimeprobeTimeprocedure

law_editions

Axis of editions

The axis of editions (O-2): what changed in an instrument between two dates of the law — the state of the editions, the dating of the norms and the semantic diff §215 between the D1 projections. The verdict NOT_DATED means "there was nothing to date it by", not "nothing changed". The outcome of a particular question on a date comes from law_ask with legalTime.

輸入參數dateA必填dateB必填package必填

law_query

LawQL query

A deterministic LawQL query over the CLIR of a formalization: a question about the model of the act itself, not about a case. Relations: nodes(id,kind,package,package_name,path), edges(from,to,role), anchors(node,anchor,act,locator,path), labels(node,lang,text,status), fields(node,field,value,value_kind), rules(id,strength,head_predicate,head_polarity,head_variables,body_variables,body_predicates), norms(id,modality,goal_kind,condition_predicates), positions(norm,kind,bearer_type), windows(norm,kind,deadline), imports(package,imported,semantic_hash), links(from,to,kind: imports|alias|subtype|produces|reads|anchored), literals(node,context,predicate,polarity), variables(node,context,name,type), interpretations(id,predicate,role). Functions: anchor, labels, short, contains, overlaps, starts_with, ends_with, position, derivation; exists/not exists over a bound variable; equality and membership only, no arithmetic and no ordering comparisons. Scope: corpus by package.name (for example kz.corpus.labour_code, not a file name) or a glob; without corpus, the whole profile slice; a scope outside the profile is empty (CORPUS_EMPTY). Examples: `from r in rules where r.head_predicate == "urn:…#eligible" select r.id as producer, r.strength as strength, anchor(r.id) as anchors` — who produces; `from l in literals where l.predicate == "urn:…#eligible" select l.node as reader, l.context as context` — who reads; `query eligible over "pkg" { for x: Person; where applicant(x); select eligible(x); }` — inference by the core. This is orchestration over the CLIR and the core; no new legal semantics is implemented here. Instead of text, a question from the catalog with arguments: producers, readers, anchors-of, imports-of, links-of, type-step (predicate/node/type parameters are URNs, pkg is a package.name or a glob). A structural answer is a queryPage: resultHash of the full queryResult, snapshot (hash of the scope package list), rowCount, rows by rowLimit (20, at most 5000) and rowOffset

輸入參數casefulllimitquerycorpusenginequestionrowLimitsnapshotargumentsrowOffset

law_report

Report a divergence in the formalisation

A REPORT of a divergence between the formalisation and the source: the answer contradicts the pinned text, a norm of the source is not expressed by a rule, a §218 label diverges from the text, an address cannot be found. A report is a hypothesis for triage by a formaliser: it does NOT change the law, it never reaches the answers of the other tools, and "not derived" does not become "derived" because of it. An address is required and is checked against the catalogue: package, fragment (a StableId from law_sources) and/or predicate; callId is the X-Law-Call-Id of the answer you disagree with. The entry goes into the server log.

輸入參數callIdpackage必填category必填expected必填fragmentobserved必填predicate

版本歷史

2
  1. v0.3.11最新Oct 15, 2026
  2. v0.3.10Oct 14, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Arxo 整合