Skip to main content
Glama
Connectry-io

Connectry Architect Cert

Official

start_capstone_build

Initiate a guided capstone build to learn all 30 certification task statements by building your own project.

Instructions

Start or refine a guided capstone build. Build your own project while learning all 30 certification task statements hands-on.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
themeNoYour project idea or theme. Omit to see the 30 criteria first.

Implementation Reference

  • The main registration function registerStartCapstoneBuild that registers the 'start_capstone_build' tool with the MCP server. The handler logic handles 4 cases: (1) no theme - show criteria, (2) no active build - create new, (3) active shaping build - update theme, (4) active building build - error.
    export function registerStartCapstoneBuild(server: McpServer, db: Database.Database, userConfig: UserConfig): void {
      server.tool(
        'start_capstone_build',
        'Start or refine a guided capstone build. Build your own project while learning all 30 certification task statements hands-on.',
        {
          theme: z.string().optional().describe("Your project idea or theme. Omit to see the 30 criteria first."),
        },
        async ({ theme }) => {
          const userId = userConfig.userId;
          ensureUser(db, userId);
    
          // Case 1: No theme — return criteria with instructions
          if (!theme) {
            return {
              content: [{ type: 'text' as const, text: buildResponse(null) }],
            };
          }
    
          const activeBuild = getActiveBuild(db, userId);
    
          // Case 4: Active build in 'building' status — error
          if (activeBuild && activeBuild.status === 'building') {
            return {
              content: [{
                type: 'text' as const,
                text: "You have an active build in progress. Use capstone_build_step with action 'abandon' to start over.",
              }],
              isError: true,
            };
          }
    
          // Case 3: Active build in 'shaping' status — update theme
          if (activeBuild && activeBuild.status === 'shaping') {
            updateBuildTheme(db, activeBuild.id, theme);
            return {
              content: [{ type: 'text' as const, text: buildResponse(theme) }],
            };
          }
    
          // Case 2: No active build — create new build
          createBuild(db, userId, theme);
          return {
            content: [{ type: 'text' as const, text: buildResponse(theme) }],
          };
        }
      );
    }
  • Tool registration with name 'start_capstone_build', description, and Zod schema for the optional 'theme' parameter.
    server.tool(
      'start_capstone_build',
      'Start or refine a guided capstone build. Build your own project while learning all 30 certification task statements hands-on.',
      {
        theme: z.string().optional().describe("Your project idea or theme. Omit to see the 30 criteria first."),
      },
  • Registration call where registerStartCapstoneBuild is invoked with the server, db, and userConfig during tool setup.
      registerStartCapstoneBuild(server, db, userConfig);
      registerCapstoneBuildStep(server, db, userConfig);
      registerCapstoneBuildStatus(server, db, userConfig);
      registerDashboard(server, db, userConfig);
    }
  • Helper function formatCriteria() that formats the 30 architectural criteria across multiple domains into a readable string.
    function formatCriteria(): string {
      const lines: string[] = [];
      let currentDomain = 0;
    
      for (const criterion of CRITERIA) {
        if (criterion.domain !== currentDomain) {
          currentDomain = criterion.domain;
          if (lines.length > 0) lines.push('');
          lines.push(`Domain ${criterion.domain}: ${criterion.domainName}`);
        }
        lines.push(`  ${criterion.id} — ${criterion.title}: ${criterion.description}`);
      }
    
      return lines.join('\n');
    }
  • Helper function buildResponse() that builds the full response text including criteria, optional theme, and instructions.
    function buildResponse(theme: string | null): string {
      const sections: string[] = [
        '=== GUIDED CAPSTONE BUILD ===',
        '',
        '--- 30 Architectural Criteria ---',
        '',
        formatCriteria(),
      ];
    
      if (theme) {
        sections.push(
          '',
          '--- Your Project Theme ---',
          theme,
          '',
          '--- Instructions ---',
          "Review the criteria above against your project idea. Claude will analyze",
          "which criteria are naturally covered and suggest modifications for any gaps.",
          "When you're satisfied with coverage, use capstone_build_step with action",
          "'confirm' to begin building.",
        );
      } else {
        sections.push(
          '',
          '--- Instructions ---',
          'Choose a project theme that excites you. The best capstone projects are ones',
          'you actually want to build. Provide your theme using start_capstone_build',
          "with a 'theme' parameter, and Claude will analyze how well it covers the",
          '30 criteria above.',
        );
      }
    
      return sections.join('\n');
    }
Behavior2/5

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

With no annotations, the description carries full burden but fails to disclose side effects, idempotency, or resource creation. 'Start or refine' is vague and does not explain behavior on repeated calls or state changes.

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, front-loaded with purpose, no wasted words. Ideal conciseness.

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?

Lacks explanation of return values, subsequent steps, or how 'refine' differs from 'start'. No output schema and no annotations, so the description should provide more context for an interactive build 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?

The description adds meaning beyond the schema by noting that omitting 'theme' shows the 30 criteria first. This clarifies a key usage pattern. Schema coverage is 100%, so baseline is 3; the added context raises it to 4.

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 starts or refines a guided capstone build and connects it to learning 30 certification tasks. It is specific about the resource (capstone build) and action, but does not distinguish from siblings like scaffold_project or capstone_build_step.

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 like scaffold_project, capstone_build_step, or others. The description does not provide context for optimal usage or exclusions.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Connectry-io/connectrylab-architect-cert-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server