@archstone/agent
v0.3.1
Published
Embedded agent SDK (RFC-0008/ADD-0008): tool definitions (Anthropic/OpenAI/Gemini/JSON-Schema) + fail-closed execute() over compiled IR. Root entry — zero MCP SDK reachability; /mcp subpath — mountable Streamable-HTTP handler.
Readme
@archstone/agent
Embedded agent SDK (RFC-0008 / ADD-0008): load a compiled Archstone IR artifact, generate typed tool definitions (Anthropic · OpenAI · Gemini · JSON-Schema), and invoke capabilities with fail-closed response mapping — all without running a separate MCP server process.
Two entry points:
- Root (
@archstone/agent):fromIR(json)constructs an embedded instance;tools(format)generates typed tool defs;execute(capabilityId, input)invokes a capability with mapping applied. Zero MCP SDK, zeronode:fs— safe to bundle and run anywhere (browser, Worker, native app). /mcpsubpath (@archstone/agent/mcp):mcpHandler(archstone, {bearerToken})— a mountable, fail-closed Streamable-HTTP MCP endpoint for consumers who want to expose an embedded instance as an MCP server (e.g., Claude APImcp_servers, ChatGPT connectors).
Quick start
import { fromIR, tools, execute } from "@archstone/agent";
// Load a compiled IR (produced by `archstone build manifest/`)
const ir = JSON.parse(fs.readFileSync("archstone.ir.json", "utf-8"));
const archstone = fromIR(ir);
// Get tool definitions in your preferred format
const anthropicTools = archstone.tools("anthropic");
const openaiTools = archstone.tools("openai");
const geminiTools = archstone.tools("gemini");
// Invoke a capability
const result = await archstone.execute("tourism.search", {
location: "Paris",
checkInDate: "2026-08-01",
});
if (result.status === "ok") {
console.log("Success:", result.data);
} else if (result.status === "degraded") {
console.log("Partial:", result.data, "Missing:", result.degraded);
} else if (result.status === "violation") {
console.log("Contract violation:", result.missing);
} else {
console.log("Error:", result.error);
}For HTTP-based MCP:
import { mcpHandler } from "@archstone/agent/mcp";
const handler = mcpHandler(archstone, {
bearerToken: process.env.ARCHSTONE_TOKEN,
invoke: { env: process.env }, // optional: env injection for REST connectors
});
// Mount on your framework (e.g., Hono, Express, fetch-based)
const response = await handler(new Request(...));Part of Archstone, an open-source
Capability Platform. For full documentation, see archstone/packages/agent and the
main README.md.
License
Apache-2.0
