Oakallow
Server Details
Runtime permission, approval, and audit layer for AI agent tool execution.
- Status
- Healthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- oakallow/oakallow-mcp
- GitHub Stars
- 1
- Server Listing
- Oakallow MCP Server
TDQS
Scored across 5 tools
Each tool targets a distinct operation: checking permission, checking approval status, listing tools, listing approvals, and starting a test. The two approval-related tools are differentiated by scope (one specific REF, one list), so agents are unlikely to misselect.
All tools use a consistent verb_noun snake_case pattern (check_*, list_*, start_*), making the intended action and target clear. Even compound names like 'approval_status' and 'pending_approvals' fit the pattern.
Five tools is a well-scoped size for a focused permissions/approval utility. The count is neither too thin nor overloaded, and each tool has a clear role within the set.
The approval/permission side covers the main queries, but start_test introduces a testing sub-domain without companion tools to retrieve results or check run status. There is also no explicit approve/reject action, though that may be intentionally human-owned.
Available Tools
5 toolscheck_approval_statusARead-onlyIdempotentInspect
Check the status of a pending approval request by REF number. Use this between retries of a tool call that is pending approval — do NOT call the original tool again to check status, that will create a duplicate approval.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | REF number returned from a prior tool call that required approval. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds the warning about duplicate approvals if the original tool is called, which is valuable context. However, it does not detail the response format or possible statuses, but given annotations, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The first sentence states the core purpose, and the second provides critical usage guidance. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-parameter tool with no output schema, the description covers the essential context: when to use it (after a pending approval) and how to avoid misuse. It could optionally mention expected statuses, but is largely complete for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the 'reference' parameter. The description mentions 'REF number' but adds no new meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check the status of a pending approval request by REF number,' specifying the verb 'check' and the resource 'approval request' with the identifier. It distinguishes itself from sibling tools like 'list_pending_approvals' which lists all approvals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to 'Use this between retries of a tool call that is pending approval' and warns against calling the original tool again to check status, preventing duplicate approvals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_permissionARead-onlyIdempotentInspect
Ask whether a given tool call would be allowed, require approval, or be blocked — without actually making the call. Returns the resolved permission verdict and the level it resolved from.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | The oakallow organization external id (e.g. org_oak_…) this action targets. Required when your account has more than one org; optional if you have exactly one. Get it from the org-specific oakallow skill you downloaded for that org. | |
| method | No | Optional method name. | |
| tenant_id | No | Optional tenant external id. | |
| tool_name | Yes | The tool to evaluate. | |
| resource_id | No | Optional resource external id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that the tool returns a permission verdict and resolution level, and emphasizes it does not actually make the call, reinforcing the safe, idempotent nature. It does not contradict annotations and adds context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences with no redundant information. The first sentence states the action and key feature (no call made), and the second describes the return value. Every word earns its place, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters (only 1 required), no output schema, and high annotation coverage, the description is fairly complete. It explains the return (permission verdict and level), but does not mention potential error cases or the relationship to the sibling 'check_approval_status'. Still, it provides enough context for a read-only permission check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all 5 parameters with descriptions. The tool description does not add extra parameter details beyond stating the tool evaluates a given tool call. Baseline is 3, and the description provides no additional param-level insight, so score remains 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to check if a tool call would be allowed, require approval, or be blocked without executing it. It specifies the verb 'ask whether' and the resource 'tool call', and it differentiates from actual execution by noting no call is made. This distinguishes it from sibling tools like 'check_approval_status' which likely deal with existing approvals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (before making a tool call) but does not explicitly exclude alternatives or mention when not to use it. It implies using it as a precautionary step, but lacks comparison to sibling tools like 'check_approval_status' or 'list_pending_approvals'. This still offers good guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_toolsARead-onlyIdempotentInspect
Enumerate the customer-defined tools currently available to the signed-in user in the named org (or their only org if they have one). Returns tool names, descriptions, default permission, and risk level.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | The oakallow organization external id (e.g. org_oak_…) this action targets. Required when your account has more than one org; optional if you have exactly one. Get it from the org-specific oakallow skill you downloaded for that org. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, establishing a safe read operation. The description adds value by specifying that it returns tool names, descriptions, default permission, and risk level, and clarifies scope (user's tools, org). No behavioral contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two sentences that front-load the purpose and scope. Every sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter, no output schema, and annotations cover safety and idempotency, the description is complete. It explains what is returned, the scope (user and org), and handles the single-org vs multi-org case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the single 'org' parameter has a detailed description in the schema. The tool description does not add additional parameter meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: enumerating customer-defined tools. It specifies verb 'enumerate', resource 'customer-defined tools', scope 'available to signed-in user in named org', and output fields. This distinguishes it from sibling tools like check_approval_status or list_pending_approvals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (listing tools for a user in an org) but does not explicitly state when to use this tool versus alternatives. It lacks when-not-to-use guidance or explicit prerequisites beyond the org parameter handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pending_approvalsARead-onlyIdempotentInspect
List approval requests still awaiting a human decision for the signed-in user. Useful for agents picking up an abandoned workflow.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating no side effects. The description adds that it operates for the signed-in user, which is important context. This is adequate but not additional behavioral depth beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, clear sentences with no wasted words. The description is front-loaded with the main action and follows with a use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description covers the purpose, scope (signed-in user), and a usage context. It could mention the output format but is generally complete given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and schema coverage is 100%. The description does not need to explain parameters. The baseline of 4 is appropriate as no additional info is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists approval requests still awaiting a human decision for the signed-in user. It distinguishes from siblings like check_approval_status by implying this is for all pending requests rather than a specific one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Useful for agents picking up an abandoned workflow,' giving a concrete use case. However, it does not explicitly state when to avoid this tool in favor of siblings, leaving some guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_testCInspect
Starts a Testing Run
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | An identifier for the agent making this call (free text — a name, code, or number you use to track your own agents). Lets the oakallow governance report distinguish which agent submitted each call instead of attributing everything to the connector account. Optional but recommended; send the same value consistently per agent. | |
| reason | No | Short non-sensitive summary of why this tool is being called (e.g. "grant_credits requested after verify_coupon"). Oakallow automatically redacts SSN, card numbers, emails, phone numbers, and addresses from this field before storing — do not rely on redaction, avoid putting customer PII here. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotation hints set to false, the description carries the full burden but discloses no behavioral traits. It implies mutation by starting a run but does not explain side effects, idempotency, or resource impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no waste, but it is under-specified. It achieves conciseness at the expense of informativeness, which is closer to minimal viable than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description is insufficiently complete. It does not specify return values, asynchronous behavior, or any post-call effects, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The tool description does not add any parameter-related information, relying entirely on the schema descriptions which are already present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Starts a Testing Run' clearly identifies the action and resource, but it is minimal and does not distinguish the tool from siblings beyond the name. It lacks context on what a testing run entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like check_approval_status or list_pending_approvals. The description does not mention prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
start_test
4 tool updates
- First observed
check_approval_status - First observed
check_permission - First observed
list_my_tools - First observed
list_pending_approvals
Related MCP Connectors
Supervised API-write gateway for AI agents with policy, human approval and execution receipts.
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
Security gateway for AI agents: policy, approval, and audited execution, no secrets shared.
Pre-execution governance for AI agents. Deterministic PASS/FAIL/REVIEW verdicts, replayable proof.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides permission gates and tamper-evident audit logging for AI agent tool executions, with declarative policies, consent ladders, and hash-chained verification.MIT
- AlicenseNot gradedqualityBmaintenanceGates agent tool execution with human approval, audit trails, and replay-resistant permits, enabling safe use of tools in agent loops.MIT
- FlicenseNot gradedqualityCmaintenanceEnables controlled AI-agent access to enterprise-shaped tools with a deny-by-default gated write path, human approval, dry-run execution, and append-only audit logging.1-
- AlicenseAqualityAmaintenanceLocal zero-trust permission gateway for AI agents. Enforces policy-based tool authorization, human approvals, scoped permissions, and cryptographically verifiable audit logs.4115 PyPI5Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.