Oakallow

io.github.oakallowPublished by GitHub account oakallowv1.1.0Updated Oct 24, 2026

Runtime permission, approval, and audit layer for AI agent tool execution.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowSecurity & Monitoring

Overview

AI-generated overview

Hosted MCP server that adds a permission, human-approval and audit checkpoint in front of AI agent tool calls.

What you can do
  • List the tools available to the signed-in user in an organization and check whether a given tool call would be allowed, need approval, or be blocked
  • List pending approval requests and poll the status of a request by its reference number
  • Call organization-defined governed tools, which creates an approval request and returns a reference to poll, or a verdict of allowed, requires approval or disabled
  • Read signed decision receipts for each verdict and preflight resources for connector status and whether a governed call would be funded
  • Forward approved calls to MCP servers registered through the OakGuard gateway, once each
When to use it
Use it when an agent should not act unsupervised: you want risky tool actions gated behind a human approver with MFA, every decision recorded in an audit log, and a signed receipt proving what was allowed or blocked. It is a governance layer beside other connectors, not a replacement for them.
Requirements
A remote Streamable HTTP endpoint with no anonymous access. An Oakallow account is required, either via interactive OAuth 2.1 (PKCE) with the mcp:read and mcp:write scopes, or a pre-issued oak_agent_ bearer token for autonomous agents, provisioned by an owner or admin. Multi-org accounts must pass the org argument, typically taken from an org-specific skill downloaded from the dashboard.
Before you install
It sits in the path of actions that change things: governed tool calls create approval requests, and OakGuard forwards approved calls to downstream servers, so review which tools are enabled. The oak_agent_ bearer token is shown only once and is scoped to one organization; store it carefully. Approval reasons are stored after redaction of SSN, card, email, phone and address patterns, but avoid putting sensitive detail in them. Checking an unregistered tool auto-creates a gated draft entry…

Installation

In SourceWeft

  1. Open Oakallow in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.oakallow%2Foakallow/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "oakallow": {
      "type": "http",
      "url": "https://api.oakallow.io/mcp"
    }
  }
}

README

Oakallow MCP Server

[CI]

Runtime permission, approval, and audit governance for AI agent tool execution.

Oakallow is a hosted remote MCP server. It sits between an agent and the actions it wants to take, so that a specific action can be checked, gated behind human approval when it is risky, authorized with a single-use signed token, and recorded in an immutable audit log, at the moment of execution.

What this connector is for

Oakallow injects a governance checkpoint into a workflow that may also use other connectors. An agent does its investigative work (for example, looking up an account through another connector), forms a recommendation, and calls Oakallow to request approval for the action. A human approver then decides in the Oakallow dashboard or mobile app, under enforced multi-factor authentication.

The connector is a requester and pass-through, not a decider:

  • It can list your tools, check permissions, request approvals, return a signed receipt for every decision, and, for servers connected through the OakGuard gateway, forward a call once it is approved.
  • It cannot approve or deny on a human's behalf. Decisions happen on a separate, MFA-bound surface (the dashboard), never over the connector.

Standard tools

ToolPurposeReads only
list_my_toolsEnumerate the tools available to the signed-in user in the named org (org arg; see below)yes
check_permissionAsk whether a given tool call would be allowed, require approval, or be blocked (takes an org arg; see below)yes*
list_pending_approvalsList approval requests still awaiting a human decisionyes
check_approval_statusPoll a pending approval request by reference numberyes

* check_permission returns a read-only verdict only. It does NOT create an approval or a reference. (The approval and its REF-… are created when you call the gated tool itself through oakallow.) It does have one side effect by design: checking an unregistered tool makes Oakallow auto-create a gated draft entry for it (with conservative, fail-closed defaults) so the eventual call is governed and the owner can triage it from the dashboard. This is intentional: an unknown tool is never silently trusted.

Choosing an organization

