Skip to main content
Glama

@alabasta/mcp

MCP server that connects coding agents (Claude Code, Codex, Cursor, …) to Alabasta tasks. The agent can read a task, start work, and submit a structured resolution — what changed, verification, what's unverified, deferred work, references — which a human reviews inside Alabasta.

It never overwrites the task description and never marks a task done: submitting a resolution moves the task to review, and only a human Accept reaches Done.

This is a thin stdio adapter over Alabasta's /agent/v1/* HTTP API. The API key encodes the workspace and principal, so that plus the site URL is all the config it needs.

Setup

  1. In Alabasta, go to Workspace settings → Agent access and generate an API key (shown once).

  2. Note your deployment's site URL — the https://<deployment>.convex.site value (NEXT_PUBLIC_CONVEX_SITE_URL).

Claude Code

claude mcp add alabasta \
  --env ALABASTA_SITE_URL=https://<deployment>.convex.site \
  --env ALABASTA_API_KEY=alab_sk_... \
  -- npx -y @alabasta/mcp

Codex / manual (.mcp.json)

{
  "mcpServers": {
    "alabasta": {
      "command": "npx",
      "args": ["-y", "@alabasta/mcp"],
      "env": {
        "ALABASTA_SITE_URL": "https://<deployment>.convex.site",
        "ALABASTA_API_KEY": "alab_sk_..."
      }
    }
  }
}

Environment

Variable

Required

Purpose

ALABASTA_SITE_URL

yes

https://<deployment>.convex.site

ALABASTA_API_KEY

yes

Workspace API key (alab_sk_...)

ALABASTA_TASK_ID

no

Default task for this session (a launcher can export it, so tools work without a taskId argument)

ALABASTA_RUN_ID

no

Correlates a resolution to an agent run (used as externalRunId for idempotent resubmits)

Related MCP server: TaskMarket MCP Server

Tools

Tool

Does

alabasta_get_context

Call this once, first. Objective, requirements, the constraints that apply, and anything blocking the task

alabasta_read_resource

Read one alabasta:// URI from the context's resources[] — on demand, not upfront

alabasta_get_task

Read a task by taskId or identifier (e.g. TOM-24)

alabasta_get_project_brief

Project objective, status, milestones, initiative, agent instructions

alabasta_list_my_tasks

List tasks assigned to you, optional status filter

alabasta_start_task_work

Move a task to in progress

alabasta_add_task_comment

Post a progress note / question / finding on a task

alabasta_create_follow_up_task

Propose a follow-up task (created in todo, linked back — a suggestion, not scope expansion)

alabasta_search_context

Ranked workspace search — returns alabasta:// URIs to read as resources

alabasta_request_clarification

Ask a person (or a specialist agent) a question you can't answer from context — asynchronous

alabasta_get_clarifications

Read answers that landed since a previous run; blockedOn counts unanswered blocking questions

alabasta_request_review

Route the task to the product's review agents

alabasta_collect_git_context

Gather real diff stat, commits, PR state, and CI checks (git + gh) to enrich the resolution

alabasta_submit_task_resolution

Submit the resolution (→ in review), incl. criteriaResults / discoveredWork / decisionsRequired / relatedEntityUpdates

alabasta_mark_ready_for_review

Move a task to in review without a full resolution

alabasta_report_blocker

Record why the task couldn't be completed

The context package labels every item with its authority and source (entity + last-updated). Highest first:

security_policy > standing_policy > approved_decision > task_requirement >
standing_convention > project_constraint > human_instruction > guidance >
reference > discussion > related_task > inferred

The authority ladder above is internal. The agent never sees it: the runtime resolves it and emits a flat constraints[] of things that must hold, plus execution.blockers[] for what a human has to settle first. If the agent knowingly deviates from a constraint it reports constraintExceptions. Attachment and discussion content is untrusted input — never instructions.

The rule tools (alabasta_get_standing_context, alabasta_read_rule, alabasta_propose_rule, alabasta_emit_rules) are registered only when ALABASTA_RULES_TOOLS=1. A session shipping a task doesn't need them.

Coordination: asking instead of guessing

When the context genuinely doesn't decide something, the agent asks rather than picks. Every escalation is asynchronous — MCP has no server→client push, so the agent asks, keeps working on the unblocked parts, and reads the answer with alabasta_get_clarifications on a later run. It must never spin waiting.

