Plumbline — a trust layer for LLM answers
REMOTE · PLUMBLINE.LATTICE-SYS.COM · SCANNED SEP 24
Every figure re-checked against SQL-computed facts; unsupported questions refused with the reason.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 16 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability85
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3251 tokens (~130/item across 25 items; 18 tools + 7 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "query_fact" implies "execute" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
- An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
How do I install the Plumbline — a trust layer for LLM answers MCP server?
Plumbline — a trust layer for LLM answers is a hosted endpoint at https://plumbline.lattice-sys.com/mcp/demo, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · plumbline.lattice-sys.com
claude mcp add --transport http com-lattice-sys-plumbline-mcp 'https://plumbline.lattice-sys.com/mcp/demo'
{
"mcpServers": {
"com-lattice-sys-plumbline-mcp": {
"url": "https://plumbline.lattice-sys.com/mcp/demo"
}
}
} {
"servers": {
"com-lattice-sys-plumbline-mcp": {
"type": "http",
"url": "https://plumbline.lattice-sys.com/mcp/demo"
}
}
} [mcp_servers.com-lattice-sys-plumbline-mcp] url = "https://plumbline.lattice-sys.com/mcp/demo"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-lattice-sys-plumbline-mcp": {
"type": "remote",
"url": "https://plumbline.lattice-sys.com/mcp/demo",
"enabled": true
}
}
} openclaw mcp add com-lattice-sys-plumbline-mcp --url 'https://plumbline.lattice-sys.com/mcp/demo' --transport streamable-http
mcp_servers:
com-lattice-sys-plumbline-mcp:
url: "https://plumbline.lattice-sys.com/mcp/demo" {
"McpServers": {
"com-lattice-sys-plumbline-mcp": {
"Transport": "http",
"Url": "https://plumbline.lattice-sys.com/mcp/demo"
}
}
} assistant mcp add com-lattice-sys-plumbline-mcp -t streamable-http -u 'https://plumbline.lattice-sys.com/mcp/demo'
{
"mcpServers": {
"com-lattice-sys-plumbline-mcp": {
"type": "http",
"url": "https://plumbline.lattice-sys.com/mcp/demo"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 22 Sept 26 +1
- Stability: 0.97 → pass security
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 24 Sept 2026 · Probed https://plumbline.lattice-sys.com/mcp/demo
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=plumbline.lattice-sys.com | CN=YE1,O=Let's Encrypt,C=US | 17 Aug 2026 | 15 Nov 2026 | ECDSA 256 | ECDSA-SHA384 | 55cd4b0f585f9a06f41d73a56c8f61cd26d |
| SANs: plumbline.lattice-sys.com | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of plumbline.lattice-sys.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| lattice-sys.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://plumbline.lattice-sys.com/mcp/demo | Verified | 200 | |
| http (plaintext) | http://plumbline.lattice-sys.com/mcp/demo | HTTPS enforced | 308 | https://plumbline.lattice-sys.com/mcp/demo |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ask_prepare BYO: Prepare Grounded Prompt ~415
BYO step 1 of 2: run the server-side trust plane for a business question (plan, SQL-verified facts, evidence retrieval, answerability gate, prompt composition) and return the composed prompt plus a single-use prepare_key (a signed handoff token; echo it back VERBATIM and in full, or use the short ask_id alias; in prose always say the ask_id, never the token). Read-only: prepare holds no server state and is safe to run without confirmation — the receipt is minted only at ask_submit_draft. Pass the user's question VERBATIM: do not expand, narrow, or reword it — the server plans coverage itself, and an unrequested rewrite misleads the user about what was asked. If you must revise it (e.g. to fold in essential conversation context), you MUST also pass the user's exact wording in original_question so the panel can disclose the revision. YOU (the connected model) then write the draft answer from that prompt and submit it with ask_submit_draft — generation happens on your side, so no LLM credential ever reaches this server. An unanswerable question still receives a prompt for reference; its draft is force-refused at submit and can never earn a verified verdict. Only a policy refusal stops at prepare. Recommended drafting path on this deployment.
| Name | Type | Req | Description |
|---|---|---|---|
| history | null|array | – | optional prior conversation turns (role user|assistant) to thread into the composed prompt for follow-up questions |
| original_question | string | – | REQUIRED IF question is not the user's exact wording: the user's original question, verbatim, so the panel can display your revision as a revision. Omit when question is verbatim |
| question | string | yes | the business question to ground, in the USER'S OWN WORDS, verbatim; do not expand, narrow, or reword it — the server plans coverage itself. The server plans, computes SQL facts, retrieves evidence, g… |
| Name | Type | Req | Description |
|---|---|---|---|
| ask_id | string | – | – |
| expires_in_seconds | integer | – | – |
| instructions | string | – | – |
| max_output_tokens | integer | – | – |
| messages | null|array | – | – |
| original_question | string | – | – |
| prepare_key | string | – | – |
| question | string | – | – |
| refusal | null|object | – | – |
| session_id | string | – | – |
No examples provided.
ask_result BYO: Fetch Published Verdict ~173
Fetch the published verdict for an ask_prepare session (status: pending, published, or unknown). This is the app panel's polling surface, so the verified answer renders inside the panel that prepared the question. As the connected model you normally never need it: write your draft and call ask_submit_draft. Exception: if you are asked to submit for a session whose composed prompt is no longer in your context, call this with include_prompt true to receive that session's exact prompt again, then draft and submit.
| Name | Type | Req | Description |
|---|---|---|---|
| include_prompt | boolean | – | set true to receive the pending session's composed prompt messages again, e.g. when the ask_prepare result is no longer in your context; the same caller already received this prompt at prepare time |
| prepare_key | string | yes | the session_id value returned by the prepare tool |
| Name | Type | Req | Description |
|---|---|---|---|
| decline_reason | string | – | – |
| expires_in_seconds | integer | – | – |
| instructions | string | – | – |
| max_output_tokens | integer | – | – |
| messages | null|array | – | – |
| override | string | – | – |
| pending | boolean | – | – |
| result | null|object | – | – |
| status | string | yes | – |
No examples provided.
ask_submit_draft BYO: Verify Client Draft ~250
BYO step 2 of 2: verify the draft you wrote for an ask_prepare prompt. The server runs the SAME post-answer guards the strict path uses (facts presence, tagged claims, concept binding, earner-name grounding) against its own SQL facts and publishes the trust envelope; a draft that fails any guard is refused. Pass the prepare_key token back VERBATIM and in full. Handoffs are single-use per verdict and expire.
| Name | Type | Req | Description |
|---|---|---|---|
| decline_reason | string | – | use INSTEAD of raw_answer when you are choosing not to submit a draft: state plainly why, in one or two sentences addressed to the user. The reason is shown to them in the panel, the handoff stays op… |
| model | string | – | optional: the model that wrote the draft, recorded in the trace |
| prepare_key | string | yes | the session_id value returned by the prepare tool |
| raw_answer | string | – | your COMPLETE raw draft answer to the composed prompt (including any structured answer/claims JSON the prompt's contract asked for). Omit ONLY when you are declining, in which case decline_reason is… |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | – |
| answer_id | string | – | – |
| attribution | null|object | – | – |
| claims | null|array | – | – |
| composed_prompt | null|array | – | – |
| confidence | null|object | – | – |
| correlation_id | string | – | – |
| coverage | null|object | – | – |
| data_as_of | string | – | – |
| disclosures | null|array | – | – |
| drafted_by | string | – | – |
| drafted_by_source | string | – | – |
| evidence_documents | null|array | – | – |
| facts_used | null|array | – | – |
| figure_origins | null|array | – | – |
| grounding | null|object | – | – |
| model_observations | null|array | – | – |
| model_reported_evidence | null|array | – | – |
| permalink_url | string | – | Public URL of the full evidence receipt for this answer. |
| question | string | – | – |
| reconciliation | null|object | – | – |
| recovery | null|array | – | – |
| refusal_reason | string | – | – |
| refused | boolean | – | – |
| result_sets | null|array | – | – |
| snapshot_id | integer | – | – |
| snapshot_name | string | – | – |
| stage_timings | null|array | – | – |
| suggested_questions | null|array | – | – |
| unverified | boolean | – | – |
| unverified_disclaimer | string | – | – |
No examples provided.
compare_departments Compare Departments (Verified) ~96
Compare two departments by headcount and compensation. NOTE: internal drafting is disabled on this deployment. If your client supports MCP sampling, this tool asks YOUR model to draft in the same call (verified server-side); otherwise it returns an explicit refusal, and you should use ask_prepare then ask_submit_draft to draft with your own model.
| Name | Type | Req | Description |
|---|---|---|---|
| a | string | yes | the first department |
| b | string | yes | the second department |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | – |
| answer_id | string | – | – |
| attribution | null|object | – | – |
| claims | null|array | – | – |
| composed_prompt | null|array | – | – |
| confidence | null|object | – | – |
| correlation_id | string | – | – |
| coverage | null|object | – | – |
| data_as_of | string | – | – |
| disclosures | null|array | – | – |
| drafted_by | string | – | – |
| drafted_by_source | string | – | – |
| evidence_documents | null|array | – | – |
| facts_used | null|array | – | – |
| figure_origins | null|array | – | – |
| grounding | null|object | – | – |
| model_observations | null|array | – | – |
| model_reported_evidence | null|array | – | – |
| question | string | – | – |
| reconciliation | null|object | – | – |
| recovery | null|array | – | – |
| refusal_reason | string | – | – |
| refused | boolean | – | – |
| result_sets | null|array | – | – |
| snapshot_id | integer | – | – |
| snapshot_name | string | – | – |
| stage_timings | null|array | – | – |
| suggested_questions | null|array | – | – |
| unverified | boolean | – | – |
| unverified_disclaimer | string | – | – |
No examples provided.
cross_check Cross-Check a Figure ~242
Corroborate a figure you obtained (e.g. from run_sql) against the verified fact store: it re-derives the named value_key from the same SQL the verified pipeline uses and compares. AGREE lifts an otherwise-unverified session to 'corroborated'; DISAGREE marks a CONFLICT (worse than unverified). This is the only way a raw figure earns trust back, and it can only ever agree with a number the fact store itself computed. Resolvable keys cover the single-snapshot fact concepts plus temporal and per-department growth keys (e.g. indexed_people.<dept>); per-question keys (a named department's median, one person's direct-report count) return unmapped.
| Name | Type | Req | Description |
|---|---|---|---|
| value | string | yes | the figure you obtained (e.g. from run_sql) to corroborate against the verified fact store |
| value_key | string | yes | the claimable fact key naming the verified concept to re-derive, e.g. people, indexed_active_people, median_income_cents, or a per-department growth key like indexed_people.engineering (the keys a ve… |
| Name | Type | Req | Description |
|---|---|---|---|
| prompto | object | yes | – |
| value | – | – | – |
No examples provided.
describe_fact_capabilities Discover Fact Capabilities ~67
List safe metadata for the registered fact queries available on the server-pinned dataset: IDs, labels, parameters, and result shapes, never SQL. Use this when a question appears relevant but a selected route produced no facts; a route miss is not evidence that the underlying records are absent.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | – |
| dataset_namespace | string | – | – |
| guidance | string | yes | – |
| queries | null|array | yes | – |
| snapshot_id | integer | yes | – |
No examples provided.
find_payroll_anomalies Payroll Anomalies (Verified) ~80
Surface payroll and deduction anomalies in the latest snapshot. NOTE: internal drafting is disabled on this deployment. If your client supports MCP sampling, this tool asks YOUR model to draft in the same call (verified server-side); otherwise it returns an explicit refusal, and you should use ask_prepare then ask_submit_draft to draft with your own model.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | – |
| answer_id | string | – | – |
| attribution | null|object | – | – |
| claims | null|array | – | – |
| composed_prompt | null|array | – | – |
| confidence | null|object | – | – |
| correlation_id | string | – | – |
| coverage | null|object | – | – |
| data_as_of | string | – | – |
| disclosures | null|array | – | – |
| drafted_by | string | – | – |
| drafted_by_source | string | – | – |
| evidence_documents | null|array | – | – |
| facts_used | null|array | – | – |
| figure_origins | null|array | – | – |
| grounding | null|object | – | – |
| model_observations | null|array | – | – |
| model_reported_evidence | null|array | – | – |
| question | string | – | – |
| reconciliation | null|object | – | – |
| recovery | null|array | – | – |
| refusal_reason | string | – | – |
| refused | boolean | – | – |
| result_sets | null|array | – | – |
| snapshot_id | integer | – | – |
| snapshot_name | string | – | – |
| stage_timings | null|array | – | – |
| suggested_questions | null|array | – | – |
| unverified | boolean | – | – |
| unverified_disclaimer | string | – | – |
No examples provided.
get_ai_act_transparency EU AI Act Transparency Descriptor ~37
Return the Art. 13 transparency descriptor: intended purpose, capabilities, limitations, human oversight, logging mechanism, and article mapping.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| accuracy_posture | null|array | yes | – |
| article_13_mapping | null|array | yes | – |
| capabilities | null|array | yes | – |
| human_oversight | null|array | yes | – |
| intended_purpose | string | yes | – |
| limitations | null|array | yes | – |
| logging_mechanism | null|array | yes | – |
| operator_configured | boolean | yes | – |
| provider_identity | string | yes | – |
| retention | object | yes | – |
| system_name | string | yes | – |
No examples provided.
get_answer_queries Show the SQL Behind an Answer ~161
Show the SQL behind one answer you already received, addressed by its correlation_id. Returns only the recorded fact queries (id, version, label, SQL, parameters, result schema, dataset version) for that answer: no rows, no evidence text, no answer text, no envelope, and no way to list the catalog. Recorded SQL has its arguments inlined as literals, so a query that filters on a specific value discloses that value; the built-in workforce queries inline only snapshot ids. Requires the persisted compliance log and the same session that produced the answer. Absent from the no-auth public demo.
| Name | Type | Req | Description |
|---|---|---|---|
| correlation_id | string | yes | the correlation_id published on the answer whose queries you want to see; obtained from that answer, never guessed |
| Name | Type | Req | Description |
|---|---|---|---|
| correlation_id | string | yes | – |
| queries | null|array | yes | – |
| snapshot_id | integer | yes | – |
No examples provided.
get_evidence_document Show an Evidence Document Behind an Answer ~168
Show ONE retrieved evidence document behind an answer you already received, addressed by that answer's correlation_id plus a document_id from its evidence_documents references. Returns the full stored document (title, body, metadata, embedding_text) with the retrieval rank and scores the answer recorded; never the raw embedding vector. Only documents the addressed answer actually recorded resolve: there is no fetch-by-id in general and no way to browse the store. Requires the persisted compliance log and the same session that produced the answer. Absent from the no-auth public demo.
| Name | Type | Req | Description |
|---|---|---|---|
| correlation_id | string | yes | the correlation_id published on the answer whose evidence you want to inspect; obtained from that answer, never guessed |
| document_id | integer | yes | the document_id of one entry in that answer's evidence_documents references |
| Name | Type | Req | Description |
|---|---|---|---|
| correlation_id | string | yes | – |
| document | object | yes | – |
| note | string | – | – |
No examples provided.
get_manager_chain Manager & Reporting Chain (Verified) ~91
Return the management/reporting chain for an employee. NOTE: internal drafting is disabled on this deployment. If your client supports MCP sampling, this tool asks YOUR model to draft in the same call (verified server-side); otherwise it returns an explicit refusal, and you should use ask_prepare then ask_submit_draft to draft with your own model.
| Name | Type | Req | Description |
|---|---|---|---|
| employee | string | yes | the employee whose management chain to return |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | – |
| answer_id | string | – | – |
| attribution | null|object | – | – |
| claims | null|array | – | – |
| composed_prompt | null|array | – | – |
| confidence | null|object | – | – |
| correlation_id | string | – | – |
| coverage | null|object | – | – |
| data_as_of | string | – | – |
| disclosures | null|array | – | – |
| drafted_by | string | – | – |
| drafted_by_source | string | – | – |
| evidence_documents | null|array | – | – |
| facts_used | null|array | – | – |
| figure_origins | null|array | – | – |
| grounding | null|object | – | – |
| model_observations | null|array | – | – |
| model_reported_evidence | null|array | – | – |
| question | string | – | – |
| reconciliation | null|object | – | – |
| recovery | null|array | – | – |
| refusal_reason | string | – | – |
| refused | boolean | – | – |
| result_sets | null|array | – | – |
| snapshot_id | integer | – | – |
| snapshot_name | string | – | – |
| stage_timings | null|array | – | – |
| suggested_questions | null|array | – | – |
| unverified | boolean | – | – |
| unverified_disclaimer | string | – | – |
No examples provided.
query_fact Run Registered Fact Query ~115
Execute a registered, versioned read-only fact query against the server-pinned dataset. Provide query_id and version only: SQL is approved by the domain pack, never caller-supplied. Returns normalized rows plus a reproducible trust receipt containing the dataset and query versions.
| Name | Type | Req | Description |
|---|---|---|---|
| parameters | object | – | optional typed values for parameters declared by the registered query |
| query_id | string | yes | registered fact-query id; SQL is resolved by the server and must not be supplied here |
| version | string | yes | immutable registered query version |
| Name | Type | Req | Description |
|---|---|---|---|
| prompto | object | yes | – |
| value | – | – | – |
No examples provided.
run_code Run Sandboxed JavaScript (Unverified) ~323
Run YOUR OWN JavaScript in the in-tenant coderunner sandbox with the read-only, snapshot-scoped plumb.query() SDK. No filesystem, environment, or general network access. Read plumbline://sandbox-api.d.ts before writing code. The raw-SQL server opt-in is enabled, but results still bypass the trust path and are UNVERIFIED. Returns stdout/stderr plus metadata-only host-call trace evidence.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge_unverified | boolean | – | set true to confirm you understand results BYPASS the trust plane and are UNVERIFIED, and that you will label them so to the user. On deployments with the acknowledgment gate the FIRST raw call of a… |
| code | string | yes | JavaScript source to execute in the in-tenant coderunner sandbox. No filesystem, environment, or general network access. When the server explicitly enables raw SQL and uses the local grant-capable ru… |
| concepts | null|array | – | optional: the fact concepts this code computes, as claimable fact keys (e.g. median_income_cents) or free-form names. The server reports per concept whether a registered seed exists (cross_check can… |
| Name | Type | Req | Description |
|---|---|---|---|
| prompto | object | yes | – |
| value | – | – | – |
No examples provided.
run_sql Run Read-Only SQL (Unverified) ~309
Run YOUR OWN single read-only SELECT/WITH over the virtual snapshot_* relations. The query is statically verified against an allowlist, rewritten to the active snapshot, and run read-only. This BYPASSES the planner, grounding gate, and answer-facts reconciliation, so results are UNVERIFIED and labelled as such. Deployments may refuse the FIRST raw call of a session pending acknowledge_unverified: true (the refusal says how to proceed). Optionally declare `concepts` to learn which figures the fact store could corroborate via cross_check.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge_unverified | boolean | – | set true to confirm you understand results BYPASS the trust plane and are UNVERIFIED, and that you will label them so to the user. On deployments with the acknowledgment gate the FIRST raw call of a… |
| concepts | null|array | – | optional: the fact concepts this query computes, as claimable fact keys (e.g. median_income_cents) or free-form names. The server reports per concept whether a registered seed exists (cross_check can… |
| sql | string | yes | a single read-only SELECT/WITH over the VIRTUAL snapshot_* relations (e.g. snapshot_employees, snapshot_pay_statements, snapshot_departments). Bare physical table names are rejected. Discover the col… |
| Name | Type | Req | Description |
|---|---|---|---|
| prompto | object | yes | – |
| value | – | – | – |
No examples provided.
search_docs Search Plumbline Docs ~113
Search Plumbline's own product and architecture documentation (how the verification, refusal, and trust layer itself works). Returns ranked, citable doc passages; does NOT touch employment data, and returns an empty result set honestly when nothing matches.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | max passages to return (default 5, capped at 10) |
| query | string | yes | a how-does-this-work question about Plumbline itself, e.g. the verification gate, snapshots and temporal drift, or the cross-provider corpus |
| Name | Type | Req | Description |
|---|---|---|---|
| hits | null|array | yes | – |
| note | string | – | – |
| query | string | yes | – |
No examples provided.
search_employee Search Employee (Verified) ~95
Search the employment fact store for a person and return a grounded, verified answer. NOTE: internal drafting is disabled on this deployment. If your client supports MCP sampling, this tool asks YOUR model to draft in the same call (verified server-side); otherwise it returns an explicit refusal, and you should use ask_prepare then ask_submit_draft to draft with your own model.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | the employee name or search terms |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | – |
| answer_id | string | – | – |
| attribution | null|object | – | – |
| claims | null|array | – | – |
| composed_prompt | null|array | – | – |
| confidence | null|object | – | – |
| correlation_id | string | – | – |
| coverage | null|object | – | – |
| data_as_of | string | – | – |
| disclosures | null|array | – | – |
| drafted_by | string | – | – |
| drafted_by_source | string | – | – |
| evidence_documents | null|array | – | – |
| facts_used | null|array | – | – |
| figure_origins | null|array | – | – |
| grounding | null|object | – | – |
| model_observations | null|array | – | – |
| model_reported_evidence | null|array | – | – |
| question | string | – | – |
| reconciliation | null|object | – | – |
| recovery | null|array | – | – |
| refusal_reason | string | – | – |
| refused | boolean | – | – |
| result_sets | null|array | – | – |
| snapshot_id | integer | – | – |
| snapshot_name | string | – | – |
| stage_timings | null|array | – | – |
| suggested_questions | null|array | – | – |
| unverified | boolean | – | – |
| unverified_disclaimer | string | – | – |
No examples provided.
summarize_benefits Benefits Summary (Verified) ~102
Summarize benefit enrollments, optionally scoped (e.g. a department or plan). NOTE: internal drafting is disabled on this deployment. If your client supports MCP sampling, this tool asks YOUR model to draft in the same call (verified server-side); otherwise it returns an explicit refusal, and you should use ask_prepare then ask_submit_draft to draft with your own model.
| Name | Type | Req | Description |
|---|---|---|---|
| scope | string | – | optional scope such as a department or benefit plan |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | – |
| answer_id | string | – | – |
| attribution | null|object | – | – |
| claims | null|array | – | – |
| composed_prompt | null|array | – | – |
| confidence | null|object | – | – |
| correlation_id | string | – | – |
| coverage | null|object | – | – |
| data_as_of | string | – | – |
| disclosures | null|array | – | – |
| drafted_by | string | – | – |
| drafted_by_source | string | – | – |
| evidence_documents | null|array | – | – |
| facts_used | null|array | – | – |
| figure_origins | null|array | – | – |
| grounding | null|object | – | – |
| model_observations | null|array | – | – |
| model_reported_evidence | null|array | – | – |
| question | string | – | – |
| reconciliation | null|object | – | – |
| recovery | null|array | – | – |
| refusal_reason | string | – | – |
| refused | boolean | – | – |
| result_sets | null|array | – | – |
| snapshot_id | integer | – | – |
| snapshot_name | string | – | – |
| stage_timings | null|array | – | – |
| suggested_questions | null|array | – | – |
| unverified | boolean | – | – |
| unverified_disclaimer | string | – | – |
No examples provided.
trust_finalize Finalize Trust Verdict ~84
Return the session's graded trust verdict: the tier (verified / registered-query / generated-sql / corroborated / unverified / conflict / refused), which trusted steps were skipped across the session, the deterministic confidence (k of n figures store-verified, weakest figure tier, conflicts), the per-figure provenance, the per-call ledger, and the at-your-own-risk disclaimer.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| prompto | object | yes | – |
| value | – | – | – |
No examples provided.
What is the Plumbline — a trust layer for LLM answers MCP server?
Plumbline — a trust layer for LLM answers is an MCP server listed in the public MCP registry as com.lattice-sys.plumbline/mcp. Every figure re-checked against SQL-computed facts; unsupported questions refused with the reason. This page covers its hosted endpoint (https://plumbline.lattice-sys.com/mcp/demo).
Is the Plumbline — a trust layer for LLM answers MCP server safe to use?
Plumbline — a trust layer for LLM answers scores 79 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Plumbline — a trust layer for LLM answers MCP server expose?
Plumbline — a trust layer for LLM answers exposes 18 tools: ask_prepare, ask_result, ask_submit_draft, compare_departments, cross_check, and 13 more. Their descriptions and schemas cost roughly 2,921 tokens of context every time the server is loaded.
Does the Plumbline — a trust layer for LLM answers MCP server require authentication?
No. We connected to Plumbline — a trust layer for LLM answers without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Plumbline — a trust layer for LLM answers MCP server still maintained?
Plumbline — a trust layer for LLM answers is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.