Permissions
One tool, one decision
Every built-in tool is a single atomic operation with its own allow, deny and risk rules, so policy is precise.
An agent takes the goal, plans the steps, and works the documents with governed tools: classify, extract, search, redact, convert, under checkpoints you set.
Document workflows cross scanners, mailboxes, ERPs and archives. The steps in between are people copying values, or scripts that break on the first surprise.
The agent brings the plan; the platform brings the rules. Neither works without the other.
01
The agent receives an outcome, not a script of steps.
02
It decomposes the work against the tools it is allowed.
03
Each tool call is atomic, permission-checked and logged.
04
Risky actions pause for sign-off; the rest run through.
Agents earn production access the same way people do: scoped permissions, sign-offs and a record of what happened.
Permissions
Every built-in tool is a single atomic operation with its own allow, deny and risk rules, so policy is precise.
Checkpoints
Approval requirements attach to tools, not to hope: redaction, file writes or process execution can each demand sign-off.
Observability
Plans, tool calls, inputs and results are observable, so a run can be audited and a failure diagnosed.
Register the document tools, set the policy, hand over the goal. The same tools run governed on LM-Kit One, reachable over MCP.
using LMKit.Agents;
using LMKit.Agents.Tools;
using LMKit.Agents.Tools.BuiltIn;
using LMKit.Model;
var model = LM.LoadFromModelID("qwen3.5:9b");
var policy = new ToolPermissionPolicy()
.AllowCategory("document", "data", "text")
.RequireApproval("process_*");
var agent = Agent.CreateBuilder(model)
.WithTools(t =>
{
foreach (var tool in BuiltInTools.GetByCategory("document"))
t.Register(tool);
})
.WithPermissionPolicy(policy)
.Build();
var result = await agent.RunAsync(
"Split claim-batch.pdf and extract the claim fields.");
Console.WriteLine(result.Text);
On LM-Kit One the same workflow is a server agent: prompt, tools, and policy defined once, adopted by name, executed with the tools running server-side under governance.
curl http://your-server:5189/lmkit/v1/chat \
-H "Authorization: Bearer your-server-token" \
-H "Content-Type: application/json" \
-d '{"agent":"claims-processor",
"messages":[{"role":"user","content":"Split claim-batch.pdf and extract the claim fields."}]}'
# List the agents this key may adopt:
curl http://your-server:5189/lmkit/v1/agents \
-H "Authorization: Bearer your-server-token"
Every stage of the loop is a documented capability you can inspect on its own.
Plan
ReAct-style planning that decomposes a goal against the tools it may use.
How planning worksAct
Atomic built-in tools, one operation each, so policy stays precise.
How tools workGovern
Allow, deny, risk levels and approval checkpoints, declared in a few lines.
How permissions workAudit
Plans, tool calls, inputs and results on the record, so a run can be audited and a failure diagnosed.
How observability worksThe agent plans against a goal instead of following a fixed script, so a batch with an unexpected document type reroutes instead of failing. The tools it plans with are the same atomic operations you could call yourself.
Policy, not prompts. Every tool carries allow, deny, and risk rules, and approval requirements attach to sensitive operations like process execution or file writes, so the agent requests sign-off exactly where you demanded it.
Yes. Plans, tool calls, inputs, and results are all observable and logged, so a run can be replayed for an audit or a failure diagnosed like any other production incident.
Yes. The tools run governed on LM-Kit One and are reachable over MCP, so workflows built with LM-Kit.NET in-process and assistants calling the server share one tool catalog and one policy surface.
Private Document Intelligence