← MCP servers · cronusl-1141

AI-company

BLOCKgrade F · trust 55/100

Multi-agent team operating system for Claude Code. 108 MCP tools, 40+ agent templates, 10 lifecycle hooks, 7 pipeline workflows. Persistent teams, structured meetings, task wall, real-time React dashboard. No LangChain/AutoGen — pure CC native integration.

agent frameworkagent orchestrationai agentsautonomous agentsclaudeclaude codeclaude code plugindashboard

Overview

From the repository's own README, as read at the audited commit.

[English](README.md) | [中文](README.zh-CN.md)# AI Team OS<!-- Logo placeholder --><!-- ![AI Team OS Logo](docs/assets/logo.png) -->### Shared context, accountable work, native agents.AI Team OS is a shared operating layer for **Claude Code and Codex**. Keep tasks, project memory, reports and team messages in one place, and follow work across sessions in one Dashboard. Each host keeps its native agent tools; the OS provides the durable record that makes their work understandable and reusable.> 🤝 **Codex is supported.** Use Codex or Claude Code on its own, or connect both to the same OS task wall, project memory, reports, channels and Dashboard. Codex uses its own MCP and hook configuration; native agent tools, host settings and hook trust remain separate. See the installation and capability sections below for the per-host setup and boundaries.<!-- Keep the Codex compatibility note above across releases. For each release, replace the current-release announcement with that version's verified summary. Keep historical details in CHANGELOG.md. -->> ⚡ **v1.13.0 - Leaner instructions, honest MCP registration.** The instruction set shipped to Claude Code was audited line by line and cut to what a model would otherwise get wrong (role templates 167 KB to 17 KB); the plugin no longer force-loads all 116 tool schemas into every session; the source installer stops registering a second server next to an enabled plugin; and a read-only script reports drift in Codex-side installed hook copies. See the changelog for validation results and upgrade notes.>> Full version history: [CHANGELOG.md](CHANGELOG.md)[![Python](https://img.shields.io/badge/Python-3.11%2B-blue?logo=python)](https://python.org)[![License](https://img.shields.io/badge/License-MIT-green)](LICENSE)[![FastAPI](https://img.shields.io/badge/FastAPI-0.115%2B-009688?logo=fastapi)](https://fastapi.tiangolo.com)[![React](https://img.shields.io/badge/React-19-61DAFB?logo=react)](https://react.dev)[![MCP](https://img.shields.i

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add dashboard --env API_KEY=${API_KEY} --env ECOSYSTEM_KEYWORDS=${ECOSYSTEM_KEYWORDS} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "dashboard": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "API_KEY": "${API_KEY}",
        "ECOSYSTEM_KEYWORDS": "${ECOSYSTEM_KEYWORDS}"
      }
    }
  }
}

Exposed tools (116) 80 read · 33 write · 3 destructive

Blast radius: 3 tools can delete or overwrite. An agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
agent_activity_queryreadQuery Agent activity records for a team.
agent_listreadList a team
agent_reuse_recommendreadRecommend whether to reuse an existing sub-agent for a follow-up task.
agent_template_listreadList every Agent template CC can actually resolve.
agent_template_recommendreadRecommend Agent templates — and, for a known project type, a team shape.
agent_update_statuswriteUpdate an Agent
briefing_addwriteAdd a decision item to Leader Briefing for user review.
briefing_dismissreadDismiss a Leader Briefing item (no action needed).
briefing_listreadList Leader Briefing items. Default shows pending items for user review.
briefing_resolvereadResolve a Leader Briefing item with user
channel_mentionsreadGet channel messages that mention a specific agent.
channel_readreadRead messages from a channel.
channel_read_ackread把某频道的已读水位推进到你**实际读到**的那一条,清掉对应未读。
channel_sendwriteSend a message to a channel.
channel_unreadread某读者在某项目下的逐频道未读计数(谁在叫你、有几条、最新一条讲什么)。
channel_waitread等待指定对端的新消息:先补读,随后以 WebSocket 等待,不轮询模型。
context_resolvereadGet the current active OS context — active project, active teams, member list.
debate_code_reviewwriteStart a debate-style code review for a specific file or change.
debate_startwriteStart a structured 4-round debate meeting between an Advocate and a Critic.
decision_logreadQuery team decision log — task assignments, approach selections, Agent scheduling decisions.
diagnose_task_failurereadAuto-diagnose why a task failed and suggest fixes.
dismiss_project_registrationreadMark current cwd as dismissed for project registration — won
ecosystem_apply_architecture_mdwriteStage 1 writeback — submit architecture_md OR report failure.
ecosystem_apply_debate_resultwriteStage 2 writeback — submit debate conclusion to advance to ``debated``.
ecosystem_apply_quality_reviewwriteSubmit quality review result and release the claim lock.
ecosystem_apply_shallow_summarywriteStage 0 worker callback: write back a shallow summary OR report a failure.
ecosystem_claim_reviewreadClaim the next shallow_done repo for quality review.
ecosystem_claim_shallowreadClaim the next queued repo for shallow scanning (stage_status=
ecosystem_deep_review_cancelreadCancel an in-flight (stage_status=
ecosystem_deep_review_listreadList deep-reviews newest-first, optionally filtered by status.
ecosystem_deep_review_requestreadQueue a deep-review for a repo and return the dispatch prompt.
ecosystem_deep_review_request_batchreadStage 1 — Queue architecture-analysis dispatches for tag-filtered candidates.
ecosystem_deep_review_statusreadLook up the most recent deep-review for ``repo_id``.
ecosystem_diff_periodreadReturn a time-period diff computed dynamically from the event log (v1.6.0 event sourcing).
ecosystem_index_diff_latestreadFetch the latest IndexDiff snapshot for the current project.
ecosystem_index_updatewriteTrigger ecosystem index update — runs scanner + computes diff.
ecosystem_link_debate_meetingreadStage 2 helper — link ``debate_start`` meeting id back to review rows.
ecosystem_link_integration_taskreadStage 3 helper — link integration task id back to review row.
ecosystem_mark_as_referencewriteStage 3 reference path — add ``lifecycle:reference`` tag + advance to ``referenced``.
ecosystem_quick_setupwriteOne-shot ecosystem setup wizard — create data sources + scan profile in one call.
ecosystem_rebuild_queries_from_reposreadReturn a recap of all search queries that have discovered repos in this project.
ecosystem_refreshreadOn-demand incremental refresh of the project
ecosystem_release_claimreadRelease a worker claim without submitting a quality review.
ecosystem_repo_eventsreadReturn event history for a single ecosystem repo (v1.6.0 event sourcing).
ecosystem_repo_getreadGet holistic detail of an ecosystem repo (profile + tags + deep_reviews + relations + scan_run).
ecosystem_repo_manual_statusdestructiveSet (or clear) the human override on a repo
ecosystem_repo_tagsreadList all tags currently associated with a single ecosystem repo.
ecosystem_scanwriteScan popular Claude ecosystem repos (>=min_stars) and update ecosystem_repo_profiles.
ecosystem_scan_historyreadList recent scan runs ordered by started_at descending.
ecosystem_scan_periodicwriteRun an incremental or full ecosystem scan via the scanner service.
ecosystem_scan_statusreadFetch a single EcosystemScanRun by id.
ecosystem_searchreadQuery ecosystem_repo_profiles archive (Stage E enhanced).
ecosystem_search_by_capabilityreadSearch ecosystem repos by capability tags (reverse lookup from tag → repo).
ecosystem_shallow_queue_statusreadShow Stage 0 shallow-scan queue status for the active project.
ecosystem_start_integrationwriteStage 3 integrate path — build a task_create payload + tag the repo.
ecosystem_summary_by_tagreadList every repo carrying ``tag`` as a markdown table.
ecosystem_summary_healthreadPlatform self-check markdown: profile / scan / tag coverage / archive ratio.
ecosystem_summary_top_nreadTop-N markdown table of ecosystem repos.
ecosystem_summary_weeklyreadGenerate the past-N-days ecosystem briefing as markdown.
ecosystem_tag_apply_batchwriteApply Layer 1 + Layer 2 auto-tagging to a batch of ecosystem repos.
ecosystem_tag_apply_llm_resultwriteSubmit Layer 3 LLM tagging result from a sub-agent.
ecosystem_tag_dispatch_llmreadBuild a Layer 3 sub-agent dispatch plan for repos that need LLM fallback.
ecosystem_tag_listreadList ecosystem tag dictionary entries.
ecosystem_trigger_debatewriteStage 2 — Build debate dispatch payload (Leader still calls debate_start).
event_listreadList recent events in the system, optionally filtered.
failure_analysisreadAnalyze failed tasks, distill defense rules + training cases + improvement proposals (failure alchemy).
find_skillreadFind ecosystem skills/plugins using a 3-layer progressive loading system.
fleet_dispatchreadDispatch an operational instruction to another ship (CC session) in the fleet.
link_queryreadQuery cross-domain reference edges for an object (who references it / what it references).
link_tracereadTrace the reference neighborhood of an object (undirected fanout, depth <= 2).
meeting_attendance_checkreadCheck which expected participants have spoken in the current round.
meeting_concludereadConclude a meeting, marking it as completed.
meeting_createwriteCreate a team meeting and return a ready-to-use dispatch_plan for spawning participant Agents.
meeting_listreadList meetings for a team, optionally filtered by status.
meeting_read_messagesreadRead all discussion messages in a meeting.
meeting_send_messagewriteSend a discussion message in a meeting.
meeting_template_listreadList available meeting templates and their round structures.
meeting_updatewriteUpdate meeting fields (topic, participants, notes).
memory_addwriteAdd a direction-layer memory — the team
memory_invalidatereadInvalidate a direction-layer memory — mark it invalid without deleting.
memory_listreadList direction-layer memories — valid entries by default, grouped by kind.
memory_reconcile_applywrite按需整理·应用:批量执行 LLM 精判确认后的操作(确定性,幂等)。
memory_reconcile_candidatesread按需整理·粗筛:返回情景层候选组 + 方向层清单 + 蒸馏素材 + 操作说明。
memory_searchreadSearch the memory store in AI Team OS.
model_config_getreadGet model governance state: available models (auto-discovered from
model_config_setwriteSet the default startup model for new CC sessions (writes the
os_health_checkreadCheck the health status of the AI Team OS API service.
os_restart_apiwriteRestart the AI Team OS FastAPI process safely (standardized restart flow).
project_createwriteCreate a new project with a default Phase automatically created.
project_deletedestructiveDelete a project.
project_listreadList all projects in the system.
project_summaryreadGet a quick project summary: status (active/inactive), teams, top tasks.
project_updatewriteUpdate a project
prompt_effectivenessreadReturn effectiveness statistics for Agent templates.
report_listreadList saved reports, optionally filtered by author, topic, or type.
report_readreadRead the full content of a saved report by ID.
report_savewriteSave a research/analysis report to the database.
task_createwriteCreate a new task in a project (not bound to a team).
task_execution_tracereadGet a task
task_list_projectreadGet the task wall — project-scoped by default, team-scoped on request.
task_memo_addwriteAdd a memo record to a task — for tracking progress, recording decisions, marking issues.
task_memo_readreadRead all memo records for a task — read before picking up a task to understand historical progress.
task_runwritePut a task on a team
task_statusreadQuery the current status of a task.
task_updatewriteUpdate a task
team_briefingreadGet a team panoramic briefing — understand full team status in one call.
team_closereadClose (complete) a team — sets team status to completed and marks all busy agents as offline.
team_deletedestructiveDelete a team. team_id is REQUIRED — never auto-resolved.
team_listreadList teams — active ones by default, newest first.
team_statusreadGet a team
unified_searchreadSearch across all OS knowledge: task memos, reports, and tasks.
usage_attributionreadReport token usage together with how much of it can actually be accounted for.
verify_completionreadVerify whether a task is truly complete.
workflow_getwriteGet a Workflow run
workflow_listreadList CC ultracode/Workflow runs tracked by the OS observability layer.
workflow_reconcilereadReconcile finished Workflow runs from disk into the OS (repair after OS was offline).

Details

Source
CronusL-1141/AI-company
npm
dashboard@0.0.0
PyPI
ai-team-os
Transports
streamable-http
Credentials it reads
API_KEYECOSYSTEM_KEYWORDS
License
MIT
Stars
361 · pushed 0d ago

Trust audit

Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (9 observation(s))
Network
declared (13 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
plugin/hooks/workflow_reminder.py:2319
block_patterns = [".env", "id_rsa", ".pem", ".key"]
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
src/aiteam/hooks/workflow_reminder.py:2319
block_patterns = [".env", "id_rsa", ".pem", ".key"]
Why it matters. touches a credential store
MEDIUMInsecure crypto · crypto.weak_random · CWE-327, CWE-338
scripts/bench_ecosystem_search.py:139
kw = random.choice(keywords)
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
src/aiteam/memory/content_safety.py:77
"system prompt exfiltration (en)",
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
src/aiteam/memory/content_safety.py:87
"system prompt exfiltration (zh)",
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/backfill_deep_review_sections.py:40
DEFAULT_API = "http://127.0.0.1:8000"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/compute_cc_hook_golden.py:282
env = {**os.environ, "AITEAM_API_URL": f"http://127.0.0.1:{port}", "HOME": str(home)}
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/smoke_usage_interactions.py:18
BASE = sys.argv[2] if len(sys.argv) > 2 else "http://127.0.0.1:8010"
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/smoke_usage_page.py:17
BASE = sys.argv[1] if len(sys.argv) > 1 else "http://127.0.0.1:8010"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/test_codex_send_event.py:303
secret = "/Users/private/secret"
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
tests/unit/test_memory_content_safety.py:81
"-----BEGIN RSA PRIVATE KEY-----",
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
ecosystem_repo_manual_status, project_delete, team_delete
Why it matters. 3 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mcp.json.example
.mcp.json.example
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
tests/unit/test_cc_task_bridge.py:25
return importlib.import_module(mod_name)
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
tests/unit/test_permission_denied_recovery.py:17
return importlib.import_module(mod_name)
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
dashboard/tests/observability.test.mjs:99
new Function('require', 'module', 'exports', output)((name) => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
dashboard/tests/realtime-events.test.mjs:40
new Function('require', 'module', 'exports', code)((name) => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/integration/test_cross_feature.py:144
json={"name": "test", "mode": "eval(os.system('id'))"},
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/smoke_api_comprehensive.py:71
if not eval(assertion, {"body": body}):  # noqa: S307
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/unit/test_guardrails.py:41
result = check_input("eval(compile('import os', '', 'exec'))")
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
scripts/migrate_to_project_dbs.py:62
return hashlib.md5(normalized.encode()).hexdigest()[:12]
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/aiteam/api/project_context.py:28
return hashlib.md5(normalized.encode()).hexdigest()[:12]
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/aiteam/api/session_probe.py:121
h = int(hashlib.md5(sid.encode()).hexdigest(), 16)
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/aiteam/memory/scoping.py:44
digest = hashlib.sha1(normalized.encode("utf-8")).hexdigest()[:16]
LOWInsecure crypto · crypto.weak_random · CWE-327, CWE-338
tests/unit/storage/test_ecosystem_search_extended.py:515
kw = random.choice(keywords)

Gates applied: no_behavioural_pass.

Audited 2026-09-18 · audit v0.4.0 · source sha 6daa8c411038 · full audit: observations/trust-audit/mcp-server/cronusl-1141__ai-company.json · Report an issue or request a re-scan

Audit history

DateSourceVerdictGradeScoreChange
2026-09-186daa8c411038BLOCKF55first audit

Alternatives

Other servers in the same categories, safer ones first.

Questions

What is the AI-company MCP server?

Multi-agent team operating system for Claude Code. 108 MCP tools, 40+ agent templates, 10 lifecycle hooks, 7 pipeline workflows. Persistent teams, structured meetings, task wall, real-time React dashboard. No LangChain/AutoGen — pure CC native integration.

What tools does AI-company expose?

116 in total: 80 read-only, 33 that write, and 3 that can delete or overwrite (ecosystem_repo_manual_status, project_delete, team_delete). Every one is listed on this page with its risk.

Is AI-company safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (55/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 3 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does AI-company need?

It reads API_KEY and ECOSYSTEM_KEYWORDS from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does AI-company run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as dashboard at 0.0.0.

How current is this page?

The grade is for one exact copy of the source (6daa8c411038), read on 2026-09-18. The repository is watched and re-audited when it changes.

Provenance: OBSERVED · read 2026-09-18 · job trust-audit-2026-09-18