Skip to main content
Glama
evrenonur
by evrenonur

AIProject MCP Server

This MCP server wraps the AIProject project/task API described in api.md.

Run

npm install
npm run build
npm start

Use aiproject-mcp as a stdio MCP server after build.

Related MCP server: Context Apps

MCP Config

Local build:

{
  "mcpServers": {
    "aiproject": {
      "command": "C:\\ServBay\\bin\\node.cmd",
      "args": [
        "C:\\Users\\Onur\\Desktop\\mcp\\dist\\src\\index.js"
      ],
      "env": {
        "AIPROJECT_BASE_URL": "http://127.0.0.1:8000/",
        "AIPROJECT_API_KEY": "<API_KEY>"
      }
    }
  }
}

After npm publish:

{
  "mcpServers": {
    "aiproject": {
      "command": "npx",
      "args": [
        "-y",
        "aiproject-mcp"
      ],
      "env": {
        "AIPROJECT_BASE_URL": "http://127.0.0.1:8000/",
        "AIPROJECT_API_KEY": "<API_KEY>"
      }
    }
  }
}

Credentials

The server reads credentials from environment variables:

  • AIPROJECT_BASE_URL: API root or app root. Both http://127.0.0.1:8000 and http://127.0.0.1:8000/api/v1 are accepted. If the app root is supplied, /api/v1 is appended automatically.

  • AIPROJECT_API_KEY: API key sent as X-API-Key.

Every MCP tool also accepts optional credential overrides in its input:

  • baseUrl: Override AIPROJECT_BASE_URL for one call.

  • apiKey: Override AIPROJECT_API_KEY for one call.

Tools

  • aiproject_get_me: GET /me; verify the API key and return the current user.

  • aiproject_list_projects: GET /projects; paginated project summaries.

  • aiproject_create_project: POST /projects; create a project with name, github_url, clickup_url.

  • aiproject_get_project: GET /projects/{project}; get one project.

  • aiproject_update_project: PUT /projects/{project}; full project update, all project fields required.

  • aiproject_delete_project: DELETE /projects/{project}; deletes the project and its tasks.

  • aiproject_list_tasks: GET /projects/{project}/tasks; paginated task summaries. Does not return content.

  • aiproject_create_task: POST /projects/{project}/tasks; create a task with long content and assignments. Returns summary without content.

  • aiproject_get_task: GET /projects/{project}/tasks/{task}; the only task read tool that returns long content.

  • aiproject_update_task: PUT /projects/{project}/tasks/{task}; full task update. The sent assignments replace the old list. Returns summary without content.

  • aiproject_delete_task: DELETE /projects/{project}/tasks/{task}; deletes the task and assignments.

  • aiproject_update_assignment_status: PATCH /projects/{project}/tasks/{task}/assignments/{type}; update one existing team status. It does not create missing assignments.

Usage Guidance

List tasks first with aiproject_list_tasks because it returns lightweight summaries. Call aiproject_get_task only for the specific task whose long content must be read.

Use aiproject_update_assignment_status when only one team's status changes. Use aiproject_update_task when the title, content, or assignment team list changes.

Test

npm test

By default, the integration test calls http://127.0.0.1:8000/api/v1/me through MCP with a dummy API key and expects the documented 401 auth response. To test with a real key:

$env:AIPROJECT_BASE_URL = "http://127.0.0.1:8000/"
$env:AIPROJECT_API_KEY = "<API_KEY>"
npm test

Available Tools

12 tools
aiproject_create_projectCreate ProjectC

Calls POST /projects to create a project. Required fields are name, github_url, and clickup_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
nameYesProject name.
github_urlYesProject GitHub URL.
clickup_urlYesProject ClickUp URL.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already indicate it is not read-only, not destructive, not idempotent, and open world. The description adds minimal behavioral context beyond the HTTP method (POST) and required fields, not addressing side effects, authentication requirements, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, 22 words, no redundancy. Concise and front-loaded with the core call, but could be more informative within the same length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no output schema, and a creation operation, the description is inadequate. It omits return values, error handling, uniqueness constraints, and any side effects (openWorldHint suggests external impact).

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description mentions required fields but adds no new meaning beyond the schema's own descriptions for name, github_url, and clickup_url. Optional parameters are not mentioned.

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

