telleroutlook/agentkit-js/mcp-server

πŸ‘¨β€πŸ’» Code Execution
0 Views
0 Installs

πŸ“‡ ☁️ 🏠 🐧 🍎 πŸͺŸ – Code-mode MCP server: collapses N user-defined tools into a two-tool surface (executecode + docssearch). Backed by a unified capability manifest (allowedHosts / cpuMs / memoryLimitBytes) honoured across three sandbox kernels β€” in-process node:vm, WASM (QuickJS / Pyodide / Wasmtime), and remote microVM (E2B / Cloudflare Sandbox). Token-saving benchmark in repo CI.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "telleroutlook-agentkit-js-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "telleroutlook-agentkit-js-mcp-server"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

wasmagent-js

npm version License: Apache-2.0 CI Docs

WasmAgent adds a verifiable evidence layer to agent tool use: protect tool calls, record what happened, audit the result, and admit trusted traces into downstream systems.

Protect β†’ Record β†’ Audit β†’ Admit Β· Sync β€” agent↔UI shared state


Start in 30 seconds

Pick your entry point:

GoalInstall
Protect tools β€” runtime firewall, policy enforcement, taint trackingnpm add @wasmagent/mcp-firewall
Record evidence β€” signed AEP records after every agent runnpm add @wasmagent/aep
Admit from traces β€” compliance scoring produces ComplianceEvalRecords for downstream trainingnpm add @wasmagent/aep @wasmagent/compliance
Sync state β€” reducer-backed agent↔UI shared state, agent reads projections + writes intentnpm add @wasmagent/core (/shared-state subpath)

Trust Pack β€” 30-minute end-to-end: docs/quickstarts/trust-pack-30min.md


Quickstart

Three paths β€” pick the one that fits your use case:

Path 1 β€” Protect: MCP runtime firewall

Wrap any MCP server: vet tools before execution, enforce policy per call, track taint across results.

npm install @wasmagent/mcp-firewall
import { vetTool, evaluatePolicy, taintObservation, snapshotTool } from "@wasmagent/mcp-firewall";

// Before calling a tool
const snap     = snapshotTool(entry, "my-server");   // hash descriptor at registration
const vetting  = vetTool(entry);                     // static scan: injection / exfil / rug-pull
const decision = evaluatePolicy(entry.name, args, vetting, consentRecords);

if (decision.decision === "deny")   throw new Error(`Blocked: ${decision.reason}`);
if (decision.decision === "ask_user") {
  // surface consent UI, then call recordConsent(...)
}

// After receiving result
const obs = taintObservation(entry.name, rawResult);  // boundary-tagged, safe to assemble into prompt

β†’ Security pack Β· OWASP Agentic Top 10 Β· Attack demos

Path 2 β€” Record: AEP evidence export

Emit a signed evidence record after every agent run β€” consumable by trace-pipeline for audit and training.

npm install @wasmagent/aep
import { AEPEmitter } from "@wasmagent/aep";

const emitter = new AEPEmitter({ run_id: "run-001", model_id: "claude-sonnet-4-6" });

// During the run β€” add tool call evidence
emitter.addAction({ tool_name: "bash", outcome: "pass", exit_code: 0 });

// At the end β€” emit the record
const record = emitter.build();
// record satisfies aep/v0.1 JSON Schema β€” ready for evomerge validate-aep

β†’ AEP schema Β· trace-pipeline 10-min tutorial

Path 3 β€” Execute: Sandboxed code execution

Run agent-generated code in an isolated WASM kernel β€” no host-process access.

npm install @wasmagent/aisdk @wasmagent/kernel-quickjs
import { sandboxedJsTool } from "@wasmagent/aisdk";
import { QuickJSKernel } from "@wasmagent/kernel-quickjs";

// Drop into any AI SDK / LangChain / OpenAI Agents setup
const codeTool = sandboxedJsTool({ kernel: new QuickJSKernel() });

β†’ Kernel comparison Β· Getting started

Path 4 β€” Sync: Human-agent shared state

Reducer-backed collaborative state where the LLM reads projections, dispatches semantic actions, and respects affordances β€” all through standard tools.

npm install @wasmagent/core
import { defineStateModel, SharedStateStore, stateTools } from "@wasmagent/core/shared-state";

// 1. One reducer, shared by both UI and agent.
const model = defineStateModel({
  initial: () => ({ page: "list", selectedId: null as string | null }),
  reduce: (s, a) => {
    if (a.type === "SELECT") return { ...s, page: "detail", selectedId: a.id };
    if (a.type === "BACK")   return { ...s, page: "list", selectedId: null };
    return s;
  },
  project: (s) => ({ page: s.page, selectedId: s.selectedId }),
  affordances: (s) => s.page === "list" ? ["SELECT"] : ["BACK"],
});

// 2. Server-side store keyed by session.
const store = new SharedStateStore(model);

// 3. Give the agent read_state + dispatch_action tools.
const tools = stateTools(store, "session-001");
// Pass `tools` to any ToolCallingAgent β€” the LLM reads state and dispatches intent.

The semantic action stream doubles as AEP evidence β€” every dispatch is a provenance-ready record (see #141 for the full confluence design).


πŸ“š Docs Β· Getting started Β· Kernels Β· OWASP governance Β· Security pack Β· Changelog


What is shipped vs alpha

WasmAgent uses a five-tier maturity scale to prevent "shipped" from becoming a vague claim:

TierMeaningSemver guaranteeProduction use
stablePublic API locked; breaking changes require major-version bumpYesYes
betaFunctional and used in production, but a specific limitation is documented (e.g. first-line filter only, contract still evolving)Minor/patch onlyYes, with caveats documented
alphaSchema versioned; fields may be added without a breaking-change bumpNoInformed use
demoDemonstration or example code; not hardened for productionNoNo
researchResearch-grade prototype; interfaces may change without noticeNoNo

Packages not listed here (model adapters, UI cards, etc.) follow the same scale β€” see each package's README or package.json wasmagent.stability field.


Package maturity

PackageMaturityNotes
@wasmagent/corestablePublic API; semver guaranteed
@wasmagent/kernel-quickjsstable
@wasmagent/kernel-remotestable
@wasmagent/mcp-gatewaystablePublished 0.1.0; gateway composes all firewall layers
@wasmagent/mcp-firewallbetaFirst-line filter, not adversarial-grade β€” keyword bag + lightweight n-gram classifier; use defence-in-depth
@wasmagent/aepbetav0.2 signature contract (Ed25519) shipped; schema versioned
@wasmagent/otel-exporteralphaGENAI_SEMCONV, AEP↔OTel bridge
@wasmagent/aisdk / @wasmagent/mastra-sandboxalphaAPI stable, may add fields
@wasmagent/compliancealphaSchema versioned; may add fields without breaking
@wasmagent/mcp-policyalpha β€” privateNot yet published to npm
@wasmagent/mcp-attestationalpha β€” privateNot yet published to npm
@wasmagent/evals-runneralpha
@wasmagent/devtoolsalpha

WasmAgent Ecosystem

WasmAgent is a portable, governable agent runtime for safe code execution, verifiable rollouts, and post-training data loops.

RepoRole
wasmagent-js (this repo)Embedded Agent Runtime / WASM Kernel / policy / verifier / adapters
bscodeCloudflare flagship demo and deploy template for safe coding agents
trace-pipelinePublic datafactory and eval-trust backend for rollout data
Task β†’ Safe Runtime β†’ Verifiable Rollout β†’ Trajectory Export β†’ DPO/PPO Data β†’ Better Models

What makes wasmagent different

Three wedges where wasmagent stands apart from generic agent frameworks:

WedgeWhat it means
Sandboxed executionThree isolation tiers β€” VmKernel / WASM (QuickJSΒ·PyodideΒ·Wasmtime) / microVM β€” with a single CapabilityManifest and MCP runtime firewall across all
Runtime complianceTaskSpec β†’ ConstraintIR β†’ ComplianceEvalRecord β€” every run produces an auditable, cross-repo training contract, not just a log
Trace-to-training contractVerifiable rollout branching, objective scoring, DPO/PPO export β€” the loop from runtime evidence to training data is first-class, not an afterthought
Full feature axis table (10 axes vs. other JS agent frameworks)
#AxisStatus
1Multi-provider adapters β€” one Model interface across Anthropic, OpenAI, Doubao, DeepSeek, Kimi, Qwen, GLM, MiniMax, local llama.cppshipped
2Three isolation tiers β€” VmKernel (in-process) / QuickJSΒ·PyodideΒ·Wasmtime (WASM) / RemoteSandboxKernel (microVM) β€” same CapabilityManifest across allshipped
3Cross-runtime + offline β€” Node / edge / browser / air-gapped laptop; @wasmagent/model-local + WASM kernel = zero outbound trafficshipped
4Memory layers β€” MemoryBlockSet (prompt-cache stable) + observational memory + Checkpointer + 4 KV backendsshipped
5Durable workflows β€” LocalWorkflowEngine + CloudflareWorkflowEngine β€” observable, terminable, resumableshipped
6Code-mode MCP β€” N tools β†’ 2 tools (docs_search + execute_code); 13.6% token cost at N=30shipped
7Devtools + OTel β€” local Studio, gen_ai.* semantic conventions (Datadog / Honeycomb / Grafana)shipped
8Goal-directed loop β€” agent synthesises success criteria, verifies, retries with hintsshipped 2026-06-18
9Adaptive execution β€” registered fallbacks (L1) β†’ synthesised tool (L2) β†’ relaxed goal (L3)shipped 2026-06-18
10MCP runtime firewall β€” @wasmagent/mcp-firewall: descriptor snapshot, static vetting (injection / exfiltration / rug-pull / taint), per-call policy, consent ledgershipped 2026-06-25

Full comparison with Vercel AI SDK, LangGraph.js, OpenAI Agents JS, Mastra, CF Agents SDK: docs/compare.md


Quick Start

Tool-Calling Agent

import { ToolCallingAgent, AnthropicModel } from "@wasmagent/core";
import { z } from "zod";

const agent = new ToolCallingAgent({
  model: new AnthropicModel("claude-haiku-4-5-20251001"),
  tools: [{
    name: "search", description: "Search the web",
    inputSchema: z.object({ query: z.string() }),
    readOnly: true, idempotent: true,
    forward: async ({ query }) => `Results for: ${query}`,
  }],
  stopPolicies: ["steps:10", "cost:0.5"],
});

for await (const ev of agent.run("Search for recent AI news")) {
  if (ev.event === "final_answer") console.log(ev.data.answer);
}

Sandboxed Code Agent

import { CodeAgent, AnthropicModel } from "@wasmagent/core";

const agent = new CodeAgent({
  model: new AnthropicModel("claude-sonnet-4-6"),
  tools: [],  // kernel executes code; no extra tools needed
  maxSteps: 10,
});

for await (const ev of agent.run("What is 42 * 1337?")) {
  if (ev.event === "final_answer") console.log(ev.data.answer);
}

CLI

npm install -g @wasmagent/cli

# Agent runs
wasmagent run "What is the square root of 144?"
wasmagent run "Summarise AI news" --stream | jq .

# Rollout / training data
wasmagent rank-rollout rollouts.jsonl --out ranked.jsonl
wasmagent validate-rollouts ranked.jsonl
wasmagent export-rollouts --in ranked.jsonl --format dpo --out dpo.jsonl

# MCP security (scan β†’ guard β†’ evidence)
wasmagent init --guard               # generate wasmagent.policy.yaml
wasmagent scan-mcp tools.json        # static risk scan, exits 1 on critical findings
wasmagent guard --config wasmagent.policy.yaml --upstream tools.json
wasmagent evidence export --input aep-records.jsonl --format json

GitHub Action β€” enforce policy in CI:

- uses: WasmAgent/wasmagent-js/.github/actions/agent-evidence-gate@main
  with:
    policy: wasmagent.policy.yaml
    tools-file: mcp-tools.json
    fail-on-policy-violation: "true"

β†’ MCP Guard guide Β· Attack demos


Key Capabilities

CapabilityGuide
Shared state β€” reducer-backed agent↔UI sync, projections, affordancespackages/core/src/shared-state/
MCP firewall β€” vetTool, ScopeLease, ApprovalReceiptdocs/guides/mcp-guard.md
AEP v0.2 evidence β€” causal chain, scope lease, taint, memory refspackages/aep/src/types.ts
OWASP MCP Top 10 crosswalkdocs/security/standards-crosswalk.yaml
OWASP security demo (10 scenarios)examples/owasp-demo/
Security benchmark runnerexamples/security-benchmark/
AEP ↔ OTel bidirectional mappingpackages/otel-exporter/src/aep-otel-bridge.ts
AgentTeam delegation chainpackages/core/src/agents/AgentTeam.ts
Claim dashboardnode scripts/verify-claims.mjs --html β†’ docs/claims/claims.html
Quality runners (self-consistency, reflect-refine, parallel fork-join)docs/guides/quality-runners.md
Durable runtime (checkpoints, SSE resume, HITL)docs/guides/durable-runtime.md
Observational memory β€” ~22% tokens on 50-turn tracesdocs/guides/observational-memory.md
Goal-directed agent with verifiersdocs/guides/goal-directed.md
Production APIs (retry, evals, OTel, React hook)docs/api/production-apis.md
API stability policydocs/api/stability-policy.md

Model Providers

First-class adapters: Anthropic Β· OpenAI Β· Doubao Β· DeepSeek Β· Kimi Β· Qwen Β· GLM Β· MiniMax Β· local llama.cpp

// Chinese providers with thinking support
import { DoubaoModel, DoubaoModels } from "@wasmagent/model-doubao";
import { DeepSeekModel, DeepSeekModels } from "@wasmagent/model-deepseek";

// Local / offline
import { LocalModel } from "@wasmagent/model-local";  // node-llama-cpp, multi-mirror download

Full provider reference and proxy/custom endpoint setup: docs/guides/openai-compat-recipes.md


Ecosystem

ProjectRole
bscodeFlagship Cloudflare deploy template β€” wires every wasmagent-js capability into a real edge product
trace-pipelineTraining data factory β€” converts ranked rollouts into DPO/PPO datasets

Development

bun install && bun run build
bun test packages/
bun run typecheck
bun run bench          # reproduce all README benchmarks
bun run check:branding # CI guard: no old brand references
bun run verify:claims  # CI guard: all benchmark claims have evidence scripts

See CONTRIBUTING.md Β· Changelog Β· License: Apache-2.0

Related MCP Servers

alfonsograziano/node-code-sandbox-mcp

πŸ“‡ 🏠 – A Node.js MCP server that spins up isolated Docker-based sandboxes for executing JavaScript snippets with on-the-fly npm dependency installation and clean teardown

πŸ‘¨β€πŸ’» Code Execution0 views
alvii147/piston-mcp

🐍 ☁️ 🐧 🍎 πŸͺŸ - MCP server that lets LLMs execute code through the Piston remote code execution engine, with a zero-config uv setup and a ready-to-use Claude Desktop config example.

πŸ‘¨β€πŸ’» Code Execution0 views
asif-nvc/e2b-sandbox-mcp

πŸ“‡ ☁️ 🍎 πŸͺŸ 🐧 - Connect Claude Code with E2B cloud sandboxes β€” 29 tools for creating isolated Linux VMs, cloning repos, running commands, managing files, and performing git operations without touching the local machine.

πŸ‘¨β€πŸ’» Code Execution0 views
ckanthony/openapi-mcp

🏎️ ☁️ - OpenAPI-MCP: Dockerized MCP Server to allow your AI agent to access any API with existing api docs.

πŸ‘¨β€πŸ’» Code Execution0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

No check timestamp yet.

Unclaimed listing (imported or pending owner verification). Claim it β†’
β˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.