# Noorle ## Docs - [Welcome to Noorle](https://noorle.com/docs/learn/introduction.md): Noorle runs agents you compose rather than engineer — capabilities, memory, autonomy, and durable workflows behind MCP and A2A - [Architecture Overview](https://noorle.com/docs/learn/architecture.md): Host-based routing across one server, where the agent loop runs relative to every sandbox, and the three execution tiers it calls into - [What You Can Build](https://noorle.com/docs/learn/use-cases.md): Shapes that compose out of what Noorle actually ships — with the constraint on each one stated up front - [Quick Orientation](https://noorle.com/docs/learn/quickstart.md): The mental model in one page, before the concept deep dives - [Model Context Protocol (MCP)](https://noorle.com/docs/learn/concepts/model-context-protocol.md): What MCP is, which parts of it Noorle implements, and how the tools you bind become MCP tools on a gateway - [MCP Gateways](https://noorle.com/docs/learn/concepts/mcp-gateways.md): An MCP gateway publishes the capabilities you bind to it at its own subdomain, as its own OAuth authorization server, over Streamable HTTP - [Capabilities](https://noorle.com/docs/learn/concepts/capabilities.md): The three capability kinds — built-in, plugin, connector — how they are named as tools, and the exposure scope that decides which surfaces can see them - [Agents](https://noorle.com/docs/learn/concepts/agents.md): What an agent is on Noorle: the loop that runs outside every sandbox, how it is specified, how it routes to models, and how it delegates - [Connectors](https://noorle.com/docs/learn/concepts/connectors.md): Three ways to reach an external system — a REST API, a server from the MCP registry, or your own MCP server — with credentials encrypted at rest - [Memory System](https://noorle.com/docs/learn/concepts/memory-system.md): Two tiers of agent memory: thread memory, which rebuilds conversation context from the durable journal, and agent memory, which carries curated facts across threads - [Knowledge Bases & RAG](https://noorle.com/docs/learn/concepts/knowledge-and-rag.md): How documents become searchable chunks, the two ways an agent reaches them, and what reranking actually does - [Tool Presentation](https://noorle.com/docs/learn/concepts/tool-presentation.md): The four modes that control how many tools a model sees: Direct, Discovery, Unified, and Adaptive — and why a large tool surface degrades tool choice - [Generative UI](https://noorle.com/docs/learn/concepts/generative-ui.md): Dynamic, interactive interfaces rendered by agents in real time - [Workflows](https://noorle.com/docs/learn/concepts/workflows.md): Durable graph workflows on Restate: the node types that exist, how waiting works, and what survives a crash - [WebAssembly Plugins](https://noorle.com/docs/learn/concepts/webassembly.md): The .npack format, the WASI Preview 2 sandbox, the nine allowed imports, and the limits a plugin actually runs under - [Authentication Overview](https://noorle.com/docs/learn/auth/overview.md): Three separate token issuers, four principal types, and which credential belongs on which surface - [API Keys](https://noorle.com/docs/learn/auth/api-keys.md): Long-lived bearer credentials bound to a principal — the format, the headers that work, and where their authority actually comes from - [OAuth Device Flow](https://noorle.com/docs/learn/auth/oauth-device-flow.md): How a CLI authenticates against the management API: request a code, send the user to the Portal, poll for a token - [JWT Tokens](https://noorle.com/docs/learn/auth/jwt-tokens.md): The three token issuers on Noorle, the claims each one signs, and why only one of them publishes a JWKS - [Connected Apps](https://noorle.com/docs/learn/auth/connected-apps.md): OAuth clients registered in your account: how they are bound to one authorization server, what scopes exist, and why revoke is one-way - [Roles and Permissions](https://noorle.com/docs/learn/auth/roles-and-permissions.md): Four account roles, seven actions, eleven resource types — and why grants, not role escalation, are the tool for narrowing access - [Run Noorle](https://noorle.com/docs/run/introduction.md): Compose agents and gateways, bind capabilities, connect channels, and run them in production. - [Five-Minute Quickstart](https://noorle.com/docs/run/five-minute-quickstart.md): Create an MCP gateway, bind a capability, and connect an MCP client to Noorle. - [MCP Gateways](https://noorle.com/docs/run/platform/mcp-gateway.md): Expose bound capabilities to MCP clients over a per-gateway origin with its own authentication. - [Model Routing](https://noorle.com/docs/run/platform/model-routing.md): Let the platform pick a model per request, or pin one. Tiers, styles, budget models, and fallback. - [Autonomy and Approvals](https://noorle.com/docs/run/platform/autonomy-and-approvals.md): Decide what an agent may do on its own, what pauses for a human, and where the audit trail lands. - [Users and Roles](https://noorle.com/docs/run/platform/team-management.md): Add people to an account, assign one of four roles, and link their messaging identities. - [API Keys](https://noorle.com/docs/run/platform/api-keys.md): Create API key groups for non-human access, scope them per agent and gateway, and use them against the management API and gateways. - [Usage and Limits](https://noorle.com/docs/run/platform/usage-and-limits.md): Where to see spend, how tokens are metered, and the platform limits that actually exist. - [Built-in Capabilities](https://noorle.com/docs/run/capabilities/overview.md): The twelve first-party capabilities every Noorle account is seeded with, the surfaces they appear on, and how tools get their names. - [Browser](https://noorle.com/docs/run/capabilities/browser.md): Eight stateless page-rendering tools — markdown, HTML, structured extraction, screenshots, and PDFs. - [Web Search](https://noorle.com/docs/run/capabilities/web-search.md): One search tool over the live web, with a per-binding depth setting. - [Code Runner](https://noorle.com/docs/run/capabilities/code-runner.md): Run Python or JavaScript in a WASM sandbox, with optional access to the workspace filesystem. - [Sandbox](https://noorle.com/docs/run/capabilities/sandbox.md): An ephemeral Linux container, provisioned on first use and torn down with the session. - [HTTP Client](https://noorle.com/docs/run/capabilities/http-client.md): One tool for arbitrary HTTP requests. Credentials come from the caller, not from stored configuration. - [Files](https://noorle.com/docs/run/capabilities/files.md): Eleven filesystem tools over three workspace scopes, backed by object storage rather than a local disk. - [Knowledge Retrieval](https://noorle.com/docs/run/capabilities/knowledge-retrieval.md): Three tools for searching knowledge bases on demand, scoped per binding. - [Computer](https://noorle.com/docs/run/capabilities/computer.md): A persistent Linux machine bound to one agent, with a shell and an optional stateful browser. - [Connectors](https://noorle.com/docs/run/connectors/overview.md): Bring external APIs and MCP servers in as tools, with credentials held by the platform rather than the model. - [REST Connectors](https://noorle.com/docs/run/connectors/rest-connectors.md): Turn a REST API into tools by importing its OpenAPI spec. - [MCP Registry](https://noorle.com/docs/run/connectors/mcp-registry.md): Add a published server from the Model Context Protocol registry as a connector. - [Custom MCP](https://noorle.com/docs/run/connectors/custom-mcp.md): Connect an MCP server you run yourself over Streamable HTTP. - [Connector Authentication](https://noorle.com/docs/run/connectors/authentication.md): The three authentication shapes a connector supports, and how credentials are stored. - [Parameter Mapping](https://noorle.com/docs/run/connectors/parameter-mapping.md): How a REST connector turns tool arguments into an HTTP request. - [Agents](https://noorle.com/docs/run/agents/overview.md): What an agent is on Noorle, how it differs from a gateway, and where its settings live. - [Creating an Agent](https://noorle.com/docs/run/agents/creating-an-agent.md): What to set when you create an agent, and what to leave at its default. - [Instructions](https://noorle.com/docs/run/agents/system-prompts.md): Writing the system prompt, and what the platform adds around it. - [Sub-Agents and Delegation](https://noorle.com/docs/run/agents/sub-agents.md): Let one agent hand work to another, and understand what the child does and does not inherit. - [Memory and Context](https://noorle.com/docs/run/agents/memory-and-context.md): The two memory tiers — conversation state within a thread, and durable facts across threads. - [Tool Presentation](https://noorle.com/docs/run/agents/omni-tool.md): Four ways to present bound tools to the consuming model, and when each is right. - [Generative UI](https://noorle.com/docs/run/agents/generative-ui.md): Configure agents to render interactive UI components in responses. - [Channels](https://noorle.com/docs/run/channels/overview.md): Reach an agent from Telegram, Slack, or SMS, and the lifecycle every channel shares. - [Telegram](https://noorle.com/docs/run/channels/telegram.md): Reach an agent from a Telegram bot. One credential, webhook registration handled for you. - [Slack](https://noorle.com/docs/run/channels/slack.md): Reach an agent from a Slack workspace over Socket Mode. Two tokens, no Request URL. - [SMS](https://noorle.com/docs/run/channels/sms.md): Provision a phone number from the Portal and reach an agent by text. No provider account of your own. - [Workflows](https://noorle.com/docs/run/workflows/overview.md): Durable graphs that run agents, capabilities, and other workflows, with approvals and waits that survive restarts. - [Node Types](https://noorle.com/docs/run/workflows/node-types.md): What the workflow designer's palette offers, and what each node actually does at run time. - [Run States](https://noorle.com/docs/run/workflows/state-machine.md): The states a workflow run moves through, and what you can do from each. - [Human Approval](https://noorle.com/docs/run/workflows/human-in-the-loop.md): Park a workflow run until a person approves or denies, and know who can answer. - [Workflow Webhooks](https://noorle.com/docs/run/workflows/webhooks.md): Resume a parked workflow run from an external system. - [Knowledge Bases](https://noorle.com/docs/run/knowledge/overview.md): Ingest documents once, then search them from agents and gateways with hybrid retrieval. - [Adding Sources](https://noorle.com/docs/run/knowledge/uploading-documents.md): Upload files or paste text into a knowledge base, and follow ingestion to completion. - [Build on Noorle](https://noorle.com/docs/build/introduction.md): Extend the platform: compose an agent from capabilities you configure, and write a WASM plugin only when nothing you can configure covers the job. - [Packaging what you run](https://noorle.com/docs/build/packaging/overview.md): Compose an agent, run it on Noorle, and sell the result under your own name — what the platform is responsible for underneath, and what stays yours. - [The platform meter](https://noorle.com/docs/build/packaging/the-meter.md): One account, pay-as-you-go: what the platform records, where you read it, and what happens when the balance runs out. - [Built on Noorle](https://noorle.com/docs/build/packaging/built-on-noorle.md): The credential: your product's name on the door, and the platform it runs on named underneath. - [How plugins run](https://noorle.com/docs/build/plugins/overview.md): Noorle plugins are WASI Preview 2 components run on Wasmtime: the .npack archive, admission validation, tool discovery, the sandbox, and resource limits. - [When to build a plugin](https://noorle.com/docs/build/plugins/when-to-build.md): Decide between a built-in capability, a connector, and a WASM plugin — what each one covers, and the cost of choosing the last one. - [Plugin quickstart](https://noorle.com/docs/build/plugins/quickstart.md): Scaffold a plugin with the Noorle CLI, build it to a WASI Preview 2 component, upload the archive in the Portal, and call the tool. - [Project structure](https://noorle.com/docs/build/plugins/project-structure.md): What a plugin project contains — wit/world.wit, the implementation, noorle.yaml, build.sh — and which file drives what. - [noorle.yaml reference](https://noorle.com/docs/build/plugins/configuration.md): The keys the platform reads from a plugin's noorle.yaml — schema_version, metadata, permissions, resources, and credentials. - [Permissions and the sandbox](https://noorle.com/docs/build/plugins/permissions.md): What a Noorle plugin can reach: default-deny policy, host allowlisting, the three storage mounts, environment keys, host-boundary credential injection, and resource limits. - [Publishing and versions](https://noorle.com/docs/build/plugins/publishing.md): Upload a plugin through the Portal or the management API, how version activation works, and how to roll back. - [Rust](https://noorle.com/docs/build/languages/rust.md): Build a Noorle plugin in Rust: the wasm32-wasip2 target, wit-bindgen, the waki HTTP client, and the cargo build the CLI runs for you. - [Python](https://noorle.com/docs/build/languages/python.md): Build a Noorle plugin in Python: componentize-py, uv, generated WASI bindings, and the two-step build that produces a WASI Preview 2 component. - [JavaScript](https://noorle.com/docs/build/languages/javascript.md): Build a Noorle plugin in JavaScript: ComponentizeJS and jco, the StarlingMonkey runtime, native fetch, and exporting functions as tools. - [TypeScript](https://noorle.com/docs/build/languages/typescript.md): Build a Noorle plugin in TypeScript: the two-stage tsc then jco componentize build, WASI type declarations, and native fetch. - [Go](https://noorle.com/docs/build/languages/go.md): Build a Noorle plugin in Go: TinyGo targeting wasip2, wit-bindgen-go, the generated Exports struct, and the bundled WIT package the build produces. - [API Overview](https://noorle.com/docs/reference/introduction.md): Noorle's three request surfaces: the management API at api.noorle.com, MCP gateways for tool access, and agent gateways for A2A messaging - [Authentication](https://noorle.com/docs/reference/authentication.md): How to authenticate the Noorle management API with API keys or the OAuth device flow, and how MCP and agent gateways authenticate callers - [Errors and Limits](https://noorle.com/docs/reference/errors-and-rate-limits.md): Error shapes and status codes for the Noorle management API, JSON-RPC error codes for MCP and A2A gateways, and the rate limits and account quotas Noorle enforces - [List Capabilities](https://noorle.com/docs/reference/rest/capabilities-list.md): GET /v1/capabilities returns the plugins, built-ins, and connectors in your account, paginated by limit and offset - [Upload Plugin](https://noorle.com/docs/reference/rest/plugins-upload.md): POST /v1/capabilities/upload takes a .npack archive as multipart form-data and registers a new plugin version - [Device Authorization](https://noorle.com/docs/reference/rest/oauth-device-authorize.md): POST /oauth/device/authorize starts the OAuth device flow and returns a device code, user code, verification URI, and polling interval - [Get Token](https://noorle.com/docs/reference/rest/oauth-token.md): POST /oauth/token exchanges an approved device code for a Noorle JWT access token — the only grant type this endpoint accepts - [MCP Protocol](https://noorle.com/docs/reference/mcp/overview.md): Noorle's MCP gateway surface: Streamable HTTP transport, tools-only capabilities, session posture, rate limits, and what is not implemented - [tools/list](https://noorle.com/docs/reference/mcp/tools-list.md): Discover a Noorle MCP gateway's tools, with cursor pagination, cache freshness metadata, autonomy annotations, and per-caller tool withholding - [tools/call](https://noorle.com/docs/reference/mcp/tools-call.md): Execute a tool on a Noorle MCP gateway, with the autonomy outcomes, billing checks, and error codes a caller has to handle - [A2A Protocol](https://noorle.com/docs/reference/a2a/overview.md): A2A 1.0 over JSON-RPC on Noorle agent gateways: the eleven methods, endpoints, streaming, extensions, and authentication - [Agent Card](https://noorle.com/docs/reference/a2a/agent-card.md): The public A2A agent card at /.well-known/agent-card.json — interfaces, capabilities, Noorle extensions, and the bearer security scheme - [SendMessage](https://noorle.com/docs/reference/a2a/message-send.md): Send a message to a Noorle agent over A2A and wait for the complete result — a Task or a Message, depending on how the run ends - [SendStreamingMessage](https://noorle.com/docs/reference/a2a/message-stream.md): Stream an A2A agent run as Server-Sent Events, with the four stream event shapes and how streamed content arrives as artifact updates - [Tasks](https://noorle.com/docs/reference/a2a/tasks.md): Read, cancel, and subscribe to A2A tasks with GetTask, CancelTask, and SubscribeToTask, and the TASK_STATE wire values - [Push Notifications](https://noorle.com/docs/reference/a2a/push-notifications.md): Register a webhook and have the agent gateway POST task updates to it, with the delivery guarantees each kind of update carries - [CLI Overview](https://noorle.com/docs/reference/cli/overview.md): What the noorle CLI does — scaffold, build, pack, and deploy WASM plugins — and what it deliberately does not do - [CLI Installation](https://noorle.com/docs/reference/cli/installation.md): Install the noorle CLI on Linux or macOS with the install script, or download a release binary directly for Windows - [CLI Commands](https://noorle.com/docs/reference/cli/commands.md): Complete noorle CLI command reference: login, logout, check-update, and the eight plugin subcommands with their flags - [CLI Workflows](https://noorle.com/docs/reference/cli/workflows.md): The noorle CLI plugin development loop from scaffold to deploy, the project files it expects, and how to script it in CI ## OpenAPI Specs - [openapi](https://noorle.com/docs/api-reference/openapi.json) ## Optional - [Portal](https://platform.noorle.com) - [Support](https://noorle.freshdesk.com/)