Skip to main content
Glama

spreadsheet_generate

Generate Excel or CSV spreadsheets from structured data arrays with customizable sheets, headers, and filenames for reporting and data organization.

Instructions

Generate an Excel or CSV spreadsheet ($0.003)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
formatNoxlsx
filenameNoreport
sheetsYesArray of {name, headers, rows}

Implementation Reference

  • index.js:43-43 (registration)
    The tool 'spreadsheet_generate' is defined in the TOOLS array, specifying its input schema, endpoint, and price.
    { name: 'spreadsheet_generate', description: 'Generate an Excel or CSV spreadsheet', inputSchema: { type: 'object', properties: { format: { type: 'string', enum: ['xlsx', 'csv'], default: 'xlsx' }, filename: { type: 'string', default: 'report' }, sheets: { type: 'array', description: 'Array of {name, headers, rows}', items: { type: 'object' } } }, required: ['sheets'] }, endpoint: '/spreadsheet/generate', price: '$0.003' },
  • index.js:50-79 (handler)
    The `callTool` function serves as the generic handler that executes the API call for any tool, including 'spreadsheet_generate', based on its endpoint.
    async function callTool(endpoint, params) {
      const fetch = (await import('node-fetch')).default;
      const isGet = ['GET'].includes((TOOLS.find(t => t.endpoint === endpoint) || {}).method);
      
      const url = isGet 
        ? `${BASE_URL}${endpoint}?${new URLSearchParams(params)}`
        : `${BASE_URL}${endpoint}`;
      
      const res = await fetch(url, {
        method: isGet ? 'GET' : 'POST',
        headers: {
          'Content-Type': 'application/json',
          'Authorization': `Bearer ${API_KEY}`,
        },
        body: isGet ? undefined : JSON.stringify(params),
      });
      
      const text = await res.text();
      let data;
      try { data = JSON.parse(text); } catch { data = { raw: text }; }
      
      if (!res.ok) {
        if (res.status === 402) {
          throw new Error(`Insufficient credits. Add credits at https://iteratools.com. Cost: ${TOOLS.find(t=>t.endpoint===endpoint)?.price || 'see docs'}`);
        }
        throw new Error(`API error ${res.status}: ${text.substring(0, 200)}`);
      }
      
      return data;
    }
Behavior3/5

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

Provides useful cost information ($0.003) not found elsewhere, but fails to disclose critical behavioral traits given zero annotations: return format (file content vs URL), file persistence, or size 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?

Extremely concise single sentence with zero waste. However, given the tool's complexity (nested objects, file generation), it is overly terse rather than appropriately sized.

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?

Inadequate for complexity: no annotations, no output schema, low schema coverage (33%), and the description omits file handling behavior, sheets data structure requirements, and error conditions.

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?

Mentions 'Excel or CSV' which maps to the format enum, but with only 33% schema description coverage and a complex required 'sheets' parameter, the description fails to explain the expected structure ({name, headers, rows}) or filename conventions.

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 states a specific verb ('Generate') and clear resource ('Excel or CSV spreadsheet'), explicitly distinguishing it from siblings like chart_generate (visualizations) and pdf_generate (documents).

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 provided on when to choose this over chart_generate for tabular data, pdf_generate for reports, or whether to use csv vs xlsx formats for specific use cases.

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/fredpsantos33/itera-tools-mcp'

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