Skip to main content
Glama
gmansystems

Agent Stack Directory

Agent Stack Directory: MCP server and open dataset

An open dataset of infrastructure tools for AI agents (cloud browsers, sandboxes, memory, search APIs, email, integrations, payments, voice, observability, frameworks and auth) plus a small MCP server so AI coding tools can query it while you build.

Tools

Tool

Input

Returns

search_tools

query?, category?, open_source?, limit? (1 to 50, default 10)

Matching tools ranked by keyword match

get_tool

tool (slug or name)

Summary, official site, open-source flag, last link check, alternatives in the same category

compare

tools (2 to 4 slugs or names)

Side-by-side table, notable differences, head-to-head page URL when one exists

list_categories

none

Every category with key, description and tool counts

Every tool is read-only. Results come back as readable text plus structuredContent JSON.

Example prompts:

  • "Which sandboxes for running agent code are open source?"

  • "Compare E2B and Daytona."

  • "What are the alternatives to Browserbase?"

Listed in the official MCP Registry as com.agentstackdirectory/agent-stack-directory. Server card: https://agentstackdirectory.com/.well-known/mcp/server-card.json

Related MCP server: Hermes Atlas MCP Server

Install (remote, nothing to run locally)

Claude Code

claude mcp add --transport http agent-stack-directory https://agentstackdirectory.com/mcp

Cursor

.cursor/mcp.json in your project, or ~/.cursor/mcp.json for all projects:

{
  "mcpServers": {
    "agent-stack-directory": {
      "url": "https://agentstackdirectory.com/mcp"
    }
  }
}

VS Code

.vscode/mcp.json in your workspace:

{
  "servers": {
    "agent-stack-directory": {
      "type": "http",
      "url": "https://agentstackdirectory.com/mcp"
    }
  }
}

Or from a terminal:

code --add-mcp '{"name":"agent-stack-directory","type":"http","url":"https://agentstackdirectory.com/mcp"}'

Install (local, stdio)

Needs Node 18 or newer. npx builds the server from this repository on first run.

Claude Code

claude mcp add agent-stack-directory -- npx -y github:gmansystems/agent-stack-directory

Cursor

{
  "mcpServers": {
    "agent-stack-directory": {
      "command": "npx",
      "args": ["-y", "github:gmansystems/agent-stack-directory"]
    }
  }
}

VS Code

{
  "servers": {
    "agent-stack-directory": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "github:gmansystems/agent-stack-directory"]
    }
  }
}

From a clone

git clone https://github.com/gmansystems/agent-stack-directory
cd agent-stack-directory
npm install
node dist/stdio.js

Environment variables (optional):

Variable

Default

Purpose

AGENT_STACK_DATA_URL

https://agentstackdirectory.com/data.json

Where to fetch the dataset

AGENT_STACK_DATA_FILE

unset

Read a local JSON file instead, for offline use, e.g. data/agent-stack-directory.json

The stdio server caches the dataset in memory for 10 minutes and keeps serving the last good copy if a refresh fails.

Dataset

data/agent-stack-directory.json holds categories and listings. Each listing has:

Field

Meaning

slug

Stable identifier, used in directory URLs

name

Product name

url

Official site

category

Category key (see categories)

summary

One plain sentence on what it does, written from the vendor's own site

tagline

The vendor's own tagline

open_source

true when the product is marked open source

added

Date added to the directory

verified

Date the official link was last checked

CSV copies: data/agent-stack-directory.csv and data/categories.csv. Refresh the snapshot with npm run snapshot.

Sponsorship never changes the data or the search ranking. The dataset has no sponsored fields.

Development

npm install
npm test                 # unit tests plus MCP client tests over stdio and Streamable HTTP
npm run test:remote      # live check of https://agentstackdirectory.com/mcp with the MCP client
npm run build:worker     # bundle src/worker.ts for the Cloudflare Pages Function

Layout:

  • src/core.ts: data loading and the tool logic, no I/O

  • src/server.ts: MCP server definition (official TypeScript SDK)

  • src/stdio.ts: stdio entry point (agent-stack-directory-mcp bin)

  • src/worker.ts: stateless Streamable HTTP handler for Cloudflare Workers or Pages Functions

To host your own remote copy on Cloudflare, bundle src/worker.ts and call handleMcpRequest(request, loader) from a Worker.

License

Corrections and new tools: https://agentstackdirectory.com/submit/ or open an issue.

Available Tools

4 tools
compareCompare toolsA
Read-onlyIdempotent
Inspect

Compare 2 to 4 tools side by side by slug or name. Returns a table, notable differences and the head-to-head page when one exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolsYes2 to 4 tool slugs or names, e.g. ['e2b', 'daytona']

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description goes beyond them by disclosing the return shape (a table, notable differences, and a head-to-head page when one exists) — useful since there is no output schema.

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, zero filler. The core action and its constraints come first, with the return-value note following — appropriately front-loaded for a one-parameter tool.

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?

For a simple, single-parameter, read-only tool with full schema coverage and no output schema, the description covers the action, the input range, and the return contents. Minor gaps remain: no note on behavior when a slug is invalid or unmatched.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'tools' parameter is fully documented with type, bounds, and an example. The description's 'by slug or name' restates what the schema already says, adding no syntax or format detail beyond it, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Compare tools side by side') with the input form (slug or name) and cardinality (2 to 4). An agent can immediately tell this is a multi-tool comparison rather than a lookup, but the description never names the siblings it differs from (get_tool, search_tools).

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

Usage Guidelines3/5

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

The 2-to-4 constraint implies a multi-tool comparison scenario, and the mention of the head-to-head page hints at intended use, but there is no explicit 'use this when...' or 'use get_tool instead for a single tool' guidance. Usage is inferable rather than stated.

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

get_toolGet one toolA
Read-onlyIdempotent
Inspect

Get the full listing for one tool by slug or name: summary, official site, open-source flag, last link check, and the alternatives in its category.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesTool slug or name, e.g. 'e2b' or 'Browserbase'

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds behavioral value by listing the returned fields (summary, official site, open-source flag, last link check, alternatives), which helps the agent decide whether to call it. It does not cover error behavior or auth.

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?

A single front-loaded sentence that states the verb, scope, and return payload with no filler. Every clause earns its place by clarifying what 'full listing' contains.

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?

For a simple read-only getter with rich annotations and a fully described parameter, the description is largely complete. It enumerates the returned fields in lieu of an output schema, though it omits not-found behavior and slug/name disambiguation, which keeps it from a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so the single 'tool' parameter is fully documented in the schema with examples. The description repeats 'by slug or name' without adding format, case-sensitivity, or preference details beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Get) and resource (one tool) and enumerates the returned fields, so the agent knows exactly what data comes back. It does not explicitly name sibling tools, but 'one tool by slug or name' implicitly contrasts with search_tools, compare, and list_categories.

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

Usage Guidelines3/5

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

Provides implied usage: call when you have a specific tool identifier and need its full details. No explicit when-to-use or when-not-to-use guidance, and no alternatives named, so the agent must infer the routing from the description.

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

list_categoriesList categoriesA
Read-onlyIdempotent
Inspect

List every category (layer of the agent stack) with its key, description and tool counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds value beyond them by disclosing the returned fields (key, description, tool counts), which matters since there is no output schema, though it says nothing about result size or whether counts are live.

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?

One sentence, front-loaded with the verb and resource, with the parenthetical definition and return fields appended rather than buried. Nothing is wasted.

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?

For a no-arg, read-only listing tool with full annotation coverage and no output schema, the description conveys enough: what a category is and what each entry contains. Minor gaps are staleness/freshness of counts and result volume.

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 tool takes zero parameters, so per the baseline there is nothing to disambiguate. The description correctly implies no filtering argument is available, which is the only semantic question here.

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

Purpose4/5

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

Specific verb+resource ('List every category') and it defines the domain term ('layer of the agent stack') plus the payload returned. It does not name or contrast with siblings like get_tool or search_tools, so it stops short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the shape of the tool: a zero-parameter enumeration of categories. There is no explicit when-to-use versus when-not, and no routing to get_tool for drilling into a single tool or search_tools for filtered lookup.

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

search_toolsSearch agent infrastructure toolsA
Read-onlyIdempotent
Inspect

Search Agent Stack Directory for AI agent infrastructure tools by keyword, with optional category and open-source filters. Omit query to list every tool in a category.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results, default 10
queryNoKeywords, e.g. 'headless browser', 'vector memory', 'email inbox for agents'
categoryNoCategory key or name from list_categories, e.g. 'browsers' or 'Sandboxes'
open_sourceNotrue for open-source tools only, false to exclude them

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds the omit-query browsing behavior, but says nothing about result ordering, relevance ranking, or how limit interacts with paging.

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 with no filler, and the primary action is front-loaded before the optional-filter and browse-mode details. Every clause carries usable information.

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?

For a four-optional-parameter, read-only search tool with no output schema, the description covers what it searches, the filter axes, and the no-query mode. It stops short of describing result shape or ordering, but that is a minor omission given the low complexity and full annotation coverage.

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 the baseline is 3. The description adds meaning beyond the schema by explaining the interaction between query and category (omitting query makes category an exhaustive listing rather than a filter), and by characterizing category/open_source as optional filters.

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?

States a specific verb (Search) and resource (Agent Stack Directory of AI agent infrastructure tools), plus the filter dimensions. It is clearly distinguishable from siblings like get_tool (single retrieval), compare, and list_categories without opening any schema.

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?

Gives explicit operational guidance: 'Omit query to list every tool in a category,' which covers a browse-mode use case an agent would otherwise have to guess. It does not, however, name when to prefer get_tool or compare over search, so no exclusions or alternatives are stated.

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. 4 tool updatesv0.1.0
    • First observedcompare
    • First observedget_tool
    • First observedlist_categories
    • First observedsearch_tools

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

The four tools occupy clearly distinct roles: search_tools for discovery, get_tool for single-item detail, compare for side-by-side evaluation, and list_categories for taxonomy browsing. There is no functional overlap, so an agent can select unambiguously.

Naming Consistency4/5

Three tools follow a clean verb_noun pattern (search_tools, get_tool, list_categories) in consistent snake_case. The lone 'compare' is a bare verb that breaks the pattern slightly, but it remains readable and idiomatic.

Tool Count4/5

Four tools is well-scoped for a read-only directory server, with each tool earning its place. It is on the lean side but not thin enough to feel incomplete for the domain.

Completeness4/5

The surface covers the core directory workflows: browse categories, search/filter tools, fetch full listings, and compare tools. Minor gaps like global cross-category listing or browsing alternatives without a specific category exist, but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Search and discover 500+ tools, APIs, and services for AI agents. Browse 15 categories, get recommendations, and access structured metadata including auth methods, free tiers, and example calls.
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to find the right tool from a vague, misspelled, or rambling description by searching a library of tools and returning ranked matches with fit grades, links, and evidence.
    1
    MIT