Purpose4/5

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

The description clearly states the tool calls POST /projects to create a project, with the required fields listed. The purpose is clear but does not explicitly differentiate from sibling tools like aiproject_create_task, though the resource difference is obvious.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as update or delete project tools. It only states required fields, lacking context for appropriate usage.

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

aiproject_create_taskCreate Project TaskA

Calls POST /projects/{project}/tasks to create a task with full content and one or more assignments. The API response is a task summary and intentionally omits content.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
projectYesProject ID.
titleYesTask title.
contentYesFull long task content. This is sent to create/update endpoints, but list/create/update responses return only task summaries without content.
assignmentsYesComplete assignment list for the task. For PUT, this replaces the previous assignment list; omitted old assignments are deleted by the API.

TDQS

A3.5/5.0
Behavior3/5

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

The description adds that the API response is a task summary intentionally omitting content, which is useful beyond annotations. However, it does not disclose other behavioral traits such as auth requirements, rate limits, or side effects (e.g., notification triggers). With openWorldHint=true, no mention of the schema not being exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the HTTP call and then clarifying response behavior. No wasted words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core purpose and response omission but lacks details on error conditions, prerequisite checks (e.g., project must exist), or how assignments are replaced. Adequate for a straightforward creation tool but not comprehensive.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds general context ("full content and one or more assignments") but does not provide additional semantic meaning for individual parameters beyond what the schema already offers.

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

Purpose5/5

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

The description clearly states the tool calls POST /projects/{project}/tasks to create a task with full content and assignments. It specifies the resource (task), the action (create), and key features (full content, assignments). This distinguishes it from sibling tools like update, delete, or list.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like update_task or delete_task. The description does not mention prerequisites (e.g., project existence) or when not to use it. The agent must infer usage from the tool name alone.

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

aiproject_delete_projectDelete ProjectA
Destructive

Calls DELETE /projects/{project}. This also deletes the project's tasks and task assignments. Use only when the user explicitly wants project deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
projectYesProject ID.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds valuable context about cascading deletion of tasks and assignments, which is not captured by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loading the HTTP method, and every sentence provides essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's destructive nature and annotations, the description covers the key side effect (deletes tasks and assignments). No output schema is needed for a delete operation, and the description is sufficient for an agent to understand the tool's impact.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add significant parameter-level information beyond the schema, which already provides adequate descriptions for baseUrl, apiKey, and project.

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

Purpose5/5

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