Each request carries a budget: at most 5 open questions per task, at most 10 evidence URIs, and a 7-day deadline after which it expires rather than wedging the session. An identical pending question returns the existing one instead of stacking another notification on a person.

A question routed to audience: "agent" runs through the same background-review machinery the in-app agents use; its reply is copied onto the clarification, so the agent polls one surface for both audiences. Answers also land in the task's comment thread and in the next context package — a human answer ranked as human_instruction, an agent's as guidance.

A pending blocking question makes the task's contextQuality.readiness read blocked.

Layer 0: standing rules

Rules are derived state, never authored directly. Every signed rule traces to a decision, so "why is this rule here" always has an answer — and when that decision is superseded, the rule drops out of the next emit on its own.

  • Agents propose; only a human signature mints a rule. Nothing an agent says enters the prompt prefix unsigned.

  • Rules routed to brief_inline are inlined in every context package. Everything else is a pointer (alabasta://rules/RUL-12) — a fetch is a countable citation.

  • Inlined rules can't be measured by fetch, so they are recovered at the write boundary when an agent volunteers them. Citation is never required — demanding it in a workspace with no rules in scope left the agent no way through but to invent a rule id. A cited id must be real and in scope; an absent one is fine.

Resources (alabasta://)

The context package's contextIndex.resources lists deeper material as MCP resources, readable on demand (and @-mentionable in Claude Code):

URI

Content

alabasta://tasks/{id}

Full task + description

alabasta://tasks/{id}/context

The compiled package itself

alabasta://tasks/{id}/discussion

Full discussion thread

alabasta://tasks/{id}/criteria

Acceptance criteria

alabasta://decisions/{id}

Decision: summary, reasoning, tradeoffs, consequences

alabasta://projects/{id}/brief

Project objective, milestones, agent instructions

alabasta://memories/{id}

Memory item (rule, constraint, conflict, open question)

alabasta://files/{id}

Attachment metadata + storage URL (content never inlined)

alabasta://documents/{id}

Document content

alabasta://rules/{id}

One standing rule + the decision behind it

alabasta://standing/context

Every rule in scope

The package also carries conflicts[] (deterministic flags only — superseded decisions, contradicts relations, conflict/open-question memories, and rule-vs-task conflicts an earlier run actually reported; no NLP guesswork) and contextQuality (readiness + what's missing). A conflict means: ask, don't guess.

Resolution submits are idempotent on (taskId, externalRunId, revision) — a resubmit updates the same record; a new revision creates a new attempt.

CLI launcher

Bind a coding-agent session to a task in one command:

alabasta work TOM-24 --agent claude   # or --agent codex
alabasta work TOM-24 --branch         # also cut a branch: tom/TOM-24-<slug>
alabasta work TOM-24 --print          # print the env + command instead of launching

It fetches the task, mints a run id, exports ALABASTA_TASK_ID + ALABASTA_RUN_ID, and launches the agent with a priming prompt — the installed plugin (skill + MCP + hooks) takes it from there. --print is what the Alabasta UI's "Copy agent command" produces. Needs ALABASTA_SITE_URL + ALABASTA_API_KEY in the environment.

Syncing rules into the repo

alabasta rules sync                      # write AGENTS.md from the signed rules
alabasta rules sync --target claude_md   # writes CLAUDE.md
alabasta rules sync --scope repo:web     # workspace rules + this repo's rules
alabasta rules sync --product <id>       # workspace + product rules
alabasta rules sync --check              # exit 1 if the on-disk digest has drifted

The written file carries a digest header. It is a build artifact — hand edits are overwritten, and --check (also run automatically by the SessionStart hook) tells you when the file and the workspace have diverged. Commit it like any other generated file.

Claude Code plugin (skill + enforcement)

claude-plugin/ bundles three layers so the feature is reliable, not just possible:

  • Hands.mcp.json wires the MCP server above (set ALABASTA_SITE_URL + ALABASTA_API_KEY in your env).

  • Trainingskills/task-resolution/SKILL.md teaches the agent the resolution protocol, format, and invariants (preserve scope; separate verified from unverified; no conversational text).

  • Enforcementhooks/stop.py (a Stop hook) blocks the agent from finishing when it edited code for a linked Alabasta task but never submitted a resolution. It nudges at most twice, then allows the stop, so it can never trap a session. Task linkage comes from ALABASTA_TASK_ID or a branch name containing an identifier (e.g. tom/TOM-24-fix). hooks/rules_drift.py (a SessionStart hook) warns when the repo's emitted rules file has drifted from the workspace. Advisory only — it never blocks, and fails open on any error.

Requires python3 (stdlib only). Install it via the bundled marketplace:

/plugin marketplace add cowboyshibuya/alabasta-agent-bridge   # or a local path to this repo
/plugin install alabasta@alabasta

The marketplace catalog is .claude-plugin/marketplace.json at the repo root; the plugin source is the self-contained claude-plugin/ directory. (Relative-path sources need a git or local marketplace add, not a bare URL to the JSON file.) Alternatively, copy hooks/hooks.json into your .claude/settings.json and the skill into .claude/skills/.

Develop

bun install      # or npm install
npm run build    # tsc -> dist/
node dist/index.js

Roadmap

Done: MCP server (hands), resolution skill (training), Stop-hook enforcement (Claude Code and Codex — see codex/), the alabasta work CLI launcher, Git/CI/PR enrichment (alabasta_collect_git_context), the marketplace-installable Claude Code plugin bundle, and Layer 0 standing rules (standing context, rules sync + drift hook, rule citation at the write boundary). Next: a remote HTTP transport (enabling per-user OAuth) and automated CI publishing — see DEVELOPMENT.md.

Contributing / maintaining this repo

See DEVELOPMENT.md — what MCP is, how the pieces fit together, how to add a new tool, and how to publish a new version (including the exact failure modes hit the first time and how to avoid them).

Available Tools

7 tools
alabasta_collect_git_contextCollect Git/CI contextA

Gather real diff stat, commits, PR state, and CI checks from the local repo (git + gh). Call before submitting and merge the result into alabasta_submit_task_resolution. Best-effort — missing pieces are omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseRefNoBase ref to diff against (default: origin default branch, else HEAD~1)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full disclosure burden. It reveals best-effort behavior ('Best-effort — missing pieces are omitted') and the use of local git/gh, which is helpful. However, it does not explain the output structure, potential failure modes, or whether network access is required, leaving gaps.

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 with no redundant words. Each sentence adds functional value: the first states what it gathers, the second provides usage context and reliability caveat.

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 one-parameter tool with no output schema, the description covers what it gathers, when to call it, and its best-effort behavior. It lacks a precise output contract, but the enumerated content and merge instruction provide adequate context for an agent.

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% and already fully explains baseRef with its default behavior. The tool description adds no additional parameter-specific meaning, so the baseline score of 3 applies.

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 uses a specific verb ('Gather') and clearly enumerates the resource ('real diff stat, commits, PR state, and CI checks') and source ('local repo'). It distinguishes from sibling tools by explicitly linking to alabasta_submit_task_resolution as a pre-submission step.

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?

It gives explicit when-to-use guidance: 'Call before submitting and merge the result into alabasta_submit_task_resolution.' This establishes workflow context without formally excluding alternatives, but no competing tool exists for this purpose.

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

alabasta_get_taskGet Alabasta taskA

Read an Alabasta task (title, description, status, priority) before editing. Pass taskId or identifier (e.g. TOM-24).

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdNo
identifierNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It clearly indicates a read-only operation ('Read') and discloses the fields returned, which is useful behavioral context. It does not mention edge cases like not-found behavior or output format, but for a simple read tool this is adequate.

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 short sentences, front-loaded with the purpose and immediately followed by usage guidance. Every part adds value without redundancy.

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 read tool with no output schema and no annotations, the description provides the key fields returned and both input methods. It lacks details on response format or error handling, but the tool's simplicity and the presence of sibling tools make this sufficiently complete for an agent to invoke correctly.

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?

The input schema provides no descriptions for the two parameters, but the description compensates by instructing to pass 'taskId or identifier' and gives an example identifier (TOM-24). This clarifies that the parameters are alternative identifiers, adding meaningful semantics 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 clearly states a specific action ('Read an Alabasta task') and the resource, listing key fields (title, description, status, priority). It distinguishes itself from siblings like alabasta_list_my_tasks by focusing on reading a single task rather than listing tasks.

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 advises using this tool 'before editing' and instructs to pass taskId or identifier. It does not explicitly name alternatives or when not to use it, but the 'before editing' context and sibling tool names make the intended usage clear.

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

alabasta_list_my_tasksList my Alabasta tasksA

List tasks assigned to you, optionally filtered by status.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral transparency burden. It only describes the action without disclosing whether the operation is read-only, what the return format is, or any side effects. This is insufficient for full transparency.

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?

A single sentence that is concise and front-loaded with the verb 'List'. No extraneous words.

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 tool is simple with one optional parameter, but given no annotations or output schema, the description could mention valid status values or that it returns a list of task objects. It is adequate but leaves gaps.

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?

The schema has a single 'status' parameter with no description and 0% coverage. The description adds that it's an optional filter, providing some semantics, but it does not indicate valid status values or format, leaving the agent to guess.

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 'List tasks assigned to you' with a specific verb and resource, distinguishing it from sibling tools like get_task which retrieves a single task. The optional status filter adds clarity.

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 clear context: use this tool to list tasks assigned to you, optionally filtered by status. There are no explicit exclusions or alternatives mentioned, but the context is unambiguous given the sibling tools are all actions for specific tasks.

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

alabasta_mark_ready_for_reviewMark task ready for reviewA

Move a task into review without submitting a full resolution.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdNo

TDQS

A3.6/5.0
Behavior2/5

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

There are no annotations, so the description must fully disclose behavior. It only states the status change and provides no information about prerequisites, permissions, reversibility, side effects, or return value. This is a minimal behavioral disclosure.

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 a single, front-loaded sentence with no filler or redundant information. Every word adds value, especially the distinction from full resolution submission.

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?

For a simple single-parameter tool, the description covers the core action and provides some workflow context. However, with no annotations and no output schema, it lacks detail on preconditions and what the caller should expect after invocation.

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

Parameters2/5

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

The schema provides only a parameter name and type with no description, and the description does not mention taskId at all. The parameter is inferable from its name, but the schema marks it as not required (0 required parameters), which is ambiguous and unaddressed.

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 uses a specific verb ('Move') and resource ('task') and clearly states the action: changing task status to 'review'. It also differentiates itself from the sibling tool 'submit_task_resolution' by explicitly saying 'without submitting a full resolution'.

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 phrase 'without submitting a full resolution' gives useful context for when this tool is appropriate versus a full resolution submission. However, it doesn't explicitly name alternative tools or state conditions for 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.

alabasta_report_blockerReport a blockerA

Record why the task could not be completed, for a human to triage.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYes
taskIdNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It states the purpose (for human triage) but does not mention side effects, persistence, or any actions taken after recording. This is minimal but not misleading.

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 a single, well-structured sentence that immediately conveys purpose and audience with no redundant words.

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?

This is a simple tool, but since there is no output schema and minimal parameter info, the description could have stated what happens after reporting (e.g., record created, no immediate feedback). It is adequate for a basic reporting action but leaves gaps.

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

Parameters2/5

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 explain the parameters beyond implying 'reason' is the explanation. The optional 'taskId' is omitted entirely, leaving the agent without guidance on how to populate these fields.

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 uses a specific verb 'Record' and identifies the resource: 'why the task could not be completed, for a human to triage.' This clearly distinguishes it from sibling tools like submit_task_resolution or mark_ready_for_review.

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 implies the tool should be used when a task cannot be completed, and the reason needs to be triaged by a human. It provides clear context without explicitly naming alternatives, but the intended scenario is evident.

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

alabasta_start_task_workStart work on a taskB

Mark a task in progress before you begin editing.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdNo

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for disclosing side effects. It only states the core state transition, omitting details like what happens if the task is already in progress, whether the call is idempotent, or any permission requirements. The description is too thin for a mutation operation.

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 a single, front-loaded sentence with no redundancy. It states the essential action and timing in a compact form, making it easy to parse and remember.

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?

For a tool with no annotations and no output schema, the description is severely incomplete. It fails to document the parameter, potential edge cases, or behavioral constraints. While the tool is conceptually simple, the absence of parameter semantics and error handling makes it difficult for an agent to invoke correctly in all situations.

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

Parameters1/5

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

The schema has a single parameter (taskId) with 0% description coverage, and the tool description does not mention it at all. Since the schema provides no description and the description doesn't compensate, the agent is left uninformed about how to specify which task to mark in progress, especially given that the parameter is not marked as required.

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 action ('Mark a task in progress') with a specific resource (a task) and a defined state change. It differentiates from sibling tools like 'mark_ready_for_review' or 'submit_task_resolution' by focusing on the pre-editing status transition.

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 phrase 'before you begin editing' provides clear contextual guidance on when to invoke this tool. While it doesn't explicitly mention alternatives or exclusions, the temporal cue is sufficient for a simple state-change tool, making it easy to select among siblings.

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

alabasta_submit_task_resolutionSubmit task resolutionA

Submit a STRUCTURED resolution after completing work. Moves the task to review for a human to accept — it never marks the task done and never edits the task description. Distinguish verified from unverified claims. Do not include conversational prompts.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNo
checksNo
clientNo
taskIdNo
changesNo
commitsNo
outcomeYes
summaryYes
deferredNo
diffStatNo
providerNo
revisionNo
sessionIdNo
referencesNo
limitationsNo
notVerifiedNo
pullRequestNo
verificationNo
externalRunIdNo

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals important traits: moves to human review, never marks done, never edits description, requires structured resolution, and distinguishes verified/unverified claims. However, it does not cover other aspects like permissions, failure modes, or reversibility.

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 concise and front-loaded, using three focused sentences to convey purpose and key constraints. Every sentence adds value; there is no fluff or repetition.

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 the tool's complexity (19 parameters, nested objects, no output schema) and zero annotation coverage, the description is insufficient for correct invocation. It explains purpose and some behavior but does not describe required inputs, return values, or how to structure the resolution, leaving the agent under-informed.

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

Parameters1/5

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

Schema description coverage is 0%, and the description mentions no parameter names or details. It only vaguely refers to 'STRUCTURED resolution' and 'verified vs unverified claims', which does not help the agent understand the required outcome and summary fields or the variety of optional parameters. This is a severe gap.

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's function: submitting a structured resolution after completing work. It explicitly distinguishes itself from related actions by noting it never marks the task done or edits the task description, making it identifiable among siblings like alabasta_mark_ready_for_review.

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

Usage Guidelines3/5

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

The description indicates use after completing work and clarifies that it does not mark the task done, but it does not explicitly name alternative tools or provide when-not-to-use guidance. It implies usage context but lacks explicit exclusions or comparisons with sibling tools.

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. 7 tool updatesv0.1.1
    • First observedalabasta_collect_git_context
    • First observedalabasta_get_task
    • First observedalabasta_list_my_tasks
    • First observedalabasta_mark_ready_for_review
    • First observedalabasta_report_blocker
    • First observedalabasta_start_task_work
    • First observedalabasta_submit_task_resolution

TDQS

A4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct action in the task workflow: reading, listing, starting work, gathering context, submitting a resolution, moving to review, and reporting blockers. No two tools overlap in purpose; even submit vs mark-ready are differentiated by whether a resolution is included.

Naming Consistency5/5

All tools follow the consistent pattern alabasta_<verb>_<object> using snake_case. Verbs are specific and descriptive (get, list, start, collect, submit, mark, report), and objects clarify the target (task, git_context, resolution).

Tool Count5/5

Seven tools is well within the ideal 3-15 range and each tool serves a necessary step in the workflow. The count is neither bloated nor sparse, and each tool has a clear role without redundancy.

Completeness5/5

The tool set covers the full lifecycle of task work: retrieve, list, begin, gather supporting context, submit outcome, escalate for review, or report a blocker. No critical workflow step is missing; the human-in-the-loop acceptance is intentionally outside the agent's scope but the agent has all needed actions to complete and hand off.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding agents to interact with ClawWork task management, allowing them to access task feeds, claim and complete tasks, post comments, and submit artifacts.
    31 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables agents to delegate tasks to human/AI workers on TaskMarket by listing, inspecting, and submitting work, while leaving spending flows to the user-authorized CLI.
    9
    9 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables coding agents to receive and act on voice-captured tasks delivered as GitHub issues, including retrieving full context, adding notes, asking the developer questions, and closing tasks when complete.
    MIT