Skip to main content
Glama
gybob
by gybob

English | 简体中文 | 日本語 | 한국어


AAI Gateway: Unified MCP & Skill Management, Shared Across AI Agents, 99% Context Token Savings

npm version license


What Is It

AAI = Agent App Interface

AAI Gateway is the interaction gateway for Agent Apps.

What is an Agent App? An Agent App is a collection of capabilities that an Agent can use. For example:

  • An MCP Server is an Agent App — it provides a set of tools

  • A Skill package is an Agent App — it provides one or more skills

In AAI Gateway, they are abstracted as Agent Apps under unified management. Import once, and all AI Agents can use them immediately.


Related MCP server: Skillsmith

What Problems Does It Solve

Context Bloat

Traditional: 10 MCPs × 5 tools = 50 full schemas ≈ 7,500 tokens injected into every conversation.

AAI Gateway: each Agent App needs only fewer than 50 tokens for a summary, with details loaded on demand. 99% token savings.

Finding Tools Is Hard

Traditional: search GitHub → read READMEs → copy JSON configs → debug connections → restart Agent.

AAI Gateway: tell your Agent "use AAI to search for xxx" — auto-searches, installs, ready to use.

"Use AAI to search for a browser automation tool"

→ Search → finds Playwright MCP → Agent summarizes a one-line Agent App summary → install → ready to use, no restart needed

"Use AAI to search for a PPT creation skill"

→ Search → finds PPT Skill → uses skill description as Agent App summary → install → ready to use, no restart needed

Duplicate Config

Configure the same thing in Claude Code, Codex, and OpenCode separately? Import once through AAI Gateway, all Agents share instantly.


Quick Start (30 Seconds)

Claude Code:

claude mcp add --scope user --transport stdio aai-gateway -- npx -y aai-gateway

Codex:

codex mcp add aai-gateway -- npx -y aai-gateway

OpenCode — add to ~/.config/opencode/opencode.json:

{
  "mcp": {
    "aai-gateway": {
      "type": "local",
      "command": ["npx", "-y", "aai-gateway"],
      "enabled": true
    }
  }
}

OpenClaw:

openclaw plugins install openclaw-aai-gateway-plugin

Once installed, just tell your Agent what you want to do.


Built-in Tools

Tool

Description

search:discover

Search and install new tools with natural language

mcp:import

Import an MCP Server as an Agent App

skill:import

Import a Skill package as an Agent App

listAllAaiApps

List all registered Agent Apps

enableApp / disableApp

Enable or disable an Agent App per Agent

removeApp

Remove an Agent App

aai:exec

Execute a specific tool within an Agent App

Each imported Agent App generates an app_<app-id> tool that returns the full operation guide and tool list when called.

Preset Agent Apps (auto-discovered when locally installed)

App ID

Name

Description

claude

Claude Code

AI coding assistant for code editing, analysis, and development

codex

Codex

OpenAI-powered AI coding assistant

opencode

OpenCode

AI development assistant for editing files and running commands


Architecture

Architecture


Developers: Get Your Agent App Auto-Discovered

Create an aai.json descriptor and submit it to src/discovery/descriptors/. When a user's local environment meets the discovery.checks conditions, the Agent will auto-discover your Agent App.

{
  "schemaVersion": "2.0",
  "version": "1.0.0",
  "app": {
    "name": { "default": "My App" }
  },
  "discovery": {
    "checks": [
      { "kind": "command", "command": "my-app" }
    ]
  },
  "access": {
    "protocol": "mcp",
    "config": {
      "command": "my-app-mcp",
      "args": ["--stdio"]
    }
  },
  "exposure": {
    "summary": "Use when the user wants to do X."
  }
}

discovery.checks supports three check types: command (command exists), file (file exists), path (directory exists).

Supported protocols: mcp, skill, acp-agent

Welcome to submit a PR to contribute new Agent App descriptors, or open an issue for feedback.

Available Tools

8 tools
aai:execA

Execute any AAI tool action. Read the guide first (call app:*, mcp:import, skill:import, or search:discover) — it contains the required schema and parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
appNoRequired for app tools, omit or use "gateway" for gateway tools.
toolYesTool name within the app, not prefixed with app id.
argsNoArguments for the selected tool.

TDQS

A3.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only says 'Execute' without disclosing whether the action is destructive, requires authentication, or has rate limits. Critical behavioral context is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences: one for purpose, one for prerequisite. No fluff, every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the generic nature and lack of output schema, the description is too terse. It does not explain the output format, error handling, or how to interpret the guide's content. The agent would struggle to use this tool correctly without additional information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by referencing that the 'args' schema comes from a separate guide, which is crucial for understanding how to construct arguments. Without this, the agent wouldn't know that the schema here is generic.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Execute any AAI tool action' with a specific verb and resource. It distinguishes itself from sibling tools like disableApp or skill:import by being the generic entry point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent to 'Read the guide first' and lists the specific calls (app:*, mcp:import, etc.) that contain the required schema. This provides a clear prerequisite, though it does not explicitly exclude use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

disableAppA

Disable one app for the current agent only. If you do not know the app id, call listAllAaiApps first to find it.

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesRequired. The app id to disable. Use listAllAaiApps to look up available app ids.

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description only says 'disable' but does not disclose side effects, reversibility, or impact on other agents. For a destructive action, more transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundancy. Front-loaded with action and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for simplicity: covers purpose, prerequisite, scope. No output schema, so missing return value info. Could mention what happens after disabling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. Description adds value by telling agent to use listAllAaiApps to find the app id, beyond the schema's description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'disable' and resource 'one app' with scope 'for the current agent only'. Distinguishes from siblings like enableApp and removeApp.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states prerequisite: call listAllAaiApps if app id unknown. Does not provide when-not-to-use or alternatives, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enableAppA

Enable or re-enable an app for the current agent. When the user asks to enable, start, turn on, or use a specific app by name, call listAllAaiApps first to check if it is already imported before searching for new tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesRequired. The app id to re-enable. Use listAllAaiApps to look up available app ids.

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description only states action without detailing side effects, permissions, or error cases. Lacks disclosure of re-enable behavior or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with clear front-loading: purpose then usage guideline. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage, and parameter source. Lacks output description, but no output schema exists. Could mention idempotency, but adequate for simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers parameter with description. Description adds value by specifying that app id comes from listAllAaiApps and emphasizing requirement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states action 'enable or re-enable' and resource 'app' for current agent. Distinguishes from siblings like disableApp and removeApp, and includes context to call listAllAaiApps first.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly specifies when to use (when user asks to enable/start/turn on/use app) and provides alternative reference to listAllAaiApps for checking import status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listAllAaiAppsA

List imported apps (MCP servers and skills) for the current agent. This does not include built-in tools like search:discover, mcp:import, or skill:import — those are always available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that built-in tools are excluded, which is a behavioral trait. However, it does not explicitly state that the operation is read-only, though the name 'list' implies it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exceptionally concise with two sentences, front-loading the main purpose and adding a clarifying exclusion. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and no output schema, the description is sufficient. It lists what the tool returns and what it excludes. It could optionally describe the return format, but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so baseline is 4. The description adds no parameter details, which is acceptable given no parameters exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the verb 'list', the resource 'imported apps (MCP servers and skills)', and scope 'for the current agent'. It clearly differentiates from sibling tools by explicitly stating which built-in tools are not included.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states that built-in tools like search:discover, mcp:import, and skill:import are not listed, implying when not to use this tool. However, it does not directly suggest alternative tools for those cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp:importA

Import an MCP server as a GLOBAL app (visible to all projects). For project-level MCP, use your agent's native config instead (e.g. .mcp.json, .cursor/mcp.json). Call this first to get the import guide. Never ask the user for API keys or secrets in chat.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states 'Call this first to get the import guide' without clarifying whether the tool actually imports or just returns instructions. This ambiguity limits transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is relatively concise with three sentences, though the instruction 'Never ask the user for API keys or secrets in chat' is a behavioral directive for the agent, not a tool description, slightly reducing efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema or parameters, the description covers the basic purpose but fails to specify the tool's return value or behavior after invocation, leaving ambiguity about whether it performs the import or only provides a guide.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. Baseline for 0-param tools is 4, and description adds no additional parameter info beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool imports an MCP server as a global app, with a specific verb and scope. It distinguishes from project-level usage by referencing native config files, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance to use native config for project-level MCP, indicating when not to use the tool. However, it does not differentiate from sibling tools like skill:import, though the scope difference is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

removeAppA

Remove one AAI Gateway managed import from all agents. If you do not know the app id, call listAllAaiApps first to find it.

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesRequired. The imported app id to remove globally. Use listAllAaiApps to look up available app ids.
confirmYesRequired. Must be true only after the agent explains the global impact and the user explicitly confirms.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It notes the global scope ('from all agents') and the confirm parameter's schema description requires user confirmation after explaining global impact. This sufficiently discloses the destructive nature and necessary safeguard.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences front-load the action and scope, with the second providing actionable guidance. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the action, prerequisite, and confirmation requirement adequately. It lacks details on reversibility or return format, but is sufficient given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds value by linking the 'app' parameter to listAllAaiApps and emphasizing the global scope, going beyond the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool removes an AAI Gateway managed import from all agents, with a specific verb and resource. It also mentions a prerequisite (calling listAllAaiApps) that distinguishes it from sibling tools like disableApp or listAllAaiApps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises to call listAllAaiApps first if the app id is unknown, providing clear context. However, it does not compare to alternatives like disableApp or state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search:discoverA

Find and install new tools. Call this when: 1. The user explicitly asks to search for or install tools. 2. The user's request cannot be fulfilled by any currently available tool — proactively suggest and search for a suitable tool. Before searching, check listAllAaiApps first — the user may already have the app imported (possibly disabled).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It mentions proactive suggestion and checking listAllAaiApps, implying behavior to avoid duplicates. However, lacks details on installation side effects, permissions, or conflict handling. Good but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three well-structured sentences with bullet-like conditions. No wasted words, front-loaded with purpose. Highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters, no output schema, and moderate complexity, the description covers purpose, usage conditions, and references sibling tool listAllAaiApps. Provides sufficient context for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters, schema coverage 100% (trivially). Baseline is 4 for 0 params. Description adds no parameter info, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Find and install new tools' as a specific verb+resource. It distinguishes from siblings like listAllAaiApps (listing imported apps) and mcp:import (importing specific apps).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists two scenarios: user asking to search/install, and proactive suggestion when no tool available. Also provides a when-not: 'check listAllAaiApps first' to avoid unnecessary search. Excellent guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skill:importA

Import a local skill as a GLOBAL app (visible to all projects). For project-level skills, use your agent's native skill directory instead (e.g. .claude/skills/). Call this first to get the import guide.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full transparency burden. It hints that calling first returns a guide, but it does not explicitly state that the tool does not perform the final import, nor does it disclose side effects, permissions, or auth needs. The name 'import' could mislead agents into thinking the tool actually imports, making transparency moderate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no fluff. It front-loads the main action and includes key usage guidance. Every word adds value, making it efficient for an AI agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and no annotations, the description mostly covers what the tool does and when to use it. However, it leaves ambiguity about the 'import guide' content and next steps. It is fairly complete but could mention that the tool returns instructions rather than performing the import.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters in the schema, so schema coverage is 100% vacuously. The description adds no parameter info, but none is needed. Baseline for zero parameters is 4, and the description provides useful context about the tool's purpose, which is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool imports a local skill as a global app, distinguishing it from project-level skills by recommending a native directory. The verb 'import' and resource 'local skill' are specific, and the contrast with project-level usage makes the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: 'For project-level skills, use your agent's native skill directory instead' and 'Call this first to get the import guide.' This tells the agent when to use this tool vs. alternatives and what to expect after calling it.

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. 8 tool updatesv1.1.11-beta.1
    • First observedaai:exec
    • First observeddisableApp
    • First observedenableApp
    • First observedlistAllAaiApps
    • First observedmcp:import
    • First observedremoveApp
    • First observedsearch:discover
    • First observedskill:import

TDQS

A4/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have distinct purposes (e.g., disableApp vs enableApp, specific imports), but 'aai:exec' is a catch-all that could overlap with other actions, causing mild ambiguity.

Naming Consistency3/5

Names mix colon-separated (aai:exec, mcp:import) and camelCase (disableApp, listAllAaiApps), creating an inconsistent pattern. Though readable, the lack of a uniform convention is noticeable.

Tool Count5/5

Eight tools cover the core functions (list, enable, disable, remove, import, search, execute) without being excessive. The scope is well-contained for a gateway server.

Completeness4/5

The tool set covers key lifecycle operations for apps and imports. Missing explicit update or detail tools, but 'aai:exec' may fill those gaps; minor gap in app detail retrieval.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers