Skip to main content
Glama
suhitanantula

LLV Helix Framework

create_line

Define a path or connection between two points with customizable rhythm to shape strategic flows in creative workflows.

Instructions

Create a line - a connection or path between points

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesName of the line
fromYesStarting point
toYesEnding point
rhythmNoRhythm of the line

Implementation Reference

  • The createLine method is the handler function that executes the 'create_line' tool logic. It validates required args (name, from, to), checks for duplicate names, creates a line object with a generated rhythm, stores it, and returns a success response.
    createLine(args) {
      const { name, from, to, rhythm = 'steady' } = args;
    
      if (!name || name.trim().length === 0) {
        return {
          content: [
            {
              type: 'text',
              text: `❌ Line name is required. Please provide a name for the line.`,
            },
          ],
        };
      }
    
      if (!from || from.trim().length === 0) {
        return {
          content: [
            {
              type: 'text',
              text: `❌ Starting point (from) is required. Please specify where the line starts.`,
            },
          ],
        };
      }
    
      if (!to || to.trim().length === 0) {
        return {
          content: [
            {
              type: 'text',
              text: `❌ Ending point (to) is required. Please specify where the line ends.`,
            },
          ],
        };
      }
    
      if (this.lines.has(name)) {
        return {
          content: [
            {
              type: 'text',
              text: `⚠️ Line "${name}" already exists. Use a different name or trace the existing line.`,
            },
          ],
        };
      }
    
      const line = {
        name,
        from,
        to,
        rhythm,
        created_at: new Date().toISOString(),
        traces: [],
      };
    
      this.lines.set(name, line);
      this.rhythms.set(`line_${name}`, this.generateRhythm(rhythm));
    
      return {
        content: [
          {
            type: 'text',
            text: `〰️ Line "${name}" created!\n\nFrom: ${from} → To: ${to}\nRhythm: ${rhythm}\n\n${this.visualizeLineRhythm(rhythm)}\n\nThe line is ready to carry messages with ${rhythm} rhythm.`,
          },
        ],
      };
    }
  • Input schema definition for the 'create_line' tool, specifying name (string, required), from (string, required), to (string, required), and rhythm (string enum with optional values: steady, accelerating, pulsing, syncopated, flowing).
    {
      name: 'create_line',
      description: 'Create a line - a connection or path between points',
      inputSchema: {
        type: 'object',
        properties: {
          name: {
            type: 'string',
            description: 'Name of the line',
          },
          from: {
            type: 'string',
            description: 'Starting point',
          },
          to: {
            type: 'string',
            description: 'Ending point',
          },
          rhythm: {
            type: 'string',
            enum: ['steady', 'accelerating', 'pulsing', 'syncopated', 'flowing'],
            description: 'Rhythm of the line',
          },
        },
        required: ['name', 'from', 'to'],
      },
    },
  • index.js:331-332 (registration)
    The registration/dispatch point where the tool name 'create_line' is matched in the CallToolRequestSchema switch-case and routed to this.createLine(args).
    case 'create_line':
      return this.createLine(args);
  • Helper function visualizeLineRhythm used by createLine to generate a visual ASCII representation of the line's rhythm pattern.
    visualizeLineRhythm(rhythm) {
      const patterns = {
        steady: '━━━━━━━━',
        accelerating: '━━━━━━━━━⟫',
        pulsing: '━ ━ ━ ━',
        syncopated: '━━ ━ ━━━',
        flowing: '〰️〰️〰️〰️',
      };
      return patterns[rhythm] || '━━━━━━━━';
    }
  • index.js:46-46 (registration)
    The tool is declared with name 'create_line' in the ListToolsRequestSchema handler, making it discoverable to MCP clients.
    name: 'create_line',
Behavior2/5

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

No annotations are provided, and the description only says 'Create a line' without disclosing behavioral traits such as idempotency, side effects, or permissions. The description carries the full burden but offers minimal insight.

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?

The description is a single concise sentence that is front-loaded. It is efficient with no wasted words, earning its place.

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?

Despite 4 parameters and no output schema or annotations, the description only states the basic action. It fails to explain return values, side effects, or any contextual details needed to use the tool effectively.

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 input schema already describes all parameters. The description adds 'connection or path between points' but does not enhance understanding beyond what the schema provides. Baseline 3 is appropriate.

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 creates a line as a connection or path between points, using a specific verb and resource. It is distinct from siblings like 'trace_line' but does not explicitly differentiate.

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?

The description provides no guidance on when to use this tool versus alternatives, nor any context about prerequisites or exclusions. Agents lack direction for decision-making.

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/suhitanantula/llv-helix'

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