Builder defines what's allowed. Runtime enforces it live. Both are native MCP servers your orchestrator already knows how to talk to.
{
"mcpServers": {
"lscp-builder": {
"command": "npx",
"args": ["@x12i/lscp-builder"],
"env": { "LSCP_API_KEY": "..." }
},
"lscp-runtime": {
"command": "npx",
"args": ["@x12i/lscp-runtime"],
"env": { "LSCP_API_KEY": "...", "NEXUM_SOURCE": "graph:prod" }
}
}
}
{
"schema": "invoice.v1",
"allow": ["invoice.total", "invoice.status", "invoice.due_date"],
"deny_all_others": true,
"require_approval_for": ["writes"]
}
Every request from an agent is checked against the bound schema before it reaches Nexum's graph core — and every response is stamped with provenance.
const result = await lscpRuntime.extract({
schema: "invoice.v1",
field: "invoice.total",
agentId: "agent:billing-assistant"
});
// result.value -> "$12,400.00"
// result.sourceHash -> "sha256:7c1e..."
// result.decision -> "ALLOWED"
Define and version bound-extraction schemas.
Enforce schemas live against agent requests.
Immutable, queryable record of every extraction.
LSCP governs access — Nexum is what compiles your sources into the graph it governs.