action1-mcp
The Action1 MCP Server provides read-only access to Action1 endpoint inventory, patch visibility, and policy automation data through the Model Context Protocol.
action1_navigate– Discover available tools organized by domain (organizations, endpoints, policies, updates).action1_list_organizations– List all Action1 tenants accessible to the configured credentials; org IDs returned are required by other tools.action1_list_endpoints– List managed devices in an organization, including hostname, OS, status, last-seen time, and group membership (up to 500 results).action1_get_endpoint– Get full details for a single endpoint — hardware info, agent version, last contact, group memberships, and custom attributes. Renders as an interactive device-summary card in MCP Apps hosts.action1_list_missing_updates– Identify missing OS and application patches across endpoints, with severity, affected endpoint counts, and KB/CVE references (up to 500 results).action1_list_policies– View automation, deployment, and remediation policies configured in an organization.
All current tools are read-only. Write operations (e.g., deploying patches, triggering automation) are planned for a future release.
Action1 MCP Server
MCP server for Action1 — endpoint inventory, patch visibility, and policy automation via the Model Context Protocol.
Read-only in v1. Deploy / automation surface is intentionally separated to a later release for blast-radius reasons (a bad policy push can brick endpoint fleets).
Tools
Tool | Description |
| Discover available tools by domain (organizations / endpoints / policies / updates) |
| List Action1 tenants accessible to the configured credentials |
| List managed devices in an organization |
| Get a single endpoint by id |
| List missing OS/application patches across endpoints — Action1's headline value-prop |
| List automation / policy / remediation rules |
API surface maps to PSAction1 (Action1's MIT-licensed PowerShell module). When the v1 surface earns its keep, write tools (deploy, requery, package upload) come in v2 behind separate review.
Interactive Device Card (MCP Apps)
action1_get_endpoint renders as an interactive device-summary card in MCP
Apps hosts (Claude Desktop/web) — status, OS, user, IP, agent version,
reboot-required, and missing-update counts at a glance; plain-JSON behavior is
unchanged in other hosts. The card is read-only (matching the v1 tool surface),
neutral by default, and brandable via window.__BRAND__ injection or
MCP_BRAND_* env vars (MCP_BRAND_NAME, MCP_BRAND_LOGO_URL,
MCP_BRAND_PRIMARY_COLOR, MCP_BRAND_ACCENT_COLOR, MCP_BRAND_BG,
MCP_BRAND_TEXT) — no rebuild needed.
Related MCP server: datto-bcdr-mcp
Usage
Claude Desktop (MCPB)
Install via the MCPB bundle from the latest release.
Required credentials (created in Action1 → Settings → API Credentials, non-recoverable on creation — copy immediately):
API Key (Client ID)
Secret
Region (
NorthAmericadefault; alsoEurope,AsiaPacific,Australia)Optional default organization id (for single-tenant use)
Stdio (direct)
ACTION1_API_KEY=... \
ACTION1_SECRET=... \
ACTION1_REGION=NorthAmerica \
ACTION1_DEFAULT_ORG_ID=org-... \
npx -y github:WYRE-AI/action1-mcpHTTP (gateway mode)
MCP_TRANSPORT=http PORT=8080 AUTH_MODE=gateway \
docker run -p 8080:8080 ghcr.io/wyre-ai/action1-mcp:latestPer-request credentials via headers:
X-Action1-API-KeyX-Action1-SecretX-Action1-RegionX-Action1-Default-Org-Id
Architecture
src/
├── index.ts # stdio + HTTP transports, tool dispatch
├── card.builder.ts # MCP Apps device-card normalization + brand injection
├── resources.ts # resources/list + resources/read (ui:// device card)
├── generated/
│ └── device-card-html.ts # committed vite single-file bundle (npm run build:ui)
├── sdk/
│ └── action1-client.ts # embedded REST + OAuth client (factor-out candidate
│ # if surface crosses ~20 tools / 2+ domains)
├── utils/
│ ├── client.ts # credential resolution (env vs gateway headers)
│ └── types.ts # DomainHandler interface
├── domains/ # one file per resource type
│ ├── organizations.ts
│ ├── endpoints.ts
│ ├── policies.ts
│ └── updates.ts
└── __tests__/ # domain tests + MCP Apps contract tests
ui/ # device-card source (index.html + device-card.ts)Per-request credential isolation via AsyncLocalStorage — concurrent requests in HTTP mode never share credentials through process.env.
Development
npm install
npm run build
npm test
npm run dev # tsc --watch
npm run lint # eslint
npm run typecheckLicense
Apache-2.0. See LICENSE.
Available Tools
6 toolsaction1_get_endpointA
Get a single endpoint by id, with full detail: hardware, installed agent version, last contact, group memberships, custom attributes.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint_id | Yes | Action1 endpoint id (required). | |
| organization_id | No | Organization id scope. Defaults to ACTION1_DEFAULT_ORG_ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It does disclose the response content (hardware, agent version, last contact, group memberships, custom attributes), but it omits error behavior, authentication requirements, or rate limits. This adds some value but not complete behavioral transparency.
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 one concise sentence that leads with the primary action and then lists the included details. It is front-loaded and contains no unnecessary words, 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?
Despite lacking annotations and an output schema, the description covers the essential purpose and response fields, which is sufficient for a simple read operation. Missing error handling or alternative guidance are minor gaps given the tool's simplicity, so a 4 is warranted.
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% for both parameters, so the schema already documents them. The description's mention of 'by id' adds no new semantic meaning beyond what the schema provides, resulting in the baseline score of 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 gets a single endpoint by id, which is a specific verb+resource+scope. The included detail list (hardware, agent version, etc.) distinguishes it from sibling tools like action1_list_endpoints.
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 for retrieving one endpoint's full details, but it does not explicitly state when to prefer this over action1_list_endpoints or any exclusions. No explicit alternatives or when-not-to-use instructions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
action1_list_endpointsA
List all endpoints (managed devices) in an Action1 organization. Returns id, hostname, OS, status, last-seen, and group membership. Use the organization id from action1_list_organizations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default 100, max 500). | |
| organization_id | No | Action1 organization id. If omitted, uses ACTION1_DEFAULT_ORG_ID from credentials. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist. The description describes a read operation without side effects. It does not disclose potential permissions or rate limits, but the tool's simplicity minimizes risk.
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 concise sentences: first states purpose and return fields, second gives a usage hint. No unnecessary words.
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?
The description lists key return fields and mentions the prerequisite. It could mention limit pagination behavior, but the schema already details the limit parameter. Adequate for a simple list 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 baseline is 3. The description adds minor value by referencing 'action1_list_organizations' for the organization_id, but does not elaborate beyond the schema.
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 states 'List all endpoints' with a specific verb and resource, and lists return fields. It implies distinction from sibling 'action1_get_endpoint' which likely fetches a single endpoint, but does not explicitly differentiate.
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?
It provides a prerequisite: 'Use the organization id from action1_list_organizations.' However, it lacks guidance on when not to use this tool or alternatives for filtering or detailed queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
action1_list_missing_updatesA
List missing OS / application patches across endpoints in an Action1 organization. Returns update id, severity, affected endpoint count, KB/CVE references. Use org id from action1_list_organizations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default 100, max 500). | |
| organization_id | No | Organization id. Defaults to ACTION1_DEFAULT_ORG_ID from credentials if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the return fields (update id, severity, affected endpoint count, KB/CVE references) and implies a read-only operation, but it does not mention pagination, rate limits, or potential side effects, which are not expected for a list operation. It adds some value but is not rich.
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 compact sentences convey purpose, scope, return fields, and prerequisite. No unnecessary words.
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?
The tool is simple with optional parameters; the description covers the main purpose, return fields, and a source for the org id. It does not elaborate on output structure or edge cases, but with no output schema and such a focused task, it is sufficiently complete.
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?
The schema already documents both parameters with 100% coverage. The description adds useful guidance by pointing users to action1_list_organizations for the org id, which goes beyond the schema's default value explanation.
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 uses a specific verb 'List' and clearly identifies the resource 'missing OS / application patches across endpoints in an Action1 organization,' distinguishing it from sibling tools like action1_list_endpoints or action1_list_organizations. It also specifies the return fields, further clarifying scope.
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?
It provides clear context: this tool is for listing missing patches and notes that the org id can be obtained from action1_list_organizations. However, it does not explicitly state when not to use this tool or name alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
action1_list_organizationsA
List all Action1 organizations (tenants) accessible to the configured credentials. Use this first when working with multi-tenant data — the returned org IDs are required by other tools (list_endpoints, list_policies, list_missing_updates).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions 'accessible to configured credentials', hinting at auth. Does not detail return format or pagination, but as a simple list tool, it is adequate for understanding behavior.
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, front-loaded with purpose, then provides usage guidance. Every sentence earns its place—no fluff.
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 no output schema, description explains primary output (org IDs) and positions tool as prerequisite for others. Lacks detail on additional fields, but sufficient for a simple list tool with zero parameters.
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?
Input schema has no parameters (0 params, 100% coverage). Baseline of 4 applies. Description adds no parameter info because none exist.
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?
Clearly states it lists all Action1 organizations (tenants) accessible to configured credentials. Differentiates from siblings by specifying that the returned org IDs are required by other tools (list_endpoints, list_policies, list_missing_updates).
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 says 'Use this first when working with multi-tenant data' and that org IDs are required by other tools, providing clear context. Does not explicitly state when not to use, but the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
action1_list_policiesA
List Action1 policies (automations, deployment rules, remediation policies) in an organization. Use org id from action1_list_organizations.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_id | No | Organization id. Defaults to ACTION1_DEFAULT_ORG_ID from credentials if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'list' without disclosing any behavioral traits such as rate limits, authentication requirements, or side effects. The description does not add value beyond the implied read-only nature.
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 concise sentences with no extra words. The first sentence defines the action and scope, the second gives practical guidance. Each sentence 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?
For a simple list operation with one optional parameter and no output schema, the description covers the purpose and a key input source. It does not detail output format or whether results are paginated, but completeness is adequate given the tool's 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% and already describes the parameter (organization_id, defaults to env var). The description adds context by stating which sibling tool provides the org id, enhancing understanding.
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 it lists Action1 policies, specifying types like automations, deployment rules, and remediation policies. This distinguishes it from sibling tools that list organizations or endpoints.
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 advises using the org id from the sibling tool 'action1_list_organizations', providing clear context on how to obtain a required input. However, it does not specify when to use this tool versus alternatives.
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. Dates show when Glama detected each change.
3 tool updates
v1.1.2- Added
action1_get_endpoint - Added
action1_list_missing_updates - Added
action1_navigate
3 tool updates
v1.1.0- Removed
action1_get_endpoint - Removed
action1_list_missing_updates - Removed
action1_navigate
6 tool updates
v0.1.0- First observed
action1_get_endpoint - First observed
action1_list_endpoints - First observed
action1_list_missing_updates - First observed
action1_list_organizations - First observed
action1_list_policies - First observed
action1_navigate
TDQS
Each tool targets a distinct resource or action: organizations, endpoints, endpoint detail, policies, and missing updates. The navigation tool is a clear meta-tool for discovery, so there is no overlap or ambiguity.
All tool names follow the same pattern: 'action1_' prefix plus a verb (list/get) and noun (organizations, endpoints, endpoint, policies, missing_updates). Snake_case is used consistently throughout, making the set predictable and uniform.
With six tools, the server is well-scoped for a focused endpoint and patch management visibility platform. Each tool serves a clear information retrieval purpose, and six is within the ideal range for a single domain.
The toolset covers the core lifecycle of reading data: listing organizations, listing/getting endpoints, listing policies, and listing missing updates. It lacks update/delete or apply actions, but the domain appears intended for monitoring and reporting, so the missing operations are minor gaps rather than critical failures.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
Remote MCP server bridging AI clients with the PowerDMARC email authentication Platform.
Cloud-hosted MCP server for secure AI access to enterprise data sources via CData Connect AI.
MCP server for Appcircle mobile CI/CD platform.
Related MCP Servers
- FlicenseAqualityCmaintenanceAn MCP server that connects AI assistants to the NinjaOne remote monitoring and management platform via the REST API v2. It provides tools for device inventory, organization management, alert handling, maintenance scheduling, and automated job execution.221-
- AlicenseNot gradedqualityAmaintenanceAn MCP server for Datto BCDR (Business Continuity and Disaster Recovery), enabling management of backup jobs, restore points, and disaster recovery operations through Datto's API.Apache 2.0
- FlicenseBqualityAmaintenanceAn MCP server for CIPP (Community IT Professionals Platform), enabling MSPs to manage Microsoft 365 tenants, users, policies, and security settings through CIPP's API.4312-
- AlicenseNot gradedqualityAmaintenanceAn MCP server for Blackpoint Cyber MDR platform, enabling management of security monitoring, threat detection, and incident response through Blackpoint's API.Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/WYRE-AI/action1-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server