The description explicitly states the HTTP method and resource ('Calls DELETE /projects/{project}'), and clarifies the scope ('deletes the project's tasks and task assignments'). It clearly distinguishes from siblings like aiproject_create_project or aiproject_update_project.

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

Usage Guidelines4/5

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

The description includes a clear usage condition ('Use only when the user explicitly wants project deletion'), though it does not explicitly list when not to use or provide alternatives.

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

aiproject_delete_taskDelete Project TaskA
Destructive

Calls DELETE /projects/{project}/tasks/{task}. This also deletes the task's assignment records. Use only when the user explicitly wants task deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
projectYesProject ID.
taskYesTask ID.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true, but the description adds specific behavioral context: 'This also deletes the task's assignment records.' This goes beyond the annotation by detailing what gets destroyed. No contradictions; the description consistently aligns with the destructive nature. It could further describe irreversible effects, but the added context is valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no filler. The first sentence states the action, the second covers side effects and usage guidance. Every word earns its place, making it efficient for an AI agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple delete tool with no output schema, the description adequately covers purpose, side effects, and when to use. It could mention idempotency (annotations say false) or error handling, but for a core destructive action, the coverage is sufficient. Sibling tools exist but the description does not need to detail them for completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add any parameter-level semantics beyond what the schema already provides (e.g., it restates the path structure but does not explain the optional baseUrl/apiKey or the meaning of project/task IDs). No extra value contributed.

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

Purpose5/5

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

The description clearly states the tool calls the DELETE endpoint for a specific resource (task under project), and adds detail about deleting assignment records. The name and title already indicate deletion, but the description confirms the exact HTTP method and resource path, making its purpose unambiguous and distinct from sibling tools like aiproject_update_task or aiproject_delete_project.

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

Usage Guidelines4/5

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

The description includes explicit guidance: 'Use only when the user explicitly wants task deletion.' This tells the agent when to invoke the tool. However, it does not mention when not to use it or list alternative tools (e.g., aiproject_update_task for modifying tasks). The guideline is clear but lacks explicit exclusions or comparisons with siblings.

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

aiproject_get_meGet Current API UserA
Read-onlyIdempotent

Calls GET /me to verify the supplied apiKey and return the user it belongs to. Use this first when checking credentials or identifying the current API user.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. Description adds that it verifies the apiKey and returns the user, providing behavioral context beyond annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff, front-loaded with the essential action and usage. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple auth/identity tool with no output schema, the description covers the purpose, when to use, and parameter context via schema. Complete for its complexity.

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

Parameters3/5

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

Schema coverage is 100% with detailed descriptions for both parameters (baseUrl, apiKey). Description does not add extra meaning, so baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states it calls GET /me to verify apiKey and return the user, and distinguishes usage for credential checking or identifying current API user. No sibling tool does this.

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

Usage Guidelines4/5

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

Explicitly advises 'Use this first when checking credentials or identifying the current API user.' Does not specify when not to use, but the context is clear enough for a simple auth tool.

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

aiproject_get_projectGet ProjectA
Read-onlyIdempotent

Calls GET /projects/{project}. Use this when a single project's metadata is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
projectYesProject ID.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, which adequately cover the behavioral profile. The description adds the specific API endpoint (GET /projects/{project}) but does not introduce new behavioral traits or contradict 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences, no fluff, and front-loaded with the essential information. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with no output schema, the description provides sufficient context given the rich annotations. The only minor gap is that 'metadata' is somewhat vague, but overall it is complete enough for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters (baseUrl, apiKey, project) having detailed descriptions. The description adds no additional semantic information about the parameters beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description explicitly states the HTTP method (GET) and resource (/projects/{project}), and specifies the use case: 'when a single project's metadata is needed.' This clearly distinguishes it from siblings like aiproject_list_projects and aiproject_delete_project.

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

Usage Guidelines4/5

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

The description provides a clear context: 'Use this when a single project's metadata is needed.' However, it does not explicitly mention when not to use it or name alternative tools. The sibling list implies alternatives, but the guidance is not as strong as a direct exclusion.

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

aiproject_get_taskGet Task DetailA
Read-onlyIdempotent

Calls GET /projects/{project}/tasks/{task}. This is the only task read endpoint that returns the long content field. Use it only after selecting a specific task from a summary list.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
projectYesProject ID.
taskYesTask ID.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, idempotent, and open world hints. The description adds value by noting that this endpoint returns the 'long content field,' a behavioral trait not covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that are front-loaded with the core action and uniqueness. No redundant words or unnecessary information. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description hints at the return value (long content field). Annotations cover behavioral context fully. The description is sufficiently complete for a simple read endpoint with well-documented parameters and sibling clues.

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

Parameters3/5

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

Schema description coverage is 100%, meaning all parameters have adequate descriptions in the schema itself. The tool description does not add further parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description specifies the exact HTTP method (GET) and endpoint path, and distinguishes this tool from siblings by stating it's the only task read endpoint returning the long content field. This provides a specific verb+resource with clear differentiation.

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

Usage Guidelines4/5

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

The description explicitly says 'Use it only after selecting a specific task from a summary list,' providing clear guidance on when to use. It implies that listing tasks is a prerequisite, but doesn't explicitly mention when not to use or list alternatives beyond that.

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

aiproject_list_projectsList ProjectsA
Read-onlyIdempotent

Calls GET /projects and returns a paginated lightweight project list with tasks_count. Use this before selecting a project ID for task operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
pageNoOptional page number.
per_pageNoOptional records per page. The API caps this at 100.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark as read-only, non-destructive, idempotent, open-world. Description adds pagination behavior and the 'lightweight' nature with tasks_count, which is useful beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with core action and result, then usage guidance. No extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, description mentions key fields (tasks_count, paginated list). Covers main use case adequately for a list tool. Could mention that it returns only lightweight info, not full project details.

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

Parameters3/5

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

Schema descriptions cover 100% of parameters. Description does not add significant extra meaning for parameters; pagination hint is already in schema descriptions. Satisfies baseline for high coverage.

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

Purpose5/5

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

Specific verb 'List' plus resource 'Projects', description details paginated lightweight list with tasks_count. Distinguishes from sibling tools like aiproject_get_project and aiproject_create_project by stating 'Use this before selecting a project ID'.

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

Usage Guidelines4/5

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

Directs use before task operations for selecting a project ID, but could be clearer about when not to use (e.g., when needing full project details). Still provides clear context.

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

aiproject_list_tasksList Project TasksA
Read-onlyIdempotent

Calls GET /projects/{project}/tasks and returns paginated task summaries only. It never returns long content. Use this to scan tasks and optionally filter by assignment type/status before calling aiproject_get_task for one selected task.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
projectYesProject ID.
pageNoOptional page number.
per_pageNoOptional records per page. The API caps this at 100.
typeNoOptional assignment team filter.
statusNoOptional assignment status filter.

TDQS

A4.9/5.0
Behavior5/5

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

Description adds pagination and 'never returns long content' beyond annotations which already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences. First explains what the tool does; second provides usage workflow. No filler words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description adequately describes return as paginated task summaries. Also provides workflow context with sibling tool, making it complete for decision-making.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds value by tying parameters to functionality: mentions filtering by type/status and pagination, and clarifies the project parameter is the path variable.

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

Purpose5/5

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

Description clearly states it calls GET /projects/{project}/tasks and returns paginated task summaries only, distinguishing it from sibling aiproject_get_task which retrieves a single task with full content.

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

Usage Guidelines5/5

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

Explicitly says to use this tool to scan tasks and optionally filter before calling aiproject_get_task for a selected task, providing clear guidance on when to use and the alternative.

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

aiproject_update_assignment_statusUpdate Task Assignment StatusA

Calls PATCH /projects/{project}/tasks/{task}/assignments/{type} to update one existing team's status. It does not create a missing assignment; if the task does not already have that type, the API returns 404. Use PUT aiproject_update_task to add or remove teams. The response is a task summary without content.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
projectYesProject ID.
taskYesTask ID.
typeYesAssignment team type: frontend, backend, or mobile.
statusYesAssignment status: waiting, working, or completed.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate mutation but not destructive or idempotent. Description adds that it does not create assignments, returns 404 on missing type, and response is a task summary without content. This provides useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no fluff. Front-loaded with HTTP method and endpoint, then key behavioral notes. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description mentions response format. Missing error handling details beyond 404, but overall sufficient for agent to use correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description clarifies that 'type' corresponds to team type, but does not add significant detail beyond what schema already provides.

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

Purpose5/5

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

Description clearly states the tool calls PATCH endpoint to update an existing assignment's status, and distinguishes from PUT aiproject_update_task which adds/removes teams. Verb 'update' and resource 'assignment status' are specific.

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

Usage Guidelines5/5

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

Explicitly says when to use this tool (update existing status) and when not (create missing assignment returns 404), and directs to PUT aiproject_update_task for adding/removing teams.

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

aiproject_update_projectUpdate ProjectA

Calls PUT /projects/{project}. This is a full project update, so send name, github_url, and clickup_url together.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
projectYesProject ID.
nameYesProject name.
github_urlYesProject GitHub URL.
clickup_urlYesProject ClickUp URL.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false. The description adds that it is a 'full project update' via PUT, implying the previous state is replaced. This provides behavioral context beyond annotations, but does not detail side effects or authorization needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the HTTP method and full update nature, and contains no extraneous information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core action but omits return value information (no output schema) and error conditions. Given the tool has 6 parameters and no output schema, a more complete description would mention what is returned on success.

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

Parameters3/5

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

Schema coverage is 100%, so the schema fully documents parameters. The description merely reiterates that name, github_url, and clickup_url should be sent together, adding no new semantic value beyond the schema.

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

Purpose5/5

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

The description specifies 'Calls PUT /projects/{project}. This is a full project update' which clearly identifies the HTTP verb and resource. It distinguishes from siblings like aiproject_create_project (create vs update) and aiproject_get_project (read), making its purpose unambiguous.

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

Usage Guidelines4/5

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

The description instructs to 'send name, github_url, and clickup_url together,' which is a clear usage guideline for performing a full update. However, it does not explicitly mention when not to use this tool (e.g., for partial updates) or suggest alternatives, leaving some ambiguity.

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

aiproject_update_taskUpdate Project TaskA

Calls PUT /projects/{project}/tasks/{task}. This is a full task update: title, content, and the complete new assignments list must be sent. Assignments omitted from the list are removed by the API. The response is a task summary without content.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseUrlNoOptional AIProject API root URL override. If omitted, AIPROJECT_BASE_URL from the MCP server environment is used. Accepts either http://127.0.0.1:8000 or http://127.0.0.1:8000/api/v1; app roots get /api/v1 appended automatically.
apiKeyNoOptional AIProject API key override. If omitted, AIPROJECT_API_KEY from the MCP server environment is used. The key is sent as X-API-Key.
projectYesProject ID.
taskYesTask ID.
titleYesTask title.
contentYesFull long task content. This is sent to create/update endpoints, but list/create/update responses return only task summaries without content.
assignmentsYesComplete assignment list for the task. For PUT, this replaces the previous assignment list; omitted old assignments are deleted by the API.

TDQS

A4.5/5.0
Behavior5/5

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

Description discloses that assignments omitted from the list are removed by the API, which is destructive behavior not captured by annotations (destructiveHint=false). Also explains response is a task summary without content.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three-sentence paragraph covering key points: HTTP method, full update requirement, behavior of assignments, and response format. Could be slightly more structured but remains concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers update semantics and response shape. Lacks explicit mention of error handling or authentication, but schema and annotations (openWorldHint) provide some context. Overall sufficient for a detailed update tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline 3. Description adds meaning for assignments (replacement behavior) and content (sent but not returned), which provides useful context beyond schema descriptions.

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

Purpose5/5

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

Description clearly states it calls PUT to update a task, specifying that it's a full update requiring all fields. It distinguishes from sibling tools like aiproject_create_task (create) and aiproject_update_assignment_status (partial update).

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

Usage Guidelines4/5

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

Explicitly says this is a full task update and that omitted assignments are removed, implying it should be used when replacing all task details. However, it does not explicitly contrast with sibling tools or state when not to use it.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv1.0.0
    • First observedaiproject_create_project
    • First observedaiproject_create_task
    • First observedaiproject_delete_project
    • First observedaiproject_delete_task
    • First observedaiproject_get_me
    • First observedaiproject_get_project
    • First observedaiproject_get_task
    • First observedaiproject_list_projects
    • First observedaiproject_list_tasks
    • First observedaiproject_update_assignment_status
    • First observedaiproject_update_project
    • First observedaiproject_update_task

TDQS

A4/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct operation on projects, tasks, or user info, with clear separation of concerns. No two tools have overlapping purposes.

Naming Consistency5/5

All tools follow the consistent verb_noun pattern with snake_case, prefixed by 'aiproject_', making the naming predictable and easy to parse.

Tool Count5/5

12 tools is an appropriate scope for a project/task management server, covering CRUD for two main entities plus user and assignment status operations.

Completeness4/5

Core CRUD lifecycle for projects and tasks is complete. Minor gap: no dedicated assignment creation tool, but assignments are managed through task creation/update, so it's a minor weakness.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers