HAOps MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HAOPS_API_KEY | Yes | API key for authenticating with the HAOps API | |
| HAOPS_API_URL | Yes | The URL of the HAOps API server (e.g., http://localhost:3000) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| haops_list_projectsA | List all projects in HAOps |
| haops_create_moduleB | Create a new module in a HAOps project |
| haops_update_moduleB | Update an existing module in a HAOps project |
| haops_create_featureB | Create a new feature in a HAOps module |
| haops_update_featureC | Update an existing feature in a HAOps module |
| haops_create_issueC | Create a new issue in a HAOps feature |
| haops_delete_moduleB | Delete a module from a HAOps project. If the module has child features, requires confirm=true to cascade delete. |
| haops_delete_featureA | Delete a feature from a HAOps module. If the feature has child issues, requires confirm=true to cascade delete. |
| haops_delete_issueA | Delete an issue from a HAOps feature. No confirmation needed (issues are leaf nodes with no children). |
| haops_update_issueB | Update an existing issue in a HAOps feature |
| haops_bulk_update_issuesA | Update multiple issues at once. Useful for batch status changes, priority updates, or reassignments. |
| haops_create_discussionA | Create a discussion thread in a HAOps project. Two modes: (1) Entity-linked — provide discussableType + discussableId to link to a Module/Feature/Issue (no channelId needed). (2) Channel-based — provide channelId (use haops_list_channels to find it). Can combine both. At least one of channelId or discussableType+discussableId is required. |
| haops_list_discussionsA | List discussions in a HAOps project. Filter by entity (Module/Feature/Issue) to find entity-linked discussions, or by channel/status. Essential for the Entity Discussion Protocol — use this to find the discussion linked to a work item before posting. |
| haops_list_channelsA | List all channels in a HAOps project. Use this to discover channel UUIDs needed for creating channel-based discussions via haops_create_discussion. |
| haops_post_messageA | Post a message to a discussion thread in a HAOps project. Markdown is recommended for agent messages — it will be converted to HTML server-side. |
| haops_send_dmB | Send a direct message to a user in a HAOps project. Supports markdown formatting — content will be converted to HTML server-side. |
| haops_get_discussionB | Get detailed information about a specific discussion thread, including metadata and entity linkage. |
| haops_get_discussion_messagesB | Retrieve messages from a discussion thread with pagination. Essential for reading conversation context before responding. |
| haops_list_dm_conversationsA | List all direct message conversations in a project with unread counts and last message previews. |
| haops_get_dm_historyA | Retrieve direct message history with a specific user. Use this to read DM context before replying. |
| haops_update_discussionA | Update discussion properties (title, status, priority, assignment, locking, pinning). Use this to resolve/close discussions or change metadata. |
| haops_mark_dm_readB | Mark all direct messages from a specific user as read. |
| haops_delete_discussionA | Delete a discussion thread. This is permanent and will also delete all messages in the thread. Use with caution. |
| haops_edit_messageA | Edit an existing message in a discussion thread. Only the message author can edit. Useful for correcting typos or updating information. |
| haops_delete_messageA | Delete a message from a discussion thread. Only the message author can delete. This is permanent. |
| haops_list_membersB | List all members of a HAOps project with their roles and activity stats. |
| haops_add_memberB | Add a user as a member to a HAOps project. |
| haops_update_member_roleA | Update a project member's role. Cannot change the owner role. |
| haops_get_activityB | Get activity log for a specific entity (Module, Feature, or Issue) in a HAOps project. Shows who changed what and when. |
| haops_get_audit_logA | Get system-wide audit log (admin only). Shows all changes across the platform with filters. |
| haops_claim_issueA | Claim an issue for work. Checks availability and marks as in-progress. Use before starting implementation. |
| haops_claim_featureA | Claim a feature for work. Checks availability and marks as in-progress. Use before starting implementation on a feature. |
| haops_claim_moduleA | Claim a module for work. Checks availability and marks as in-progress. Use before starting implementation on a module. |
| haops_work_entity_health_checkA | Run health checks on work entities to detect stale, inconsistent, or problematic states. Returns findings with severity and recommendations. |
| haops_list_help_sectionsA | List all help center sections with article counts. Returns published and unpublished sections. |
| haops_list_help_articlesB | List help articles, optionally filtered by section slug. |
| haops_create_help_articleB | Create a new help article in a section. |
| haops_get_help_articleA | Get a help article by slug, including full HTML content. Use this before haops_update_help_article when you need to append to existing content (update is wholesale replace). |
| haops_update_help_articleB | Update an existing help article by slug. |
| haops_list_doc_artifactsA | List documentation artifacts for a project. Each artifact represents a type of documentation (architecture, developer, deployment, api, user_guide, changelog, adr, plans). |
| haops_create_doc_artifactA | Create a new documentation artifact for a project. One artifact per type per project. |
| haops_update_doc_artifactB | Update a documentation artifact (title, description, status, version). |
| haops_create_doc_sectionA | Create a new section within a documentation artifact. IMPORTANT: Uses |
| haops_update_doc_sectionA | Update a documentation section content, title, slug, or source hint. IMPORTANT: Uses |
| haops_get_doc_sectionB | Get a specific documentation section content and metadata. |
| haops_export_doc_markdownA | Export a documentation artifact as Markdown text. Returns the full Markdown content as a string (not a file download). Useful for syncing documentation to a git repository. |
| haops_generate_onboardingA | Generate a Developer Onboarding Kit (ZIP) for a new developer joining a project. Creates pre-configured agent workspace with memory files, agent definitions, and project configuration. The ZIP is saved to a local temp file and the file path is returned. |
| haops_read_memoryA | Read agent memory for a project, module, or feature. mode="eager" (default): Returns baseText + full log entry bodies. Full project context in one call. mode="lazy" (ADR-027): For entityType=project — returns a compact INDEX envelope: • baseText (already thin) • Architecture doc tree (headers only: title [artifactSlug/sectionSlug]) • ADR index (headers only) • Active work — in-progress modules + features • Log headers only (timestamp · tag · author) — NO bodies Agent then fetches detail on demand via haops_get_doc_section / haops_read_memory(full:true) / haops_rag_query. For entityType=module/feature in lazy mode: falls back to eager (entity baseText is already thin). Use full=true (eager mode only) to include integrated (historical) log entries. Lazy default can be enabled via HAOPS_MEMORY_LAZY_DEFAULT=true env var on the MCP server. |
| haops_append_memoryA | Append a tagged log entry to entity agent memory. Author is auto-populated from the API key. Tag must be allowed for the API key's agent role (e.g. dev can use: context, decision, progress, issue; qa: review, issue; architect/admin: all tags). |
| haops_consolidate_memoryA | Consolidate entity agent memory: replace baseText with updated summary and mark log entries as integrated. Admin and architect roles ONLY. Use this to keep baseText concise by integrating accumulated log entries. |
| haops_read_protocolA | Read the work protocol for a specific agent role in a project. Protocols define HOW agents should work (scope, workflow, handoff, etc.). OUTPUT SHAPES (v2.6 — F4 composed protocols):
• Legacy project (templateId IS NULL) — always returns the raw monolithic shape regardless of |
| haops_update_protocolA | Update (create new version of) the work protocol for a specific agent role in a project. Creates a new version and marks the previous as historical. Architect and admin roles ONLY. Partial-body support: Provide ONLY the fields you want to change. Server carries forward unchanged fields.
• Common usage: pass only F3 composed-protocol fields (ENABLE_COMPOSED_PROTOCOLS must be ON): • templateId — UUID of a RoleTemplate to associate, or null to detach. Omit to carry forward current value. • skillsConfig — override which skills are active and inject custom content. Omit to carry forward. Set to null to clear. |
| haops_list_protocol_versionsA | List all versions of a work protocol for a specific agent role. Returns version numbers, timestamps, change summaries, and who updated each version. |
| haops_get_protocol_healthA | Returns per-role composed-protocol health: missing skill UUIDs, deprecated references, skill pack health, snapshot metadata. Surfaces drift programmatically (same data as the Project Settings → Protocol Health panel in HAOps Desktop UI). Requires ENABLE_COMPOSED_PROTOCOLS=true on the server. |
| haops_list_skillsA | List agent skills (system-wide + optionally project-scoped). Skills are reusable, role-tagged knowledge units (e.g. "out-of-scope-findings", "three-layer-boot") that compose into agent protocols. Filter by scope, category, role, project, or free-text search. Deprecated skills are excluded by default. |
| haops_read_skillA | Read a single skill by its kebab-case name. Returns full markdown content + metadata (category, applicableRoles, version, ID, isDeprecated). Use this after haops_list_skills — or after a haops_read_protocol(mode="lazy") response's skillRefs[] manifest — to fetch the actual instructions on demand. |
| haops_create_skillA | Create a new agent skill (system or project-scoped). Inserts version=1 with isCurrent=true. Admin-only on the server, gated by ENABLE_COMPOSED_PROTOCOLS. Returns the new skill row on success; 409 if a skill with the same name already exists in the target scope (use haops_update_skill to publish a new version instead). |
| haops_update_skillA | Publish a new version of an existing skill (PUT /api/skills/[name]). Server bumps version in a single transaction. A no-op update (no field differs from current) returns the current row WITHOUT a version bump (mirrors prompt PATCH semantics). At least one mutable field must be supplied. Admin-only, gated by ENABLE_COMPOSED_PROTOCOLS. |
| haops_deprecate_skillA | Soft-delete + deprecate a skill (DELETE /api/skills/[name]). Cascades the soft-delete across ALL versions (current + historical) and flips isDeprecated=true on the current row. History remains visible via /api/skills/[name]/history for audit context. Admin-only, gated by ENABLE_COMPOSED_PROTOCOLS. Returns {message, versionCount}. |
| haops_get_skill_historyA | Returns the full version history of a named skill (GET /api/skills/[name]/history). Each entry contains the version number, publication timestamp, author, lifecycle state, and full content at that point in time. When diff=true the server computes unified diffs between consecutive versions and includes a Administrative note: soft-deleted (deprecated) skills still have their history accessible via this endpoint — paranoid=false on the server join so full audit lineage is preserved. |
| haops_get_role_template_historyA | Returns the full version history of a named role template (GET /api/role-templates/[name]/history). Role templates are system-wide (no scope/projectSlug). Each entry contains version, publication timestamp, author, lifecycle state, and the full Use to audit template content over time, recover from a bad publish, or inspect changes before bumping a template with |
| haops_bulk_publish_skillsA | Atomically publish multiple skills in a single DB transaction (POST /api/skills/bulk-publish). All version bumps happen in one round-trip; when cascade=true, consumer re-wiring (role templates, skill packs, project protocols) runs ONCE at the end — significantly cheaper than N sequential haops_update_skill calls during mass refactors. Partial-failure semantics: if ANY entry fails validation (unknown skill name, bad scope+projectSlug combo, duplicate entry), the server rolls back the ENTIRE transaction and returns a 400 with a per-entry error list. No skills are published unless ALL entries are valid. Check Admin-only, requires ENABLE_COMPOSED_PROTOCOLS=true. Returns 404 when the feature flag is off (the route looks absent by design). WARNING: cascade=true re-wires ALL consumers of EVERY updated skill in one transaction. Use haops_preview_skill_cascade on high-impact skills before running to estimate blast radius. |
| haops_create_project_skillA | Create a PROJECT-SCOPED skill (POST /api/projects/[slug]/skills). Project-scoped skills are visible only to that project's protocol resolver — they cannot be referenced by system role templates or other projects' protocols. For skills you want reusable across all projects, use haops_create_skill with scope="system" instead. Admin-only, requires ENABLE_COMPOSED_PROTOCOLS=true. Returns 409 if a non-deleted project skill with the same name already exists in this project — use haops_update_skill(scope="project", projectSlug=...) to publish a new version instead. Returns 404 when the feature flag is off. Response includes id, scope="project", projectId and version=1. |
| haops_get_protocol_spawn_linesA | Returns the per-role spawn-line text (GET /api/projects/[slug]/protocol/spawn-lines). Spawn lines are short boot-ritual strings injected at agent session start when composed protocols are active. Omit Read-only. Requires ENABLE_COMPOSED_PROTOCOLS=true. Returns 404 when the feature flag is off (the route looks absent by design) — surface this as "Composed protocols feature is disabled" to the user. |
| haops_preview_project_protocolA | Dry-run the composed-protocol resolver for a project role — returns the assembled manifest as if PUT had been applied, WITHOUT persisting. Use BEFORE haops_update_protocol to verify that the new templateId / skillsConfig combo resolves correctly and has no warnings. When called with no optional params, previews the current protocol settings (useful for a sanity-check without triggering a version bump). The response shape mirrors haops_read_protocol (mode, coreContent/body, skillRefs, warnings). The server adds Requires ENABLE_COMPOSED_PROTOCOLS=true on the server. Returns 404 when the feature flag is off (the route looks absent, by design) — surface this as "Composed protocols feature is disabled" to the user. |
| haops_preview_skill_cascadeA | Preview which consumers (role templates, skill packs, project protocols) would need re-wiring if the named skill is bumped via PUT. Read-only — does not mutate. Use BEFORE calling |
| haops_preview_role_template_cascadeA | Preview which project protocols would need re-wiring if the named role template is bumped via PUT. Read-only — does not mutate. Use BEFORE calling |
| haops_list_role_templatesA | List agent role templates. A role template bundles a core |
| haops_read_role_templateA | Read a single role template by its kebab-case name. Returns the current version with |
| haops_create_role_templateA | Create a new agent role template (admin-only, requires composed-protocols feature flag). Templates are system-wide (no project scope) and always start at version=1, isCurrent=true, isSystem=false. |
| haops_update_role_templateA | Publish a new version of an existing role template (admin-only, requires composed-protocols feature flag). The server flips the current row to isCurrent=false and inserts a new row at version+1, transactionally. Only supply fields you want to change — a no-op call (no diff) returns the current row unchanged with version untouched. |
| haops_deprecate_role_templateA | Soft-delete a role template, cascading across ALL versions (admin-only, requires composed-protocols feature flag). System templates (isSystem=true) cannot be deleted and return 403 — to "deprecate" a system template, publish a new version via haops_update_role_template or alter the seeder. Soft-deleted rows remain visible in the history endpoint for audit context. |
| haops_list_skill_packsA | List skill packs — curated bundles of agent skills (e.g. helpdesk-pack, security-pack, mobile-pack) that owners adopt at project onboarding. Each pack groups related skill IDs under a category; the onboarding wizard pre-enables them in one click. System packs are seeded and cannot be deleted. Read-only on the MCP surface; mutations go through the web admin. |
| haops_create_skill_packA | Create a new skill pack (admin only, requires ENABLE_COMPOSED_PROTOCOLS=true on the server — returns 404 when the flag is off, by design). Body fields mirror POST /api/skill-packs: kebab-case |
| haops_update_skill_packA | Update an existing skill pack in place — no version bump (packs are unversioned; audit log captures the diff). Admin only, requires ENABLE_COMPOSED_PROTOCOLS=true. |
| haops_deprecate_skill_packA | Soft-delete (deprecate) a skill pack — paranoid destroy on a single row (packs are unversioned, no cascade). Admin only, requires ENABLE_COMPOSED_PROTOCOLS=true. System packs (isSystem=true) cannot be deleted — the server returns 403; to "deprecate" a system pack, update its skillIds to empty via haops_update_skill_pack instead, or remove the seeder entry in code. Returns the server confirmation message. |
| haops_transition_skillA | Transition a skill through its lifecycle (propose / publish / deprecate). Hits POST /api/skills/[name]/[action]. The server enforces the allowed-from-here state machine — on a disallowed transition you get a 409 with WARNING: The parameter is named |
| haops_transition_role_templateA | Transition a role template through its lifecycle (propose / publish / deprecate). Hits POST /api/role-templates/[name]/[action]. Role templates are system-wide — no scope axis. Server enforces the allowed-from-here state machine and returns 409 with WARNING: The parameter is named |
| haops_transition_skill_packA | Transition a skill pack through its lifecycle (propose / publish / deprecate). Hits POST /api/skill-packs/[name]/[action]. Packs are unversioned and system-wide. Server enforces the allowed-from-here state machine and returns 409 with WARNING: The parameter is named |
| haops_report_test_runA | Report test results to HAOps. Creates a TestRun with individual TestResult records. Used by agents to manually report results (Jest/Playwright reporters do this automatically). |
| haops_get_test_healthB | Get aggregated test health summary for a project or specific entity. Returns pass rates, trend, recent failures, and coverage data. |
| haops_list_testsC | List tests in a project with optional filters. Returns test records with metadata. |
| haops_list_test_runsA | List recent test runs for a project. Returns run summaries with pass/fail counts. |
| haops_link_tests_to_entityB | Link tests to a module, feature, or issue by test IDs or file path pattern. Sets testableType and testableId on matching tests. |
| haops_list_test_suitesC | List test suites for a project. |
| haops_export_test_suiteA | Export a test suite as a JSON bundle for cross-project sharing. Includes suite config and all test definitions. |
| haops_import_test_suiteB | Import a test suite from a JSON bundle into a project. Creates new suite and test records with fresh UUIDs. |
| haops_git_list_filesA | List files and directories in a project's Git repository at a given path. Returns directory entries with type (file/dir), name, and SHA. Supports multi-repo projects via repositoryName. |
| haops_git_read_fileA | Read file content from a project's Git repository. Returns text content for text files, or a "binary file" message for binary files. Supports multi-repo projects via repositoryName. |
| haops_git_commit_logA | Get recent commit history from a project's Git repository. Returns commits with SHA, author, date, and message. Supports multi-repo projects via repositoryName. |
| haops_git_get_remote_urlA | Get SSH remote URL and setup instructions for pushing to HAOps Git. Returns the SSH URL, default branch, and copy-pasteable setup commands. Supports multi-repo projects via repositoryName. |
| haops_manage_ssh_keysA | Manage SSH keys for HAOps Git access (list, add, or revoke). Agents can use this to self-service their SSH keys for git push access. |
| haops_create_merge_requestA | Create a merge request in a HAOps Git repository. Auto-detects conflicts and snapshots commit SHAs. Returns the created MR with status, conflict info, and diff stats. |
| haops_get_merge_requestA | Get merge request detail including diff stats, reviews with verdicts, conflict status, and branch info. Use this to review an MR before approving or merging. |
| haops_list_merge_requestsA | List merge requests for a project with optional filters. Returns MR title, status, branches, author, and timestamps. |
| haops_review_merge_requestA | Submit a review on a merge request. Verdicts: approved, changes_requested, commented. When enough approvals are met (per branch protection rules), MR status auto-transitions to approved. |
| haops_merge_merge_requestA | Merge an approved merge request. Checks branch protection rules (required approvals, allowed roles) and conflicts before merging. Supports fast-forward and three-way merge. |
| haops_get_branch_diffA | Compare two branches in a HAOps Git repository. Returns commits ahead/behind, changed files with stats, diff content, and conflict detection. Use before creating an MR to preview changes. |
| haops_list_updatesA | List available updates for a project. Shows update type, version, status, and date. Use to check for new MCP server versions, protocol changes, test suites, or onboarding templates. |
| haops_download_updateA | Download/view an update artifact. For protocols: returns content directly as JSON. For MCP server: returns download instructions with path and size. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| All Projects | List all projects in HAOps |
Latest Blog Posts
- 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/tbranzov/haops-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server