An Oakallow account can have more than one organization, and each org sets its own tools, permission rules, approvers, and alert paths. So an action must be checked against the right org, because that is what determines who gets asked to approve and under which rules.

check_permission and list_my_tools accept an optional org argument: the org's external id (e.g. org_oak_…). The rule:

  • One org on your account: omit org. The connector uses your only org.
  • More than one org: pass org naming the org the action targets. If you omit it, the call is refused with guidance rather than guessing the wrong org.

You don't ask the connector to list your orgs; there is no org-enumeration tool. Instead, download the org-specific skill from that org's dashboard. Each org's skill carries its own org id and tells the agent to pass it. Install one skill per org you operate in; the agent reads the matching skill and passes the right org on every call.

The connector authorizes the org you pass against your signed-in identity: you can only target an org you can actually act in (you are its team owner/admin, or you are in that org's approver group). Passing an org you don't have access to is refused. The skill is a convenience, not a grant of access.

Calling a governed tool

Alongside the four standard tools, tools/list returns the customer-defined tools your org has approved. Calling one of those through oakallow is how an approval gets created: there is no separate "request approval" tool. A direct tool accepts two optional arguments, plus org as above:

ArgumentPurpose
reasonShort, non-sensitive summary of why the call is being made. This is what the human approver reads. Oakallow redacts SSN, card, email, phone, and address patterns before storing it.
agentAn identifier for the calling agent (a name, code, or number). The org's governance report uses it to show which agent submitted each call instead of attributing everything to the signed-in account. Send the same value consistently. Ignored when the caller authenticates with an oak_agent_ token, whose own identity is used.

The response is one of allowed (run the action on its own connector), requires_approval (an approval request was created and a REF-… is returned for polling with check_approval_status), or disabled (stop; the action is blocked by policy).

Signed decision receipts

Every permission decision on an approved tool returns a signed decision receipt, whatever the verdict: allowed, requires_approval, and disabled are all signed the same way. The receipt is an HMAC-SHA256 signature over the decision, the tool, a hash of the call's parameters, the tenant, resource, method, and org, and it is stored so the decision can be re-verified later. A disabled receipt is the proof that oakallow blocked the action.

If a decision cannot be signed or recorded, the check fails closed: oakallow returns no verdict rather than one it cannot prove.

OakGuard gateway

By default oakallow is a checkpoint beside your tools: it decides, and you execute. OakGuard lets an org register its own MCP servers with oakallow so that oakallow becomes the transport to them instead:

  • OAuth 2.1 is mandatory downstream. Registration is refused unless the server advertises the OAuth 2.1 essentials (authorization code with S256 PKCE, RFC 9728 and RFC 8414 discovery, no password grant). oakallow registers itself as the server's OAuth client and keeps the downstream tokens encrypted.
  • Tools appear under their real names and schemas in tools/list. Newly discovered tools land as drafts that require approval until an admin enables them.
  • A call is forwarded only after it is allowed by the permission rules or approved by a human. Each approval rides downstream exactly once.
  • Payloads pass through but are not kept. oakallow carries the request and response over TLS on both legs and does not store or log them. Receipts and the audit log record the decision, not the data.

Servers are registered, paused, and revoked from the OakGuard tab in the dashboard.

Resources

oakallow exposes two read-only MCP resources. They are preflight signals an agent (or a client UI) can read before committing to route an action through oakallow. Both require the mcp:read scope, neither is a tool call, and neither is billed.

ResourceReturnsReads only
oakallow://statusLiveness of the connector for the signed-in session: status, endpoint, server version, protocol version, and the granted scopes. A successful read is itself the proof the session is valid. No account identity or PII is returned.yes
oakallow://creditsWhether a governed call would currently be funded for the org this session resolves to, so an agent can fail fast before requesting an approval that could not be paid for.yes

oakallow://credits is scoped to the caller's own billing org and resolves it the same way a real tool call does, so a can_fund: true result genuinely means the eventual approval will be funded (including team-pool fallback). It returns only a can_fund boolean and the org's name and external id. It deliberately discloses no balance figures: dollar amounts are surfaced only to the team owner in the dashboard, never over the connector. If the session resolves to no org, or to more than one, it returns can_fund: false with a reason rather than guessing which org would be billed.

Connecting

There is no anonymous access. An oakallow account is the prerequisite for connecting, and the endpoint accepts two credential types: interactive OAuth 2.1 (PKCE) for a human-driven client, or an oak_agent_ bearer token for an autonomous agent (see Autonomous agents below).

For the human-driven OAuth path, add https://api.oakallow.io/mcp as a custom connector in your MCP client (Claude, Claude Desktop, Cowork, ChatGPT, or any Streamable HTTP MCP host). You will be redirected to sign in to Oakallow and approve the requested scopes:

  • mcp:read: list tools, view pending approvals, check permissions, read activity.
  • mcp:write: create approval requests and mint run tokens.

You don't configure any of this by hand: an unauthenticated request returns 401 with a WWW-Authenticate header pointing to the endpoint's RFC 9728 protected-resource metadata (/.well-known/oauth-protected-resource), so a spec-compliant MCP client discovers the authorization server and runs the OAuth flow automatically.

See examples/ for a Claude Desktop config, an OAuth flow walkthrough, and an oak_agent_ token walkthrough. tools.json has the exact schemas of the standard tools.

Autonomous agents (oak_agent_ token)

OAuth assumes a human can complete the interactive sign-in. An autonomous agent that runs on its own authenticates to the same https://api.oakallow.io/mcp endpoint with a pre-issued bearer token instead: Authorization: Bearer oak_agent_.... The endpoint checks for an oak_agent_ bearer before the OAuth provider, so no consent screen or interactive login is involved.

An agent identity is scoped to one organization, can submit and check permission requests but never approve, is rate-limited per identity, and is stored only as a SHA-256 hash (the raw token is shown once at creation). Provision one from the dashboard's Account → Agents page (owner/admin only). See oakallow.io/info/agents for the full model.

Skill

SKILL.md is an agent skill that documents when and how to use the oakallow tools: the request, approve, poll, and act workflow, how to phrase approval reasons, and what to do on allowed, requires_approval, or disabled verdicts. Point your agent at it to govern tool actions correctly.

Trigger prompts

PROMPT.md has short, copy-paste one-liners to drop into your agent's system prompt so it actually consults the skill. The skill is the procedure; a trigger prompt is what makes the agent look. Three options, from "gate every tool call" to "gate a customer-named set," plus an inline example pattern for a real request.

How a governed call works

  1. The agent calls the tool through Oakallow with its credential, a reason, and its agent id.
  2. Oakallow resolves the permission rule for the specific tool, tenant, and resource, and signs a decision receipt for the verdict.
  3. If the action is allowed, the agent performs it: on its own connector for a direct tool, or Oakallow forwards it for an OakGuard gateway tool.
  4. If approval is required, an approval request is created, a human is notified, and the agent receives a REF-… to poll. Once a human approves under MFA, the action runs exactly once.
  5. Oakallow writes an immutable audit row capturing the outcome.

For direct tools, Oakallow lives outside the execution path: it governs and records what was reported, and it does not run your tools or receive your tool parameters beyond a PII-scrubbed reason. For OakGuard gateway tools, it is the transport for approved calls but still keeps none of the payloads.

Outside MCP, the REST API (POST /v1/tokens/mint) can also mint a single-use, HMAC-signed run token that binds the tool and its parameters, for your backend to verify before executing.

License

See LICENSE.

Changelog

See CHANGELOG.md.


© Islemonics Studios LLC. Patent pending.

Source: README.md at commit a2c3605

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

2
  1. v1.1.0LatestOct 23, 2026
  2. v1.0.0Sep 16, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts