AI Workstation Open Source Intelligence MCP Server
This server provides read-only, evidence-backed open-source AI project research via nine MCP tools, with no server-side model execution.
Search AI projects – Find projects from explicit requirements and typed constraints.
Get project facts – Retrieve current evidence-backed public facts for a specific project.
Get license evidence – Access observed license evidence (technical evidence, not legal advice).
Compare projects – Compare two to five projects in a concrete decision context.
Find alternatives – Discover verified alternatives while preserving hard constraints.
Compose AI stack – Build candidate open-source AI stacks and expose unknown compatibility.
Get radar overview – Discover current rankings, collections, categories, scenarios, and filters.
Browse radar projects – Browse/filter rankings, collections, categories, scenarios, topics, and deployments.
Browse radar skills – Browse/filter the Radar Skills library or open a Skill by ID.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AI Workstation Open Source Intelligence MCP ServerCompare RAGFlow and Dify for self-hosted RAG"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AI Open Source Intelligence
One Skill. Nine live read-only Radar tools. Evidence-backed open-source AI research without a second server-side model call.
简体中文 · Product page · AI Open Source Radar · Quickstart
AI Open Source Intelligence is the Skills/MCP product layer for AI Open Source Radar.

Product shape
User in ChatGPT / Codex / compatible host
|
v
1 unified product Skill
|
v
9 read-only MCP tools
|
v
AI Workstation public RadarThe user does not choose separate research/comparison/stack Skills. The single Skill routes the task internally.
The host model performs natural-language reasoning and synthesis. The AI Workstation server provides data/evidence only on this product path.
Related MCP server: Warranted
One active Skill
ai-open-source-intelligenceIt handles:
browsing rankings, collections, categories, scenarios and the Radar Skills library;
finding projects from deployment, privacy, integration, budget and license requirements;
verifying named-project facts and license evidence;
comparing two to five projects for a concrete use case;
finding alternatives while preserving hard requirements;
planning candidate open-source AI stacks and exposing unverified compatibility.
The only product Skill is packaged from:
skills/ai-open-source-intelligence/SKILL.md
skills/ai-open-source-intelligence/agents/openai.yamlagents/openai.yaml makes the Skill's dependency on the canonical
ai_open_source_intelligence Hosted MCP explicit while keeping automatic
invocation enabled. This is the Skill-level dependency contract; .mcp.json
is the matching Plugin-level connection contract.
The previous split research/comparison/stack Skill files are removed from the current product and distribution bundle.
Nine standard MCP tools
search_ai_projects
get_project_facts
get_license_evidence
compare_ai_projects
find_alternatives
compose_ai_stack
get_radar_overview
browse_radar_projects
browse_radar_skillsAll nine are read-only. They do not execute or install third-party repository code.
No AI Workstation server-model execution
This is a hard product boundary for the current release.
The Hosted MCP exposes no Premium model tool, no checkout tool and no runtime OAuth/Premium switch. Requirement-based selection calls the public Radar selector with:
use_model=falseTherefore an ordinary Skill/MCP workflow is:
ChatGPT/Codex host model
-> chooses/read tools
-> AI Workstation public Radar data/evidence
-> host model synthesizes the final answerIt is not:
host model -> AI Workstation model -> second model billIf member-linked server-model capabilities are added later, they must ship as a new reviewed product version rather than being enabled through a hidden environment variable.
Evidence model
Every tool result separates:
verified facts — source-backed observations that crossed the evidence boundary;
recommendations — host-model/rules analysis;
unknowns — unavailable or unverified information;
risks — license, maintenance, deployment, security and integration limits.
A value in data is not automatically a verified fact. License evidence is deliberately stricter and is technical evidence, not legal advice.
Requirement tools publish the actual typed constraint contract through MCP:
{"id":"web_ui","value":true,"polarity":"required"}Formal matches are revalidated against project-detail evidence. README excerpts
may directly verify narrow Docker, self-hosting, browser UI and low/no-code
claims; unresolved hard requirements become near-match blockers. A License label
is exposed only as observed_license_label until a direct LICENSE-family source
supports a verified license fact. Response observation time and evidence-source
freshness are reported separately.
Official resources in results
MCP tool results include canonical, non-tracking publisher links under:
data.official_resourceswith:
AI Workstation — https://aiworkstation.cn/
AI Open Source Radar — https://aiworkstation.cn/githubai/
this open-source project — https://github.com/zxhwolfe-dev/aiworkstation-open-source-intelligence
The unified Skill may show these once at the end of a normal user-facing answer. They are kept separate from verified facts so publisher attribution never changes a research conclusion.
Hosted MCP
Canonical endpoint:
https://mcp.aiworkstation.cn/mcpCurrent Hosted mode is intentionally:
anonymous
read-only
data-only
9 tools
no OAuth
no WorkOS dependency
no Premium/server modelThe container stays on host loopback 127.0.0.1:8001 behind Nginx/TLS.
Anonymous abuse controls
The gateway uses two per-IP request windows plus a connection cap:
short-window:
60 requests/minute, burst30;sustained:
10 requests/minute, burst300;concurrent connections:
10per IP;MCP request body:
256 KBmaximum;unrelated paths on the dedicated MCP hostname return
404.
This is intentionally request-based rather than token-based because the nine data tools do not consume AI Workstation model tokens.
Use it now
The published v0.3.3 Plugin packages the unified Skill and the production
Hosted MCP configuration together. Codex and the ChatGPT desktop Codex host can
install both from one version-pinned marketplace entry. The public ChatGPT
directory listing is still pending review. Today:
Codex / ChatGPT desktop users can install the complete repository Plugin;
ChatGPT web users can register
https://mcp.aiworkstation.cn/mcpas a No Authentication developer-mode app while the public listing is pending;Python users can install the matching CLI/MCP package from PyPI with:
python -m pip install \
"aiworkstation-open-source-intelligence[mcp]==0.3.3"See the Quickstart for exact ChatGPT, Codex and Python
steps and the v0.3.3 Release
for signed-off assets and checksums. The immutable v0.3.0 archive remains the
earlier Skills-only artifact; the complete Plugin uses the current v0.3.3 patch
identity rather than replacing it.
Local development
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[mcp]"Offline fixture data:
OSI_PROVIDER=mock osi-mcpLive public Radar data:
OSI_PROVIDER=http \
AIWORKSTATION_RADAR_BASE_URL=https://aiworkstation.cn \
osi-mcpHosted configuration check requires an exact candidate identity:
OSI_PROVIDER=http \
OSI_HOSTED_ACCESS_MODE=public \
OSI_RELEASE_COMMIT=<exact-40-char-sha> \
OSI_IMAGE_COMMIT=<same-exact-40-char-sha> \
osi-mcp-hosted --check-configSetting OSI_HOSTED_ACCESS_MODE=oauth fails closed in the current release.
Safety rules
never execute third-party repository code as part of research;
never infer permission from a missing license;
never silently weaken a hard requirement to manufacture a match;
never claim cross-project compatibility without evidence or a controlled test;
never substitute model memory for unavailable live evidence;
never enable AI Workstation server-side model execution in the current standard Skill/MCP path.
Development checks
python -m compileall -q src tests
python -m unittest discover -s tests -v
osi-validate-plugin --root .
osi-readiness --root .CI covers Python 3.10 and 3.12, deterministic Skill packaging, MCP round trips, data-only Hosted configuration and container packaging.
License
The public repository is licensed under Apache-2.0. That does not grant rights to private AI Workstation databases, unpublished datasets, credentials, infrastructure or trademarks.
Available Tools
9 toolsbrowse_radar_projectsCRead-onlyIdempotentInspect
Browse rankings, collections, categories, scenarios, topics or filtered projects.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | ||
| layer | No | ||
| limit | No | ||
| query | No | ||
| topic | No | ||
| locale | No | en | |
| offset | No | ||
| license | No | ||
| ranking | No | ||
| category | No | ||
| scenario | No | ||
| use_case | No | ||
| collection | No | ||
| deployment | No | ||
| request_id | No | ||
| radar_topic | No | ||
| github_topic | No | ||
| resource_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds context about the facets being browsable (rankings, collections, categories, etc.) but does not disclose matching logic, pagination behavior, or result-level details. It is consistent with the annotations and does not contradict them, but also adds only modest behavioral context beyond the annotations.
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 a single concise sentence and front-loads the verb, but the brevity crosses into under-specification. The list of browse facets is useful, yet the structure leaves no room for usage guidance or parameter clarification, so the conciseness is achieved at the expense of completeness.
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 the tool's complexity (18 optional parameters) and the presence of several closely related siblings, the description is too thin. It does not explain how 'filtered projects' relate to the listed facets, what the ranking/scenario/topic fields mean in practice, or when to prefer this over search_ai_projects. The output schema mitigates return-value explanation, but other contextual gaps remain.
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 0%, so the description carries the burden of explaining 18 parameters. It clarifies a few categories (ranking, collection, category, scenario, topic, query), but leaves many parameters ambiguous (role, layer, license, deployment, radar_topic, github_topic, resource_type, request_id, use_case). The description does not compensate for the schema's lack of parameter-level documentation.
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 names a specific verb ('Browse') and resource ('radar projects'), and enumerates the key entry points: rankings, collections, categories, scenarios, topics, or filtered projects. It is distinguishable from the sibling browse_radar_skills (skills vs projects) and search_ai_projects (browse vs search), though it does not explicitly contrast itself with them.
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?
No guidance is given about when to use this tool versus search_ai_projects, get_radar_overview, or browse_radar_skills. The description only implies browsing/filtering use; it states no exclusions, prerequisites, or alternative selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_radar_skillsARead-onlyIdempotentInspect
Browse/filter the Radar Skills library or open one Skill by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| sort | No | ||
| limit | No | ||
| query | No | ||
| locale | No | en | |
| offset | No | ||
| license | No | ||
| category | No | ||
| skill_id | No | ||
| request_id | No | ||
| installable | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile: readOnlyHint, idempotentHint, openWorldHint, and destructiveHint false. The description adds a useful distinction between library browsing and opening a single Skill by ID, but provides no further behavioral context such as result shape or filtering semantics.
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 a single, front-loaded sentence with no filler. Every word adds meaning, and it communicates the core behavior efficiently.
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 having annotations and an output schema, the tool has 11 undocumented parameters and multiple usage modes. The one-line description does not explain how parameters combine, when to use direct ID lookup versus filtering, or what distinguishes the two modes. An agent would need significant inference to call this correctly in non-trivial cases.
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 0%, and the tool has 11 parameters. The description only gestures at 'one Skill by ID,' which maps to skill_id, and 'browse/filter' at a high level. It leaves kind, sort, limit, query, locale, offset, license, category, request_id, and installable unexplained.
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 a specific action and resource: 'Browse/filter the Radar Skills library or open one Skill by ID.' It clearly distinguishes the tool from sibling project-focused tools like browse_radar_projects by naming the Radar Skills library explicitly.
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 scenarios: browsing/filtering versus fetching a single skill by ID. However, it does not explicitly say when to prefer this tool over alternatives such as browse_radar_projects or search_ai_projects, leaving that decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_ai_projectsBRead-onlyIdempotentInspect
Compare two to five projects in one explicit decision context.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | en | |
| context | No | ||
| criteria | No | ||
| request_id | No | ||
| project_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description adds little beyond the project-count constraint. It does not mention output format, errors, or behavior for invalid counts; the output schema may cover return values, but the description itself contributes minimal behavioral transparency. No contradiction exists.
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 a single sentence with no filler and front-loads the core action and constraint. It is appropriately concise for a tool whose annotations and output schema carry the safety and return-value burden.
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 five parameters, zero schema descriptions, and a sibling list with overlapping comparison/search tools, this one-line description is not enough for reliable selection and invocation. The output schema reduces the need to document return values, but context/criteria semantics and usage boundaries remain missing.
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 0%, so the description must compensate, but it only clarifies that project_ids should contain two to five projects. The semantics of context, criteria, locale, and request_id are left entirely unexplained, making it hard for an agent to invoke the tool with correct parameter intent.
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 ('Compare'), names the resource ('projects'), and adds a precise cardinality ('two to five') plus a decision context. This clearly distinguishes it from siblings like search_ai_projects or find_alternatives, and aligns with the annotation title 'Compare open-source AI projects'.
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 phrase 'in one explicit decision context' implies the intended use case, and the range 'two to five' sets a boundary. However, there is no explicit guidance on when to prefer this tool over siblings such as find_alternatives or browse_radar_projects, and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compose_ai_stackCRead-onlyIdempotentInspect
Compose a candidate open-source AI stack and expose unknown compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | en | |
| request_id | No | ||
| constraints | No | ||
| business_goal | Yes | ||
| existing_stack | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds 'candidate' and 'unknown compatibility', which suggests the result is provisional and highlights compatibility gaps, but it does not explain what the tool returns, how existing_stack or constraints affect the result, or what 'unknown compatibility' concretely means.
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 a single, tight sentence with the core action front-loaded. The second clause is somewhat vague, but there is no redundancy or wasted wording.
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?
Although an output schema exists and annotations provide a safety profile, the description still leaves critical context missing: parameter semantics are absent, usage versus sibling tools is not addressed, and the meaningful phrase 'unknown compatibility' is undefined. For a tool with five parameters and substantial optional inputs, this is not enough for reliable invocation.
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 0%, so the description carries the full burden for parameter meaning, but it does not mention business_goal, constraints, existing_stack, locale, or request_id. Only the phrase 'compose a stack' implicitly maps to business_goal; the optional inputs remain semantically unexplained beyond their names.
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 a specific action ('Compose') and resource ('a candidate open-source AI stack'), and the 'expose unknown compatibility' clause adds a distinct output focus. It is clear enough to separate this from siblings like search_ai_projects or compare_ai_projects, though it does not explicitly contrast with them.
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?
There is no guidance about when to choose compose_ai_stack over the sibling tools such as search_ai_projects, compare_ai_projects, or find_alternatives. The phrase 'candidate stack' weakly implies a use case, but no context, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_alternativesCRead-onlyIdempotentInspect
Find verified candidate alternatives while preserving constraints.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | en | |
| project_id | Yes | ||
| request_id | No | ||
| constraints | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the description does not need to cover safety. It adds modest behavioral value by stating results are 'verified' and that constraints are 'preserving,' which suggests a non-relaxing, evidence-based result set. It does not contradict the annotations, and it offers no extra disclosure about pagination, output shape, or edge cases.
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 a single short sentence with no filler or redundancy, and the core action is front-loaded. It is concise but somewhat terse, sacrificing detail that would help an agent select it confidently among siblings. Still, on the conciseness dimension it is well structured.
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 having an output schema and useful annotations, the description lacks usage guidance, parameter clarification, and sibling differentiation. The tool has four parameters, zero schema description coverage, and several closely related siblings, so more context is needed for reliable selection and invocation. The current description is too thin to be considered 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?
Schema description coverage is 0%, so the description bears the burden of explaining parameters, but it only hints at 'constraints' and does not explain project_id, locale, request_id, or the constraints structure. The word 'constraints' maps to one parameter, but the other three are left entirely to their names and schema types. This is insufficient compensation for the lack of schema descriptions.
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 a specific verb ('Find') and resource ('verified candidate alternatives') and adds a meaningful qualifier ('preserving constraints'). It is not a tautology and gives the agent a basic sense of the tool's function. However, it does not explicitly say what the alternatives are for (e.g., projects) or how it differs from siblings like compare_ai_projects, so it is clear but not fully differentiated.
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 the tool should be used when constraints need to be preserved, but it gives no explicit when-to-use or when-not-to-use guidance. It does not name alternatives like search_ai_projects or compare_ai_projects, nor does it state which sibling to choose instead. An agent is left to infer the appropriate context from the name and a single phrase.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_license_evidenceCRead-onlyIdempotentInspect
Get observed license evidence; the result is not legal advice.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | en | |
| project_id | Yes | ||
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint, covering the safety and side-effect profile. The description adds the useful caveat that the result is not legal advice, which is behavioral context beyond the annotations, but it does not add much else.
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 a single compact sentence and is front-loaded with the core purpose. However, it is so terse that it leaves out necessary context about parameters and tool selection, so the brevity is not fully 'appropriate' for the tool's complexity.
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 output schema and annotations carry a fair amount of context, but the description still leaves important gaps: it never connects the tool to a project, provides no parameter semantics, and does not explain how this differs from get_project_facts. An agent could call it with project_id, but may not understand the scope or limitations of the returned evidence.
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 0%, so the description must compensate by explaining parameters, but it does not mention project_id, locale, or request_id at all. The phrase 'license evidence' only weakly implies what project_id should be and provides no guidance on the optional parameters.
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 and resource: 'Get observed license evidence' clearly states what the tool returns. It is reasonably clear, though it does not mention 'project' even though project_id is the key parameter, and it does not explicitly distinguish itself from sibling tools like get_project_facts.
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?
There is no guidance about when to use this tool versus alternatives such as get_project_facts or browse_radar_projects. The disclaimer about legal advice is useful but does not help an agent decide when this tool is the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_factsARead-onlyIdempotentInspect
Get current evidence-backed public facts for one project.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | en | |
| project_id | Yes | ||
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, open-world behavior. The description adds useful context beyond those hints: facts are 'current', 'evidence-backed', and 'public', which shapes agent expectations about freshness, sourcing, and visibility without contradicting the annotations.
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?
A single front-loaded sentence with no filler. Every modifier ('current', 'evidence-backed', 'public', 'one project') carries meaningful information that helps an agent invoke the tool correctly.
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?
With an output schema present, rich annotations, and only one required parameter, the tool is simple enough that the description plus schema covers what an agent needs to call it. Minor gaps around parameter semantics and sibling differentiation exist, but nothing essential is missing for basic correct invocation.
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 0%, so the description must compensate, but it does not explain locale, request_id, or even explicitly map 'one project' to project_id. Only the enum/default in the schema and the parameter names give agents any hint about parameter purpose, leaving obvious gaps for locale formatting and request correlation.
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 names a specific verb ('Get'), resource ('evidence-backed public facts'), and clear scope ('for one project'), immediately separating this from broader list/search/overview siblings like browse_radar_projects and get_radar_overview. It is direct and unambiguous about what the tool returns.
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 phrase 'for one project' clearly frames when this tool is appropriate: when the agent needs focused facts about a specific project rather than a list, comparison, or overview. It does not explicitly name alternatives or exclusion cases, but the context is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_radar_overviewBRead-onlyIdempotentInspect
Discover current rankings, collections, categories, scenarios and filters.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | en | |
| request_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds no extra behavioral context beyond these hints, such as potential result size or dynamic nature. Since annotations carry the burden, the description's lack of additional disclosure is acceptable but not distinguished.
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 a single concise sentence that is front-loaded with the key terms (rankings, collections, etc.). It is appropriately brief and free of fluff, though slightly sparse. It earns a strong score for efficiency without being verbose.
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?
With an output schema available and clear annotations, the description covers the core purpose but omits usage context and parameter details. For a simple read-only overview, the description is minimally adequate, but it lacks the guidance that would make it fully self-sufficient for an agent to call it correctly.
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 0%, and the description does not explain the locale or request_id parameters. While locale likely controls language, request_id is ambiguous and could affect behavior. The description fails to compensate for the schema's lack of documentation, leaving the agent without meaningful parameter guidance.
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 discovers current rankings, collections, categories, scenarios, and filters, specifying the resource (radar overview) and the action (discover). While it does not explicitly name sibling tools, the content scope distinguishes it from more targeted tools like browse_radar_projects or compare_ai_projects. The purpose is specific enough for an agent to select it for an overview request.
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 provides no guidance on when to use this tool versus alternatives. It does not mention that for detailed project browsing one should use browse_radar_projects, or that this is a starting point for an overview. The context is purely declarative, leaving the agent to infer usage without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ai_projectsCRead-onlyIdempotentInspect
Find and verify open-source AI projects from explicit requirements.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| locale | No | en | |
| request_id | No | ||
| constraints | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world behavior, so the safety profile is covered without description. The description adds the 'verify' behavior and the explicit-requirements scoping, but does not disclose what verification entails or any operational quirks.
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 a single, front-loaded sentence with no filler, and every phrase ('find', 'verify', 'explicit requirements') adds at least some meaning. It is efficient, though slightly under-specified for a tool with multiple parameters.
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?
Although the output schema and annotations carry significant context, the description omits parameter semantics, usage conditions, and relationship to sibling tools. For a 4-parameter search tool with 0% schema coverage, this is not enough for a confident selection or invocation.
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 0% and the description does not define query, locale, constraints, or request_id. The phrase 'explicit requirements' may hint at query/constraints but does not explain their meaning or format, so the description fails to compensate for the schema's lack of descriptions.
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 a specific action ('Find and verify') and a clear resource ('open-source AI projects'), and adds a scoping phrase ('from explicit requirements'). It does not explicitly distinguish this tool from browse_radar_projects or find_alternatives, but the search/verify framing makes the primary purpose clear.
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?
There is no guidance about when to use search_ai_projects versus its siblings, no exclusions, and no stated alternatives. 'From explicit requirements' weakly implies a use case, but the agent is left to infer when this tool should be chosen.
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.
9 tool updates
v0.3.3- First observed
browse_radar_projects - First observed
browse_radar_skills - First observed
compare_ai_projects - First observed
compose_ai_stack - First observed
find_alternatives - First observed
get_license_evidence - First observed
get_project_facts - First observed
get_radar_overview - First observed
search_ai_projects
TDQS
Scored across 9 tools
Most tools have distinct purposes, but search_ai_projects and find_alternatives both retrieve candidate projects, and get_radar_overview/Browse_radar_projects overlap in rankings/categories. The descriptions clarify the different intents well enough that an agent can usually disambiguate.
All tool names follow a consistent verb_noun snake_case pattern with clear verbs like search, get, compare, find, compose, and browse. The naming style is uniform and predictable across the entire set.
Nine tools is well-scoped for an OSINT-oriented AI project server: discovery, facts, licensing, comparison, alternatives, stack composition, and radar browsing are each represented without unnecessary bloat or obvious missing categories.
The tool surface covers the full open-source AI project intelligence workflow from searching and browsing to getting evidence-backed facts, license checks, comparisons, alternatives, and stack composition. As a read-only intelligence domain, no create/update/delete lifecycle is expected, and the available tools do not leave dead ends.
Maintenance
Related MCP Connectors
Read-only approved AI tools, public stacks, guides, and evidence-aware comparisons.
Source-traced evidence research for AI agents. We organise the evidence; you decide.
Read-only AI tool/model discovery with fit signals, unknowns, next tests, and public discussions.
A public commons for agents to search and share reusable findings and open research questions.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceCoordinates multiple AI systems and human reviewers using Git as an inspectable record, providing tools for task management, evidence tracking, and independent review.1Apache 2.0
- AlicenseNot gradedqualityAmaintenanceMakes AI research agents accountable by giving every conclusion a traceable argument graph. Provides a persistent argument graph where claims require grounds and warrants for auditable, verifiable reasoning.2MIT
- AlicenseCqualityAmaintenanceAn append-only research operations framework and read-only MCP that tracks research plans, approvals, observations, claims, failures, revisions, and contributions with source-grounded evidence, providing search, evidence fetch, and audit capabilities without direct ledger writes.30MIT
- AlicenseBqualityCmaintenanceEnables revision-bound source audits with exact article fingerprinting, claim-to-source mapping, quotation verification, and immutable JSON evidence reports for prepublication review.9MIT