@atmaticai/agent-tools 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/a2a/index.d.mts +169 -0
- package/dist/a2a/index.d.ts +169 -0
- package/dist/a2a/index.js +6012 -0
- package/dist/a2a/index.js.map +1 -0
- package/dist/a2a/index.mjs +5934 -0
- package/dist/a2a/index.mjs.map +1 -0
- package/dist/archive/index.d.mts +1 -0
- package/dist/archive/index.d.ts +1 -0
- package/dist/archive/index.js +90 -0
- package/dist/archive/index.js.map +1 -0
- package/dist/archive/index.mjs +80 -0
- package/dist/archive/index.mjs.map +1 -0
- package/dist/cli.js +4441 -164
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +4408 -161
- package/dist/cli.mjs.map +1 -1
- package/dist/color/index.d.mts +1 -0
- package/dist/color/index.d.ts +1 -0
- package/dist/color/index.js +347 -0
- package/dist/color/index.js.map +1 -0
- package/dist/color/index.mjs +336 -0
- package/dist/color/index.mjs.map +1 -0
- package/dist/crypto/index.d.mts +1 -0
- package/dist/crypto/index.d.ts +1 -0
- package/dist/crypto/index.js +116 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/index.mjs +108 -0
- package/dist/crypto/index.mjs.map +1 -0
- package/dist/csv/index.d.mts +1 -0
- package/dist/csv/index.d.ts +1 -0
- package/dist/csv/index.js +371 -0
- package/dist/csv/index.js.map +1 -0
- package/dist/csv/index.mjs +348 -0
- package/dist/csv/index.mjs.map +1 -0
- package/dist/datetime/index.d.mts +1 -0
- package/dist/datetime/index.d.ts +1 -0
- package/dist/datetime/index.js +234 -0
- package/dist/datetime/index.js.map +1 -0
- package/dist/datetime/index.mjs +224 -0
- package/dist/datetime/index.mjs.map +1 -0
- package/dist/diff/index.d.mts +2 -0
- package/dist/diff/index.d.ts +2 -0
- package/dist/diff/index.js +84 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/diff/index.mjs +78 -0
- package/dist/diff/index.mjs.map +1 -0
- package/dist/excel/index.d.mts +1 -0
- package/dist/excel/index.d.ts +1 -0
- package/dist/excel/index.js +163 -0
- package/dist/excel/index.js.map +1 -0
- package/dist/excel/index.mjs +153 -0
- package/dist/excel/index.mjs.map +1 -0
- package/dist/image/index.d.mts +1 -0
- package/dist/image/index.d.ts +1 -0
- package/dist/image/index.js +123 -0
- package/dist/image/index.js.map +1 -0
- package/dist/image/index.mjs +107 -0
- package/dist/image/index.mjs.map +1 -0
- package/dist/index--vbnYfdE.d.mts +142 -0
- package/dist/index--vbnYfdE.d.ts +142 -0
- package/dist/index-7FZQloN-.d.mts +62 -0
- package/dist/index-7FZQloN-.d.ts +62 -0
- package/dist/index-7XgaTVH5.d.mts +93 -0
- package/dist/index-7XgaTVH5.d.ts +93 -0
- package/dist/index-7bvFmh45.d.mts +87 -0
- package/dist/index-7bvFmh45.d.ts +87 -0
- package/dist/index-BDZcIVCU.d.mts +53 -0
- package/dist/index-BDZcIVCU.d.ts +53 -0
- package/dist/index-BKeYao0B.d.mts +320 -0
- package/dist/index-BKeYao0B.d.ts +320 -0
- package/dist/index-BN00EnUU.d.mts +55 -0
- package/dist/index-BN00EnUU.d.ts +55 -0
- package/dist/index-BZDcrPs-.d.mts +316 -0
- package/dist/index-BZDcrPs-.d.ts +316 -0
- package/dist/index-CQ1EukC4.d.mts +59 -0
- package/dist/index-CQ1EukC4.d.ts +59 -0
- package/dist/index-CgRVnFOt.d.mts +91 -0
- package/dist/index-CgRVnFOt.d.ts +91 -0
- package/dist/index-Dh47fgVS.d.mts +216 -0
- package/dist/index-Dh47fgVS.d.ts +216 -0
- package/dist/index-DjBDZzuj.d.mts +54 -0
- package/dist/index-DjBDZzuj.d.ts +54 -0
- package/dist/index-FFrvmr-n.d.mts +50 -0
- package/dist/index-FFrvmr-n.d.ts +50 -0
- package/dist/index-QWC8yIgW.d.mts +106 -0
- package/dist/index-QWC8yIgW.d.ts +106 -0
- package/dist/index-fJD8SORm.d.mts +61 -0
- package/dist/index-fJD8SORm.d.ts +61 -0
- package/dist/index-pPy_XDQU.d.mts +56 -0
- package/dist/index-pPy_XDQU.d.ts +56 -0
- package/dist/index-rwh9hdD9.d.mts +68 -0
- package/dist/index-rwh9hdD9.d.ts +68 -0
- package/dist/index-uXdkAfea.d.mts +93 -0
- package/dist/index-uXdkAfea.d.ts +93 -0
- package/dist/index.d.mts +25 -5
- package/dist/index.d.ts +25 -5
- package/dist/index.js +5195 -147
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5145 -145
- package/dist/index.mjs.map +1 -1
- package/dist/json/index.d.mts +1 -0
- package/dist/json/index.d.ts +1 -0
- package/dist/json/index.js +599 -0
- package/dist/json/index.js.map +1 -0
- package/dist/json/index.mjs +552 -0
- package/dist/json/index.mjs.map +1 -0
- package/dist/markdown/index.d.mts +1 -0
- package/dist/markdown/index.d.ts +1 -0
- package/dist/markdown/index.js +151 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/index.mjs +139 -0
- package/dist/markdown/index.mjs.map +1 -0
- package/dist/math/index.d.mts +1 -0
- package/dist/math/index.d.ts +1 -0
- package/dist/math/index.js +247 -0
- package/dist/math/index.js.map +1 -0
- package/dist/math/index.mjs +240 -0
- package/dist/math/index.mjs.map +1 -0
- package/dist/pdf/index.d.mts +1 -0
- package/dist/pdf/index.d.ts +1 -0
- package/dist/pdf/index.js +628 -0
- package/dist/pdf/index.js.map +1 -0
- package/dist/pdf/index.mjs +598 -0
- package/dist/pdf/index.mjs.map +1 -0
- package/dist/physics/index.d.mts +1 -0
- package/dist/physics/index.d.ts +1 -0
- package/dist/physics/index.js +467 -0
- package/dist/physics/index.js.map +1 -0
- package/dist/physics/index.mjs +435 -0
- package/dist/physics/index.mjs.map +1 -0
- package/dist/regex/index.d.mts +1 -0
- package/dist/regex/index.d.ts +1 -0
- package/dist/regex/index.js +93 -0
- package/dist/regex/index.js.map +1 -0
- package/dist/regex/index.mjs +88 -0
- package/dist/regex/index.mjs.map +1 -0
- package/dist/settings/index.d.mts +41 -0
- package/dist/settings/index.d.ts +41 -0
- package/dist/settings/index.js +150 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/index.mjs +143 -0
- package/dist/settings/index.mjs.map +1 -0
- package/dist/sql/index.d.mts +1 -0
- package/dist/sql/index.d.ts +1 -0
- package/dist/sql/index.js +146 -0
- package/dist/sql/index.js.map +1 -0
- package/dist/sql/index.mjs +139 -0
- package/dist/sql/index.mjs.map +1 -0
- package/dist/structural/index.d.mts +1 -0
- package/dist/structural/index.d.ts +1 -0
- package/dist/structural/index.js +608 -0
- package/dist/structural/index.js.map +1 -0
- package/dist/structural/index.mjs +588 -0
- package/dist/structural/index.mjs.map +1 -0
- package/dist/text/index.d.mts +1 -0
- package/dist/text/index.d.ts +1 -0
- package/dist/text/index.js +250 -0
- package/dist/text/index.js.map +1 -0
- package/dist/text/index.mjs +242 -0
- package/dist/text/index.mjs.map +1 -0
- package/dist/xml/index.d.mts +1 -0
- package/dist/xml/index.d.ts +1 -0
- package/dist/xml/index.js +188 -0
- package/dist/xml/index.js.map +1 -0
- package/dist/xml/index.mjs +180 -0
- package/dist/xml/index.mjs.map +1 -0
- package/package.json +138 -6
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tools/json.ts","../src/tools/csv.ts","../src/tools/pdf.ts","../src/tools/xml.ts","../src/tools/excel.ts","../src/tools/image.ts","../src/tools/markdown.ts","../src/tools/archive.ts","../src/tools/regex.ts","../src/tools/diff.ts","../src/tools/sql.ts","../src/tools/crypto.ts","../src/tools/datetime.ts","../src/tools/text.ts","../src/tools/math.ts","../src/tools/color.ts","../src/tools/physics.ts","../src/tools/structural.ts","../src/tools/index.ts","../src/server.ts","../src/transports/http.ts","../src/transports/sse.ts","../src/cli.ts"],"names":["json","csv","pdf","xml","excel","image","markdown","archive","regex","diff","sql","cryptoTools","datetime","text","math","result","color","physics","structural","Server","ListToolsRequestSchema","settings","settingsService","CallToolRequestSchema","StdioServerTransport","express","Command"],"mappings":"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","file":"cli.js","sourcesContent":["import { json } from '@atmaticai/agent-tools-core';\n\nexport const jsonTools = [\n {\n name: 'agent_tools_json_format',\n description:\n 'Format JSON with configurable indentation. Returns pretty-printed JSON.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to format',\n },\n indent: {\n type: 'number',\n enum: [2, 4],\n description: 'Number of spaces for indentation (default: 2)',\n },\n sortKeys: {\n type: 'boolean',\n description: 'Sort object keys alphabetically (default: false)',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string; indent?: number; sortKeys?: boolean }) => {\n try {\n const result = json.format(args.input, {\n indent: (args.indent || 2) as 2 | 4,\n sortKeys: args.sortKeys || false,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_json_validate',\n description:\n 'Validate JSON, optionally against a JSON Schema. Returns validation result with errors.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to validate',\n },\n schema: {\n type: 'string',\n description: 'Optional JSON Schema to validate against',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string; schema?: string }) => {\n const result = json.validate(args.input, args.schema);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_json_query',\n description:\n 'Query JSON using JSONPath or JMESPath. Returns the matched values.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to query',\n },\n path: {\n type: 'string',\n description: 'The query path (e.g., \"$.store.book[*].author\")',\n },\n dialect: {\n type: 'string',\n enum: ['jsonpath', 'jmespath'],\n description: 'Query dialect (default: jsonpath)',\n },\n },\n required: ['input', 'path'],\n },\n handler: async (args: { input: string; path: string; dialect?: string }) => {\n const result = json.query(args.input, args.path, {\n dialect: (args.dialect as 'jsonpath' | 'jmespath') || 'jsonpath',\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_json_convert',\n description:\n 'Convert between JSON, JSON5, JSONC, YAML, and TOML formats.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The input string to convert',\n },\n from: {\n type: 'string',\n enum: ['json', 'json5', 'jsonc', 'yaml', 'toml'],\n description: 'Source format',\n },\n to: {\n type: 'string',\n enum: ['json', 'json5', 'jsonc', 'yaml', 'toml'],\n description: 'Target format',\n },\n },\n required: ['input', 'from', 'to'],\n },\n handler: async (args: { input: string; from: string; to: string }) => {\n const result = json.convert(args.input, {\n from: args.from as json.ConvertFormat,\n to: args.to as json.ConvertFormat,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_json_diff',\n description:\n 'Compare two JSON documents and return the differences as JSON Patch operations.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n a: {\n type: 'string',\n description: 'First JSON document',\n },\n b: {\n type: 'string',\n description: 'Second JSON document',\n },\n },\n required: ['a', 'b'],\n },\n handler: async (args: { a: string; b: string }) => {\n const result = json.diff(args.a, args.b);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_json_minify',\n description: 'Minify JSON by removing all whitespace.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to minify',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n const result = json.minify(args.input);\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_json_stats',\n description:\n 'Get statistics about a JSON document (key count, depth, types, size).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to analyze',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n const result = json.getStats(args.input);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_json_schema_validate',\n description:\n 'Validate JSON against a schema with detailed error analysis, coverage stats, and actionable fix suggestions. Returns a comprehensive summary suitable for LLM consumption.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to validate',\n },\n schema: {\n type: 'string',\n description: 'The JSON Schema to validate against',\n },\n },\n required: ['input', 'schema'],\n },\n handler: async (args: { input: string; schema: string }) => {\n const result = json.validateWithSummary(args.input, args.schema);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { csv } from '@atmaticai/agent-tools-core';\n\nexport const csvTools = [\n {\n name: 'agent_tools_csv_parse',\n description:\n 'Parse CSV data into structured JSON. Auto-detects delimiter if not specified.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to parse',\n },\n delimiter: {\n type: 'string',\n description: 'Field delimiter (auto-detected if not specified)',\n },\n header: {\n type: 'boolean',\n description: 'First row contains headers (default: true)',\n },\n skipRows: {\n type: 'number',\n description: 'Number of rows to skip at the beginning',\n },\n },\n required: ['input'],\n },\n handler: async (args: {\n input: string;\n delimiter?: string;\n header?: boolean;\n skipRows?: number;\n }) => {\n const result = csv.parse(args.input, {\n delimiter: args.delimiter,\n header: args.header ?? true,\n skipRows: args.skipRows,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_csv_to_json',\n description: 'Convert CSV to JSON array.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to convert',\n },\n pretty: {\n type: 'boolean',\n description: 'Pretty-print output (default: true)',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string; pretty?: boolean }) => {\n const result = csv.toJson(args.input, args.pretty ?? true);\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_csv_filter',\n description: 'Filter CSV rows based on column conditions.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to filter',\n },\n filters: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n column: { type: 'string' },\n operator: {\n type: 'string',\n enum: [\n 'eq',\n 'neq',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n 'contains',\n 'startsWith',\n 'endsWith',\n 'matches',\n 'isNull',\n 'isNotNull',\n ],\n },\n value: {},\n },\n required: ['column', 'operator'],\n },\n description: 'Array of filter conditions',\n },\n },\n required: ['input', 'filters'],\n },\n handler: async (args: { input: string; filters: csv.Filter[] }) => {\n const result = csv.filter(args.input, args.filters);\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_csv_stats',\n description:\n 'Get column statistics for CSV data (types, counts, min/max, top values).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to analyze',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n const result = csv.getStats(args.input);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_csv_transform',\n description:\n 'Transform CSV by selecting, renaming, or excluding columns.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to transform',\n },\n select: {\n type: 'array',\n items: { type: 'string' },\n description: 'Columns to include',\n },\n exclude: {\n type: 'array',\n items: { type: 'string' },\n description: 'Columns to exclude',\n },\n rename: {\n type: 'object',\n additionalProperties: { type: 'string' },\n description: 'Column rename mapping (oldName: newName)',\n },\n },\n required: ['input'],\n },\n handler: async (args: {\n input: string;\n select?: string[];\n exclude?: string[];\n rename?: Record<string, string>;\n }) => {\n const result = csv.transform(args.input, {\n select: args.select,\n exclude: args.exclude,\n rename: args.rename,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_csv_export',\n description: 'Export CSV to different formats (csv, tsv, json, jsonl).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to export',\n },\n format: {\n type: 'string',\n enum: ['csv', 'tsv', 'json', 'jsonl'],\n description: 'Target format',\n },\n headers: {\n type: 'boolean',\n description: 'Include headers in output (default: true)',\n },\n },\n required: ['input', 'format'],\n },\n handler: async (args: {\n input: string;\n format: csv.ExportFormat;\n headers?: boolean;\n }) => {\n const result = csv.exportData(args.input, {\n format: args.format,\n headers: args.headers ?? true,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n];\n","import { pdf } from '@atmaticai/agent-tools-core';\n\nexport const pdfTools = [\n {\n name: 'agent_tools_pdf_merge',\n description:\n 'Merge multiple PDF files into one. Files should be base64 encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n files: {\n type: 'array',\n items: { type: 'string' },\n description: 'Array of base64-encoded PDF files',\n },\n pageRanges: {\n type: 'array',\n items: { type: 'string' },\n description:\n 'Optional page ranges for each file (e.g., [\"1-3\", \"all\", \"5,7-10\"])',\n },\n },\n required: ['files'],\n },\n handler: async (args: { files: string[]; pageRanges?: string[] }) => {\n const buffers = args.files.map((f) => Buffer.from(f, 'base64'));\n const result = await pdf.merge(buffers, { pageRanges: args.pageRanges });\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_split',\n description:\n 'Split a PDF into multiple documents based on page ranges. Returns array of base64 PDFs.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n ranges: {\n type: 'string',\n description:\n 'Comma-separated page ranges (e.g., \"1-3,4-6,7-10\")',\n },\n },\n required: ['file', 'ranges'],\n },\n handler: async (args: { file: string; ranges: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const results = await pdf.split(buffer, { ranges: args.ranges });\n const base64Results = results.map((r) => Buffer.from(r).toString('base64'));\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(base64Results),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_extract_pages',\n description:\n 'Extract specific pages from a PDF. Returns base64-encoded PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n pageRange: {\n type: 'string',\n description: 'Pages to extract (e.g., \"1,3,5-10\")',\n },\n },\n required: ['file', 'pageRange'],\n },\n handler: async (args: { file: string; pageRange: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.extractPages(buffer, args.pageRange);\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_extract_text',\n description: 'Extract text content from a PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n pages: {\n type: 'array',\n items: { type: 'number' },\n description: 'Optional specific pages to extract text from',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string; pages?: number[] }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.extractText(buffer, { pages: args.pages });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_pdf_metadata',\n description: 'Get metadata from a PDF (title, author, page count, etc.).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.getInfo(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_pdf_set_metadata',\n description: 'Set metadata on a PDF. Returns modified base64-encoded PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n metadata: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n author: { type: 'string' },\n subject: { type: 'string' },\n keywords: { type: 'array', items: { type: 'string' } },\n },\n description: 'Metadata to set',\n },\n },\n required: ['file', 'metadata'],\n },\n handler: async (args: { file: string; metadata: pdf.PDFMetadata }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.setMetadata(buffer, args.metadata);\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_rotate',\n description: 'Rotate pages in a PDF. Returns base64-encoded PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n degrees: {\n type: 'number',\n enum: [90, 180, 270],\n description: 'Rotation angle',\n },\n pages: {\n type: 'array',\n items: { type: 'number' },\n description: 'Pages to rotate (all pages if not specified)',\n },\n },\n required: ['file', 'degrees'],\n },\n handler: async (args: { file: string; degrees: number; pages?: number[] }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.rotate(buffer, {\n degrees: args.degrees as 0 | 90 | 180 | 270,\n pages: args.pages,\n });\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_compress',\n description:\n 'Compress a PDF to reduce file size. Returns base64-encoded PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n quality: {\n type: 'string',\n enum: ['low', 'medium', 'high'],\n description: 'Compression quality (default: medium)',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string; quality?: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.compress(buffer, {\n quality: (args.quality || 'medium') as 'low' | 'medium' | 'high',\n });\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_page_count',\n description: 'Get the number of pages in a PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const count = await pdf.getPageCount(buffer);\n return {\n content: [{ type: 'text' as const, text: String(count) }],\n };\n },\n },\n {\n name: 'agent_tools_pdf_to_template',\n description:\n 'Extract a reusable JSON template from a PDF, detecting {{placeholder}} fields. Returns template JSON.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n name: {\n type: 'string',\n description: 'Optional template name',\n },\n description: {\n type: 'string',\n description: 'Optional template description',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string; name?: string; description?: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const template = await pdf.pdfToTemplate(buffer, {\n name: args.name,\n description: args.description,\n });\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(template, null, 2),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_from_template',\n description:\n 'Generate a PDF from a template JSON and data JSON, replacing placeholders with values. Returns base64-encoded PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n template: {\n type: 'object',\n description: 'PDF template JSON object',\n },\n data: {\n type: 'object',\n description: 'Key-value pairs for placeholder replacement',\n },\n missingFieldBehavior: {\n type: 'string',\n enum: ['leave_placeholder', 'use_default', 'empty_string'],\n description:\n 'How to handle missing fields (default: leave_placeholder)',\n },\n },\n required: ['template'],\n },\n handler: async (args: {\n template: pdf.PDFTemplate;\n data?: Record<string, string>;\n missingFieldBehavior?: string;\n }) => {\n const result = await pdf.templateToPdf(args.template, args.data ?? {}, {\n missingFieldBehavior: args.missingFieldBehavior as\n | 'leave_placeholder'\n | 'use_default'\n | 'empty_string'\n | undefined,\n });\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_read_form',\n description:\n 'Read AcroForm fields from a fillable PDF. Returns field names, types, current values, and options.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.readFormFields(buffer);\n return {\n content: [\n { type: 'text' as const, text: JSON.stringify(result, null, 2) },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_fill_form',\n description:\n 'Fill AcroForm fields in a fillable PDF with provided data. Returns base64-encoded filled PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n data: {\n type: 'object',\n description:\n 'Key-value pairs mapping field names to values (string for text/radio/dropdown, boolean for checkbox)',\n },\n flatten: {\n type: 'boolean',\n description:\n 'If true, flatten the form fields making them non-editable (default: false)',\n },\n },\n required: ['file', 'data'],\n },\n handler: async (args: {\n file: string;\n data: Record<string, string | boolean>;\n flatten?: boolean;\n }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.fillFormFields(buffer, args.data, {\n flatten: args.flatten,\n });\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n];\n","import { xml } from '@atmaticai/agent-tools-core';\nimport type { McpTool } from './index';\n\nexport const xmlTools: McpTool[] = [\n {\n name: 'agent_tools_xml_parse',\n description:\n 'Parse XML string into a JSON object representation. Supports attributes, nested elements, and text nodes.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to parse' },\n ignoreAttributes: {\n type: 'boolean',\n description: 'Whether to ignore XML attributes (default: false)',\n },\n trimValues: {\n type: 'boolean',\n description: 'Whether to trim text values (default: true)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.parse(args.input as string, {\n ignoreAttributes: args.ignoreAttributes as boolean,\n trimValues: args.trimValues as boolean,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_xml_format',\n description:\n 'Pretty-print XML with configurable indentation. Reformats XML to be human-readable.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to format' },\n indent: {\n type: 'number',\n description: 'Number of spaces for indentation (default: 2)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.format(args.input as string, {\n indent: (args.indent as number) || 2,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_xml_minify',\n description: 'Minify XML by removing unnecessary whitespace and formatting.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to minify' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.minify(args.input as string);\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_xml_validate',\n description:\n 'Validate XML syntax. Returns whether the XML is well-formed with error details if invalid.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to validate' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.validate(args.input as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_xml_query',\n description:\n 'Query XML using a simplified path expression (e.g., \"root/items/item\"). Returns matching nodes.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to query' },\n path: {\n type: 'string',\n description: 'Path expression (e.g., \"catalog/book/title\")',\n },\n },\n required: ['input', 'path'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.query(args.input as string, args.path as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_xml_convert',\n description: 'Convert between XML and JSON formats.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Input string to convert' },\n from: {\n type: 'string',\n enum: ['xml', 'json'],\n description: 'Source format',\n },\n to: {\n type: 'string',\n enum: ['xml', 'json'],\n description: 'Target format',\n },\n },\n required: ['input', 'from', 'to'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.convert(\n args.input as string,\n args.from as xml.XmlConvertFormat,\n args.to as xml.XmlConvertFormat\n );\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_xml_stats',\n description:\n 'Get statistics about an XML document: element count, attribute count, text nodes, depth, and size.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to analyze' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.getStats(args.input as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { excel } from '@atmaticai/agent-tools-core';\nimport type { McpTool } from './index';\n\nexport const excelTools: McpTool[] = [\n {\n name: 'agent_tools_excel_parse',\n description:\n 'Parse an Excel file (XLSX) into JSON. Returns sheet info, headers, row data, and row count. Input file must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded Excel file',\n },\n sheet: {\n type: 'string',\n description: 'Sheet name or index to parse (default: first sheet)',\n },\n header: {\n type: 'boolean',\n description: 'Whether first row is headers (default: true)',\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const sheetArg = args.sheet;\n const sheet = sheetArg !== undefined && !isNaN(Number(sheetArg)) ? Number(sheetArg) : (sheetArg as string | undefined);\n const result = await excel.parse(buffer, {\n sheet,\n header: args.header as boolean,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_excel_convert',\n description:\n 'Convert an Excel file to JSON, CSV, or TSV format. Input file must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded Excel file',\n },\n format: {\n type: 'string',\n enum: ['json', 'csv', 'tsv'],\n description: 'Target format',\n },\n sheet: {\n type: 'string',\n description: 'Sheet name or index (default: first sheet)',\n },\n header: {\n type: 'boolean',\n description: 'Whether first row is headers (default: true)',\n },\n },\n required: ['file', 'format'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await excel.convert(buffer, args.format as excel.ExcelConvertFormat, {\n sheet: args.sheet as string | undefined,\n header: args.header as boolean,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_excel_stats',\n description:\n 'Get statistics about an Excel file: sheet count, total rows, columns, and sheet details. Input file must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded Excel file',\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await excel.getStats(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_excel_sheets',\n description:\n 'List all sheets in an Excel file with their names, row counts, and column counts. Input file must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded Excel file',\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await excel.getSheets(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_excel_create',\n description:\n 'Create an Excel file from JSON data. Returns the file as base64-encoded XLSX.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n data: {\n type: 'string',\n description: 'JSON string of an array of objects to convert to Excel',\n },\n sheetName: {\n type: 'string',\n description: 'Name for the worksheet (default: Sheet1)',\n },\n },\n required: ['data'],\n },\n handler: async (args: Record<string, unknown>) => {\n const data = JSON.parse(args.data as string) as Record<string, unknown>[];\n const result = await excel.createExcel(data, args.sheetName as string);\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n];\n","import { image } from '@atmaticai/agent-tools-core';\nimport type { McpTool } from './index';\n\nexport const imageTools: McpTool[] = [\n {\n name: 'agent_tools_image_resize',\n description:\n 'Resize an image to specified dimensions. Supports fit modes: cover, contain, fill, inside, outside. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n width: { type: 'number', description: 'Target width in pixels' },\n height: { type: 'number', description: 'Target height in pixels' },\n fit: {\n type: 'string',\n enum: ['cover', 'contain', 'fill', 'inside', 'outside'],\n description: 'How to fit the image (default: inside)',\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.resize(buffer, {\n width: args.width as number,\n height: args.height as number,\n fit: args.fit as image.ResizeOptions['fit'],\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_image_crop',\n description: 'Crop an image to a specified rectangle. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n left: { type: 'number', description: 'Left offset in pixels' },\n top: { type: 'number', description: 'Top offset in pixels' },\n width: { type: 'number', description: 'Crop width in pixels' },\n height: { type: 'number', description: 'Crop height in pixels' },\n },\n required: ['file', 'left', 'top', 'width', 'height'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.crop(buffer, {\n left: args.left as number,\n top: args.top as number,\n width: args.width as number,\n height: args.height as number,\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_image_convert',\n description:\n 'Convert an image to a different format: png, jpeg, webp, gif, tiff, avif. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n format: {\n type: 'string',\n enum: ['png', 'jpeg', 'webp', 'gif', 'tiff', 'avif'],\n description: 'Target image format',\n },\n quality: {\n type: 'number',\n description: 'Quality for lossy formats 1-100 (default: 80)',\n },\n },\n required: ['file', 'format'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.convert(buffer, {\n format: args.format as image.ImageFormat,\n quality: args.quality as number,\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_image_compress',\n description:\n 'Compress an image to reduce file size. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n quality: {\n type: 'number',\n description: 'Compression quality 1-100 (default: 70)',\n },\n format: {\n type: 'string',\n enum: ['png', 'jpeg', 'webp', 'gif', 'tiff', 'avif'],\n description: 'Output format (default: jpeg)',\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.compress(buffer, {\n quality: args.quality as number,\n format: args.format as image.ImageFormat,\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_image_rotate',\n description: 'Rotate an image by a specified number of degrees. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n degrees: { type: 'number', description: 'Rotation angle in degrees' },\n },\n required: ['file', 'degrees'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.rotate(buffer, {\n degrees: args.degrees as number,\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_image_metadata',\n description:\n 'Get metadata from an image: dimensions, format, channels, color space, DPI, alpha channel. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.getMetadata(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_image_grayscale',\n description: 'Convert an image to grayscale. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.grayscale(buffer);\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n];\n","import { markdown } from '@atmaticai/agent-tools-core';\nimport type { McpTool } from './index';\n\nexport const markdownTools: McpTool[] = [\n {\n name: 'agent_tools_markdown_convert',\n description:\n 'Convert between Markdown, HTML, and plain text formats. Supports GitHub Flavored Markdown.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Input text to convert' },\n from: {\n type: 'string',\n enum: ['markdown', 'html', 'text'],\n description: 'Source format',\n },\n to: {\n type: 'string',\n enum: ['markdown', 'html', 'text'],\n description: 'Target format',\n },\n gfm: {\n type: 'boolean',\n description: 'Enable GitHub Flavored Markdown (default: true)',\n },\n },\n required: ['input', 'from', 'to'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = markdown.convert(args.input as string, {\n from: args.from as markdown.MarkdownConvertFormat,\n to: args.to as markdown.MarkdownConvertFormat,\n gfm: args.gfm as boolean,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_markdown_toc',\n description:\n 'Generate a table of contents from a Markdown document. Returns structured heading entries with levels and slugs.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Markdown text' },\n render: {\n type: 'boolean',\n description: 'Return rendered Markdown TOC instead of JSON (default: false)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const entries = markdown.generateToc(args.input as string);\n if (args.render) {\n const rendered = markdown.renderToc(entries);\n return { content: [{ type: 'text' as const, text: rendered }] };\n }\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(entries, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_markdown_links',\n description:\n 'Extract all links from a Markdown document. Returns link text, URL, and line number for each link.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Markdown text' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = markdown.extractLinks(args.input as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_markdown_frontmatter',\n description:\n 'Extract YAML frontmatter from a Markdown document. Parses key-value pairs from the --- delimited header.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Markdown text with frontmatter' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = markdown.extractFrontmatter(args.input as string);\n return {\n content: [\n {\n type: 'text' as const,\n text: result ? JSON.stringify(result, null, 2) : 'No frontmatter found',\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_markdown_stats',\n description:\n 'Get statistics about a Markdown document: word count, headings, links, images, code blocks, lists, and more.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Markdown text to analyze' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = markdown.getStats(args.input as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { archive } from '@atmaticai/agent-tools-core';\nimport type { McpTool } from './index';\n\nexport const archiveTools: McpTool[] = [\n {\n name: 'agent_tools_archive_create',\n description:\n 'Create a ZIP archive from a list of files. Each file needs a path and base64-encoded content. Returns the archive as base64.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n files: {\n type: 'array',\n description:\n 'Array of files to add. Each item: { path: string, content: string (base64) }',\n items: {\n type: 'object',\n properties: {\n path: { type: 'string', description: 'File path within archive' },\n content: { type: 'string', description: 'Base64-encoded file content' },\n },\n required: ['path', 'content'],\n },\n },\n compressionLevel: {\n type: 'number',\n description: 'Compression level 0-9 (default: 6)',\n },\n },\n required: ['files'],\n },\n handler: async (args: Record<string, unknown>) => {\n const files = (args.files as { path: string; content: string }[]).map((f) => ({\n path: f.path,\n content: Buffer.from(f.content, 'base64'),\n }));\n const result = await archive.create(files, {\n compressionLevel: args.compressionLevel as number,\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_archive_extract',\n description:\n 'Extract files from a ZIP archive. Returns extracted files with paths and base64-encoded content. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded ZIP file' },\n files: {\n type: 'array',\n description: 'Optional list of specific file paths to extract',\n items: { type: 'string' },\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await archive.extract(buffer, {\n files: args.files as string[],\n });\n const output = result.map((f) => ({\n path: f.path,\n content: f.content.toString('base64'),\n size: f.content.length,\n }));\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(output, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_archive_list',\n description:\n 'List contents of a ZIP archive without extracting. Returns file paths, sizes, and modification dates. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded ZIP file' },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await archive.list(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_archive_stats',\n description:\n 'Get statistics about a ZIP archive: file count, directory count, total size, compressed size. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded ZIP file' },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await archive.getStats(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { regex } from '@atmaticai/agent-tools-core';\nimport type { McpTool } from './index';\n\nexport const regexTools: McpTool[] = [\n {\n name: 'agent_tools_regex_test',\n description:\n 'Test a regex pattern against input text. Returns all matches with positions and named groups.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Text to search' },\n pattern: { type: 'string', description: 'Regular expression pattern' },\n flags: {\n type: 'string',\n description: 'Regex flags (e.g., \"gi\" for global case-insensitive)',\n },\n caseInsensitive: {\n type: 'boolean',\n description: 'Case-insensitive matching (default: false)',\n },\n multiline: {\n type: 'boolean',\n description: 'Multiline mode (default: false)',\n },\n },\n required: ['input', 'pattern'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = regex.test(args.input as string, args.pattern as string, {\n flags: args.flags as string,\n caseInsensitive: args.caseInsensitive as boolean,\n multiline: args.multiline as boolean,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_regex_replace',\n description:\n 'Replace matches of a regex pattern in text. Supports backreferences ($1, $2) and named groups ($<name>).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Text to process' },\n pattern: { type: 'string', description: 'Regular expression pattern' },\n replacement: {\n type: 'string',\n description: 'Replacement string (supports $1, $<name> backreferences)',\n },\n flags: { type: 'string', description: 'Regex flags' },\n global: {\n type: 'boolean',\n description: 'Replace all matches (default: true)',\n },\n },\n required: ['input', 'pattern', 'replacement'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = regex.replace(\n args.input as string,\n args.pattern as string,\n args.replacement as string,\n {\n flags: args.flags as string,\n global: args.global as boolean,\n }\n );\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_regex_extract',\n description:\n 'Extract all matches of a regex pattern from text. Returns matched strings and named groups.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Text to search' },\n pattern: { type: 'string', description: 'Regular expression pattern' },\n flags: { type: 'string', description: 'Regex flags' },\n caseInsensitive: {\n type: 'boolean',\n description: 'Case-insensitive matching',\n },\n },\n required: ['input', 'pattern'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = regex.extract(args.input as string, args.pattern as string, {\n flags: args.flags as string,\n caseInsensitive: args.caseInsensitive as boolean,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_regex_validate',\n description:\n 'Validate a regex pattern for syntax correctness. Returns whether the pattern is valid with error details.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n pattern: { type: 'string', description: 'Regular expression pattern to validate' },\n flags: { type: 'string', description: 'Optional regex flags to validate' },\n },\n required: ['pattern'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = regex.validate(args.pattern as string, args.flags as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { diff } from '@atmaticai/agent-tools-core';\nimport type { McpTool } from './index';\n\nexport const diffTools: McpTool[] = [\n {\n name: 'agent_tools_diff_compare',\n description:\n 'Compare two texts and return their differences. Supports line, word, and character-level diffing.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n a: { type: 'string', description: 'First text (original)' },\n b: { type: 'string', description: 'Second text (modified)' },\n type: {\n type: 'string',\n enum: ['line', 'word', 'char'],\n description: 'Diff granularity (default: line)',\n },\n ignoreWhitespace: {\n type: 'boolean',\n description: 'Ignore whitespace differences (default: false)',\n },\n },\n required: ['a', 'b'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = diff.compare(args.a as string, args.b as string, {\n type: args.type as diff.DiffType,\n ignoreWhitespace: args.ignoreWhitespace as boolean,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_diff_unified',\n description:\n 'Generate a unified diff (patch format) between two texts. Compatible with git diff output.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n a: { type: 'string', description: 'Original text' },\n b: { type: 'string', description: 'Modified text' },\n fromFile: {\n type: 'string',\n description: 'Original file name (default: \"a\")',\n },\n toFile: {\n type: 'string',\n description: 'Modified file name (default: \"b\")',\n },\n context: {\n type: 'number',\n description: 'Number of context lines (default: 3)',\n },\n },\n required: ['a', 'b'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = diff.unifiedDiff(args.a as string, args.b as string, {\n fromFile: args.fromFile as string,\n toFile: args.toFile as string,\n context: args.context as number,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_diff_apply',\n description:\n 'Apply a unified diff patch to a text. Use to transform text using a previously generated patch.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Original text' },\n patch: { type: 'string', description: 'Unified diff patch to apply' },\n fuzz: {\n type: 'number',\n description: 'Fuzz factor for approximate matching (default: 0)',\n },\n },\n required: ['input', 'patch'],\n },\n handler: async (args: Record<string, unknown>) => {\n try {\n const result = diff.apply(args.input as string, args.patch as string, {\n fuzz: args.fuzz as number,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return {\n isError: true,\n content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }],\n };\n }\n },\n },\n];\n","import { sql } from '@atmaticai/agent-tools-core';\nimport type { McpTool } from './index';\n\nexport const sqlTools: McpTool[] = [\n {\n name: 'agent_tools_sql_format',\n description:\n 'Format SQL queries with configurable dialect, indentation, and keyword casing. Supports MySQL, PostgreSQL, SQLite, TransactSQL, BigQuery.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL query to format' },\n dialect: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'SQL dialect (default: postgresql)',\n },\n indent: {\n type: 'number',\n description: 'Indentation spaces (default: 2)',\n },\n uppercase: {\n type: 'boolean',\n description: 'Uppercase SQL keywords (default: true)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.format(args.input as string, {\n dialect: args.dialect as sql.SqlDialect,\n indent: args.indent as number,\n uppercase: args.uppercase as boolean,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_sql_minify',\n description: 'Minify SQL by removing comments and excess whitespace.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL query to minify' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.minify(args.input as string);\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_sql_parse',\n description:\n 'Parse a SQL query into an AST. Returns query type, referenced tables, and columns.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL query to parse' },\n dialect: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'SQL dialect (default: postgresql)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.parse(args.input as string, args.dialect as sql.SqlDialect);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_sql_validate',\n description:\n 'Validate SQL syntax. Returns whether the query is syntactically correct with error details.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL query to validate' },\n dialect: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'SQL dialect (default: postgresql)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.validate(args.input as string, args.dialect as sql.SqlDialect);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_sql_convert',\n description:\n 'Convert SQL between dialects (MySQL, PostgreSQL, SQLite, TransactSQL, BigQuery).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL query to convert' },\n from: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'Source dialect',\n },\n to: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'Target dialect',\n },\n },\n required: ['input', 'to'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.convert(args.input as string, {\n from: args.from as sql.SqlDialect,\n to: args.to as sql.SqlDialect,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_sql_stats',\n description:\n 'Analyze SQL queries. Returns query count, types, referenced tables, joins, and subqueries.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL queries to analyze' },\n dialect: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'SQL dialect (default: postgresql)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.getStats(args.input as string, args.dialect as sql.SqlDialect);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { crypto as cryptoTools } from '@atmaticai/agent-tools-core';\nimport type { McpTool } from './index';\n\nexport const cryptoMcpTools: McpTool[] = [\n {\n name: 'agent_tools_crypto_hash',\n description:\n 'Hash a string using MD5, SHA-1, SHA-256, SHA-384, or SHA-512. Returns the hex digest.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'String to hash' },\n algorithm: {\n type: 'string',\n enum: ['md5', 'sha1', 'sha256', 'sha384', 'sha512'],\n description: 'Hash algorithm (default: sha256)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = cryptoTools.hash(\n args.input as string,\n args.algorithm as cryptoTools.HashAlgorithm\n );\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_crypto_hmac',\n description:\n 'Generate an HMAC (Hash-based Message Authentication Code) for a string with a secret key.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Message to authenticate' },\n key: { type: 'string', description: 'Secret key for HMAC' },\n algorithm: {\n type: 'string',\n enum: ['md5', 'sha1', 'sha256', 'sha384', 'sha512'],\n description: 'Hash algorithm (default: sha256)',\n },\n },\n required: ['input', 'key'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = cryptoTools.hmac(args.input as string, args.key as string, {\n algorithm: args.algorithm as cryptoTools.HashAlgorithm,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_crypto_encode',\n description:\n 'Encode a string to Base64, Hex, URL-encoded, or HTML-encoded format.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'String to encode' },\n format: {\n type: 'string',\n enum: ['base64', 'hex', 'url', 'html'],\n description: 'Encoding format',\n },\n },\n required: ['input', 'format'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = cryptoTools.encode(\n args.input as string,\n args.format as cryptoTools.EncodingFormat\n );\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_crypto_decode',\n description:\n 'Decode a string from Base64, Hex, URL-encoded, or HTML-encoded format.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Encoded string to decode' },\n format: {\n type: 'string',\n enum: ['base64', 'hex', 'url', 'html'],\n description: 'Encoding format to decode from',\n },\n },\n required: ['input', 'format'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = cryptoTools.decode(\n args.input as string,\n args.format as cryptoTools.EncodingFormat\n );\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_crypto_jwt_decode',\n description:\n 'Decode a JWT token without verification. Returns header, payload, signature, and expiration status.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n token: { type: 'string', description: 'JWT token to decode' },\n },\n required: ['token'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = cryptoTools.decodeJwt(args.token as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_crypto_uuid',\n description: 'Generate a new UUID v4.',\n inputSchema: {\n type: 'object' as const,\n properties: {},\n required: [],\n },\n handler: async () => {\n const result = cryptoTools.generateUuid();\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_crypto_checksum',\n description:\n 'Calculate the checksum of data. Useful for verifying file integrity. Accepts text or base64-encoded binary.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Text or base64-encoded data' },\n algorithm: {\n type: 'string',\n enum: ['md5', 'sha1', 'sha256', 'sha384', 'sha512'],\n description: 'Hash algorithm (default: sha256)',\n },\n base64: {\n type: 'boolean',\n description: 'Whether input is base64-encoded binary (default: false)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const data = args.base64\n ? Buffer.from(args.input as string, 'base64')\n : (args.input as string);\n const result = cryptoTools.checksum(data, args.algorithm as cryptoTools.HashAlgorithm);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { datetime } from '@atmaticai/agent-tools-core';\nimport type { McpTool } from './index';\n\nexport const datetimeTools: McpTool[] = [\n {\n name: 'agent_tools_datetime_parse',\n description:\n 'Parse a date string (ISO, Unix timestamp, RFC 2822, SQL) into a structured object with year, month, day, timezone, and more.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'Date string or Unix timestamp to parse',\n },\n timezone: {\n type: 'string',\n description: 'Timezone to interpret the date in (default: utc)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.parseDate(args.input as string, args.timezone as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_datetime_format',\n description:\n 'Format a date string using a Luxon format pattern. Supports timezone conversion.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'ISO date string to format' },\n format: {\n type: 'string',\n description: 'Luxon format pattern (e.g., \"yyyy-MM-dd HH:mm:ss\")',\n },\n timezone: {\n type: 'string',\n description: 'Target timezone (default: utc)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.formatDate(args.input as string, {\n format: args.format as string,\n timezone: args.timezone as string,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_datetime_now',\n description: 'Get the current date and time with full details in a specified timezone.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n timezone: {\n type: 'string',\n description: 'Timezone (default: utc)',\n },\n },\n required: [],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.now(args.timezone as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_datetime_add',\n description:\n 'Add time to a date. Specify years, months, weeks, days, hours, minutes, and/or seconds to add.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'ISO date string' },\n years: { type: 'number', description: 'Years to add' },\n months: { type: 'number', description: 'Months to add' },\n weeks: { type: 'number', description: 'Weeks to add' },\n days: { type: 'number', description: 'Days to add' },\n hours: { type: 'number', description: 'Hours to add' },\n minutes: { type: 'number', description: 'Minutes to add' },\n seconds: { type: 'number', description: 'Seconds to add' },\n timezone: { type: 'string', description: 'Timezone' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.add(\n args.input as string,\n {\n years: args.years as number,\n months: args.months as number,\n weeks: args.weeks as number,\n days: args.days as number,\n hours: args.hours as number,\n minutes: args.minutes as number,\n seconds: args.seconds as number,\n },\n args.timezone as string\n );\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_datetime_subtract',\n description:\n 'Subtract time from a date. Specify years, months, weeks, days, hours, minutes, and/or seconds to subtract.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'ISO date string' },\n years: { type: 'number', description: 'Years to subtract' },\n months: { type: 'number', description: 'Months to subtract' },\n weeks: { type: 'number', description: 'Weeks to subtract' },\n days: { type: 'number', description: 'Days to subtract' },\n hours: { type: 'number', description: 'Hours to subtract' },\n minutes: { type: 'number', description: 'Minutes to subtract' },\n seconds: { type: 'number', description: 'Seconds to subtract' },\n timezone: { type: 'string', description: 'Timezone' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.subtract(\n args.input as string,\n {\n years: args.years as number,\n months: args.months as number,\n weeks: args.weeks as number,\n days: args.days as number,\n hours: args.hours as number,\n minutes: args.minutes as number,\n seconds: args.seconds as number,\n },\n args.timezone as string\n );\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_datetime_diff',\n description:\n 'Calculate the difference between two dates. Returns years, months, days, hours, minutes, seconds and totals.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n a: { type: 'string', description: 'First date (ISO string)' },\n b: { type: 'string', description: 'Second date (ISO string)' },\n },\n required: ['a', 'b'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.diff(args.a as string, args.b as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_datetime_timezone_convert',\n description:\n 'Convert a date from one timezone to another. Returns the converted date with offset information.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'ISO date string' },\n from: { type: 'string', description: 'Source timezone (e.g., \"America/New_York\")' },\n to: { type: 'string', description: 'Target timezone (e.g., \"Asia/Tokyo\")' },\n },\n required: ['input', 'from', 'to'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.convertTimezone(\n args.input as string,\n args.from as string,\n args.to as string\n );\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_datetime_cron',\n description:\n 'Parse a cron expression. Returns a human-readable description and the next scheduled run times.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n expression: {\n type: 'string',\n description: 'Cron expression (5 fields: min hour dom month dow)',\n },\n count: {\n type: 'number',\n description: 'Number of next run times to return (default: 5)',\n },\n },\n required: ['expression'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.parseCron(\n args.expression as string,\n args.count as number\n );\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_datetime_timezones',\n description: 'List all available IANA timezone names.',\n inputSchema: {\n type: 'object' as const,\n properties: {},\n required: [],\n },\n handler: async () => {\n const result = datetime.listTimezones();\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { text } from '@atmaticai/agent-tools-core';\n\nexport const textTools = [\n {\n name: 'agent_tools_text_case',\n description:\n 'Convert text between case formats: camel, snake, kebab, pascal, title, sentence, upper, lower, constant.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The text to convert',\n },\n to: {\n type: 'string',\n enum: ['camel', 'snake', 'kebab', 'pascal', 'title', 'sentence', 'upper', 'lower', 'constant'],\n description: 'Target case format',\n },\n },\n required: ['input', 'to'],\n },\n handler: async (args: { input: string; to: string }) => {\n try {\n const result = text.convertCase(args.input, args.to as text.CaseType);\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_text_slugify',\n description:\n 'Convert text to a URL-friendly slug.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The text to slugify',\n },\n separator: {\n type: 'string',\n description: 'Separator character (default: \"-\")',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string; separator?: string }) => {\n try {\n const result = text.slugify(args.input, args.separator);\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_text_stats',\n description:\n 'Get text statistics: character count, word count, sentence count, paragraph count, lines, and reading time.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The text to analyze',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n const result = text.getTextStats(args.input);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_text_truncate',\n description:\n 'Truncate text to a specified length with word or character boundary.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The text to truncate',\n },\n length: {\n type: 'number',\n description: 'Maximum length',\n },\n boundary: {\n type: 'string',\n enum: ['character', 'word'],\n description: 'Truncation boundary (default: \"word\")',\n },\n suffix: {\n type: 'string',\n description: 'Suffix to append (default: \"...\")',\n },\n },\n required: ['input', 'length'],\n },\n handler: async (args: { input: string; length: number; boundary?: string; suffix?: string }) => {\n try {\n const result = text.truncate(args.input, {\n length: args.length,\n boundary: args.boundary as 'character' | 'word',\n suffix: args.suffix,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_text_lorem',\n description:\n 'Generate Lorem Ipsum placeholder text.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n count: {\n type: 'number',\n description: 'Number of units to generate',\n },\n unit: {\n type: 'string',\n enum: ['words', 'sentences', 'paragraphs'],\n description: 'Unit type (default: \"words\")',\n },\n },\n required: ['count'],\n },\n handler: async (args: { count: number; unit?: string }) => {\n const result = text.generateLorem(args.count, args.unit as 'words' | 'sentences' | 'paragraphs');\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_text_similarity',\n description:\n 'Compare two strings and return Levenshtein distance and similarity ratio (0-1).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n a: {\n type: 'string',\n description: 'First string',\n },\n b: {\n type: 'string',\n description: 'Second string',\n },\n },\n required: ['a', 'b'],\n },\n handler: async (args: { a: string; b: string }) => {\n const result = text.similarity(args.a, args.b);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_text_template',\n description:\n 'Interpolate variables into a template string using {{key}} syntax. Reports missing keys.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n template: {\n type: 'string',\n description: 'Template string with {{key}} placeholders',\n },\n variables: {\n type: 'object',\n description: 'Key-value pairs for interpolation',\n },\n },\n required: ['template', 'variables'],\n },\n handler: async (args: { template: string; variables: Record<string, string> }) => {\n const result = text.interpolate(args.template, args.variables);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { math } from '@atmaticai/agent-tools-core';\n\nexport const mathTools = [\n {\n name: 'agent_tools_math_convert',\n description:\n 'Convert between units of measurement (length, weight, temperature, data).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n value: {\n type: 'number',\n description: 'The numeric value to convert',\n },\n from: {\n type: 'string',\n description: 'Source unit (e.g., \"km\", \"lb\", \"celsius\", \"gb\")',\n },\n to: {\n type: 'string',\n description: 'Target unit (e.g., \"mi\", \"kg\", \"fahrenheit\", \"mb\")',\n },\n category: {\n type: 'string',\n enum: ['length', 'weight', 'temperature', 'data'],\n description: 'Unit category',\n },\n },\n required: ['value', 'from', 'to', 'category'],\n },\n handler: async (args: { value: number; from: string; to: string; category: string }) => {\n try {\n const result = math.convertUnit(args.value, args.from, args.to, args.category as math.UnitCategory);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_math_base',\n description:\n 'Convert numbers between binary, octal, decimal, and hexadecimal bases.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The number string to convert',\n },\n fromBase: {\n type: 'string',\n enum: ['binary', 'octal', 'decimal', 'hex'],\n description: 'Source number base',\n },\n },\n required: ['input', 'fromBase'],\n },\n handler: async (args: { input: string; fromBase: string }) => {\n try {\n const result = math.convertBase(args.input, args.fromBase as math.NumberBase);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_math_statistics',\n description:\n 'Calculate statistics for a set of numbers: mean, median, mode, std deviation, percentiles.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n numbers: {\n type: 'array',\n items: { type: 'number' },\n description: 'Array of numbers to analyze',\n },\n },\n required: ['numbers'],\n },\n handler: async (args: { numbers: number[] }) => {\n try {\n const result = math.calculateStats(args.numbers);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_math_format',\n description:\n 'Format a number with locale-aware formatting, currency, or percentage display.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n value: {\n type: 'number',\n description: 'The number to format',\n },\n locale: {\n type: 'string',\n description: 'Locale string (default: \"en-US\")',\n },\n style: {\n type: 'string',\n enum: ['decimal', 'currency', 'percent'],\n description: 'Format style (default: \"decimal\")',\n },\n currency: {\n type: 'string',\n description: 'Currency code when style is \"currency\" (e.g., \"USD\")',\n },\n minimumFractionDigits: {\n type: 'number',\n description: 'Minimum decimal places',\n },\n maximumFractionDigits: {\n type: 'number',\n description: 'Maximum decimal places',\n },\n },\n required: ['value'],\n },\n handler: async (args: { value: number; locale?: string; style?: string; currency?: string; minimumFractionDigits?: number; maximumFractionDigits?: number }) => {\n try {\n const result = math.formatNumber(args.value, {\n locale: args.locale,\n style: args.style as 'decimal' | 'currency' | 'percent',\n currency: args.currency,\n minimumFractionDigits: args.minimumFractionDigits,\n maximumFractionDigits: args.maximumFractionDigits,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_math_percentage',\n description:\n 'Calculate percentages: what percentage a value is of a total, or percentage change between two values.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n action: {\n type: 'string',\n enum: ['of', 'change'],\n description: '\"of\" for value/total percentage, \"change\" for percentage change from/to',\n },\n value: {\n type: 'number',\n description: 'The value (or \"from\" value for change)',\n },\n total: {\n type: 'number',\n description: 'The total (or \"to\" value for change)',\n },\n },\n required: ['action', 'value', 'total'],\n },\n handler: async (args: { action: string; value: number; total: number }) => {\n try {\n if (args.action === 'change') {\n const result = math.percentageChange(args.value, args.total);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n }\n const result = math.percentage(args.value, args.total);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n];\n","import { color } from '@atmaticai/agent-tools-core';\n\nexport const colorTools = [\n {\n name: 'agent_tools_color_parse',\n description:\n 'Parse a color string (hex, rgb(), hsl()) and return all format representations.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'Color string to parse (e.g., \"#FF5733\", \"rgb(255,87,51)\", \"hsl(9,100%,60%)\")',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n try {\n const result = color.parseColor(args.input);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_color_convert',\n description:\n 'Convert a color to a specific format (hex, rgb, hsl).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'Color string to convert',\n },\n to: {\n type: 'string',\n enum: ['hex', 'rgb', 'hsl'],\n description: 'Target color format',\n },\n },\n required: ['input', 'to'],\n },\n handler: async (args: { input: string; to: string }) => {\n try {\n const result = color.convertColor(args.input, args.to as color.ColorFormat);\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_color_contrast',\n description:\n 'Calculate WCAG 2.1 contrast ratio between two colors with AA/AAA pass/fail results.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n color1: {\n type: 'string',\n description: 'First color',\n },\n color2: {\n type: 'string',\n description: 'Second color',\n },\n },\n required: ['color1', 'color2'],\n },\n handler: async (args: { color1: string; color2: string }) => {\n try {\n const result = color.contrastRatio(args.color1, args.color2);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_color_palette',\n description:\n 'Generate a color palette from a base color: complementary, analogous, triadic, shades, or tints.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n base: {\n type: 'string',\n description: 'Base color string',\n },\n type: {\n type: 'string',\n enum: ['complementary', 'analogous', 'triadic', 'shades', 'tints'],\n description: 'Palette generation strategy',\n },\n count: {\n type: 'number',\n description: 'Number of colors to generate (default: 5, ignored for complementary/triadic)',\n },\n },\n required: ['base', 'type'],\n },\n handler: async (args: { base: string; type: string; count?: number }) => {\n try {\n const result = color.generatePalette(args.base, {\n type: args.type as color.PaletteType,\n count: args.count,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_color_blend',\n description:\n 'Blend two colors together at a given ratio.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n color1: {\n type: 'string',\n description: 'First color',\n },\n color2: {\n type: 'string',\n description: 'Second color',\n },\n ratio: {\n type: 'number',\n description: 'Blend ratio 0-1 (0 = all color1, 1 = all color2, default: 0.5)',\n },\n },\n required: ['color1', 'color2'],\n },\n handler: async (args: { color1: string; color2: string; ratio?: number }) => {\n try {\n const result = color.blendColors(args.color1, args.color2, args.ratio);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_color_name',\n description:\n 'Find the nearest CSS named color for a given color input.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'Color string to identify',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n try {\n const result = color.colorName(args.input);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n];\n","import { physics } from '@atmaticai/agent-tools-core';\n\nexport const physicsTools = [\n {\n name: 'agent_tools_physics_constants',\n description: 'Look up physical constants (speed of light, Planck, Boltzmann, etc.) or list all constants by category.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n key: { type: 'string', description: 'Constant key (c, G, h, hbar, k_B, N_A, R, e, epsilon_0, mu_0, m_e, m_p, sigma, g, atm, k_e)' },\n category: { type: 'string', description: 'Filter by category: universal, electromagnetic, thermodynamics, quantum, atomic, mechanics, chemistry' },\n },\n required: [] as string[],\n },\n handler: async (args: { key?: string; category?: string }) => {\n try {\n if (args.key) {\n const result = physics.getConstant(args.key);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n }\n const result = physics.listConstants(args.category);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_kinematics',\n description: 'Solve kinematics equations of motion. Provide at least 3 known values to solve for the remaining.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n displacement: { type: 'number', description: 'Displacement in meters' },\n initialVelocity: { type: 'number', description: 'Initial velocity in m/s' },\n finalVelocity: { type: 'number', description: 'Final velocity in m/s' },\n acceleration: { type: 'number', description: 'Acceleration in m/s²' },\n time: { type: 'number', description: 'Time in seconds' },\n },\n required: [] as string[],\n },\n handler: async (args: { displacement?: number; initialVelocity?: number; finalVelocity?: number; acceleration?: number; time?: number }) => {\n try {\n const result = physics.solveKinematics(args);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_projectile',\n description: 'Calculate projectile motion: range, max height, flight time, and velocity at peak.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n initialVelocity: { type: 'number', description: 'Initial velocity in m/s' },\n angle: { type: 'number', description: 'Launch angle in degrees (0-90)' },\n gravity: { type: 'number', description: 'Gravity in m/s² (default: 9.80665)' },\n },\n required: ['initialVelocity', 'angle'],\n },\n handler: async (args: { initialVelocity: number; angle: number; gravity?: number }) => {\n try {\n const result = physics.projectileMotion(args.initialVelocity, args.angle, args.gravity);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_force',\n description: 'Calculate force using Newton\\'s second law (F = ma).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n mass: { type: 'number', description: 'Mass in kg' },\n acceleration: { type: 'number', description: 'Acceleration in m/s²' },\n },\n required: ['mass', 'acceleration'],\n },\n handler: async (args: { mass: number; acceleration: number }) => {\n try {\n const result = physics.calculateForce(args.mass, args.acceleration);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_energy',\n description: 'Calculate kinetic energy, potential energy, and total mechanical energy.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n mass: { type: 'number', description: 'Mass in kg' },\n velocity: { type: 'number', description: 'Velocity in m/s' },\n height: { type: 'number', description: 'Height in meters (default: 0)' },\n gravity: { type: 'number', description: 'Gravity in m/s² (default: 9.80665)' },\n },\n required: ['mass', 'velocity'],\n },\n handler: async (args: { mass: number; velocity: number; height?: number; gravity?: number }) => {\n try {\n const result = physics.calculateEnergy(args.mass, args.velocity, args.height, args.gravity);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_gravity',\n description: 'Calculate gravitational force between two masses using Newton\\'s law of universal gravitation.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n mass1: { type: 'number', description: 'First mass in kg' },\n mass2: { type: 'number', description: 'Second mass in kg' },\n distance: { type: 'number', description: 'Distance between centers in meters' },\n },\n required: ['mass1', 'mass2', 'distance'],\n },\n handler: async (args: { mass1: number; mass2: number; distance: number }) => {\n try {\n const result = physics.gravitationalForce(args.mass1, args.mass2, args.distance);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_orbital',\n description: 'Calculate orbital velocity and escape velocity for a body orbiting a central mass.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n mass: { type: 'number', description: 'Central body mass in kg' },\n radius: { type: 'number', description: 'Orbital radius in meters' },\n },\n required: ['mass', 'radius'],\n },\n handler: async (args: { mass: number; radius: number }) => {\n try {\n const result = physics.orbitalMechanics(args.mass, args.radius);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_ohms_law',\n description: 'Apply Ohm\\'s law. Provide at least 2 of voltage, current, resistance to solve for the third and power.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n voltage: { type: 'number', description: 'Voltage in volts' },\n current: { type: 'number', description: 'Current in amperes' },\n resistance: { type: 'number', description: 'Resistance in ohms' },\n },\n required: [] as string[],\n },\n handler: async (args: { voltage?: number; current?: number; resistance?: number }) => {\n try {\n const result = physics.ohmsLaw(args);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_resistors',\n description: 'Calculate total resistance for resistors in series or parallel.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n values: { type: 'array', items: { type: 'number' }, description: 'Resistor values in ohms' },\n configuration: { type: 'string', enum: ['series', 'parallel'], description: 'Circuit configuration' },\n },\n required: ['values', 'configuration'],\n },\n handler: async (args: { values: number[]; configuration: 'series' | 'parallel' }) => {\n try {\n const result = physics.resistors(args.values, args.configuration);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_wave',\n description: 'Solve wave equation (v = fλ). Provide at least 2 of frequency, wavelength, speed.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n frequency: { type: 'number', description: 'Frequency in Hz' },\n wavelength: { type: 'number', description: 'Wavelength in meters' },\n speed: { type: 'number', description: 'Wave speed in m/s' },\n },\n required: [] as string[],\n },\n handler: async (args: { frequency?: number; wavelength?: number; speed?: number }) => {\n try {\n const result = physics.waveEquation(args);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_snell',\n description: 'Apply Snell\\'s law for light refraction. Calculates refraction angle and detects total internal reflection.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n n1: { type: 'number', description: 'Refractive index of medium 1' },\n n2: { type: 'number', description: 'Refractive index of medium 2' },\n angle: { type: 'number', description: 'Incident angle in degrees' },\n },\n required: ['n1', 'n2', 'angle'],\n },\n handler: async (args: { n1: number; n2: number; angle: number }) => {\n try {\n const result = physics.snellsLaw(args.n1, args.n2, args.angle);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_ideal_gas',\n description: 'Solve the ideal gas law (PV = nRT). Provide at least 3 of pressure, volume, moles, temperature.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n pressure: { type: 'number', description: 'Pressure in Pa' },\n volume: { type: 'number', description: 'Volume in m³' },\n moles: { type: 'number', description: 'Amount in mol' },\n temperature: { type: 'number', description: 'Temperature in K' },\n },\n required: [] as string[],\n },\n handler: async (args: { pressure?: number; volume?: number; moles?: number; temperature?: number }) => {\n try {\n const result = physics.idealGasLaw(args);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_carnot',\n description: 'Calculate Carnot efficiency for a heat engine given hot and cold reservoir temperatures.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n hotTemperature: { type: 'number', description: 'Hot reservoir temperature in Kelvin' },\n coldTemperature: { type: 'number', description: 'Cold reservoir temperature in Kelvin' },\n },\n required: ['hotTemperature', 'coldTemperature'],\n },\n handler: async (args: { hotTemperature: number; coldTemperature: number }) => {\n try {\n const result = physics.carnotEfficiency(args.hotTemperature, args.coldTemperature);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_lorentz',\n description: 'Calculate the Lorentz factor (gamma) for special relativity given a velocity.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n velocity: { type: 'number', description: 'Velocity in m/s' },\n },\n required: ['velocity'],\n },\n handler: async (args: { velocity: number }) => {\n try {\n const result = physics.lorentzFactor(args.velocity);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_time_dilation',\n description: 'Calculate relativistic time dilation for a moving object.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n properTime: { type: 'number', description: 'Proper time in seconds' },\n velocity: { type: 'number', description: 'Velocity in m/s' },\n },\n required: ['properTime', 'velocity'],\n },\n handler: async (args: { properTime: number; velocity: number }) => {\n try {\n const result = physics.timeDilation(args.properTime, args.velocity);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_mass_energy',\n description: 'Calculate mass-energy equivalence (E = mc²). Convert mass to energy or energy to mass.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n mass: { type: 'number', description: 'Mass in kg (for mass→energy)' },\n energy: { type: 'number', description: 'Energy in joules (for energy→mass)' },\n },\n required: [] as string[],\n },\n handler: async (args: { mass?: number; energy?: number }) => {\n try {\n const result = args.mass !== undefined ? physics.massEnergy(args.mass) : physics.energyToMass(args.energy!);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_unit_convert',\n description: 'Convert between physics units: force (N, lbf, kgf), energy (J, cal, eV, kWh, BTU), power (W, hp), pressure (Pa, atm, bar, psi), speed (m/s, km/h, mph).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n value: { type: 'number', description: 'Value to convert' },\n from: { type: 'string', description: 'Source unit' },\n to: { type: 'string', description: 'Target unit' },\n category: { type: 'string', enum: ['force', 'energy', 'power', 'pressure', 'speed'], description: 'Unit category' },\n },\n required: ['value', 'from', 'to', 'category'],\n },\n handler: async (args: { value: number; from: string; to: string; category: string }) => {\n try {\n const result = physics.convertPhysicsUnit(args.value, args.from, args.to, args.category as physics.PhysicsUnitCategory);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n];\n","import { structural } from '@atmaticai/agent-tools-core';\n\nexport const structuralTools = [\n // --- Stress & Strain ---\n {\n name: 'agent_tools_structural_normal_stress',\n description: 'Calculate normal stress (σ = F/A) given force and cross-sectional area.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n force: { type: 'number', description: 'Axial force in Newtons' },\n area: { type: 'number', description: 'Cross-sectional area in m²' },\n },\n required: ['force', 'area'],\n },\n handler: async (args: { force: number; area: number }) => {\n try {\n const result = structural.normalStress(args.force, args.area);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_shear_stress',\n description: 'Calculate shear stress (τ = V/A) given shear force and area.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n force: { type: 'number', description: 'Shear force in Newtons' },\n area: { type: 'number', description: 'Cross-sectional area in m²' },\n },\n required: ['force', 'area'],\n },\n handler: async (args: { force: number; area: number }) => {\n try {\n const result = structural.shearStress(args.force, args.area);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_strain',\n description: 'Calculate strain (ε = ΔL/L) given change in length and original length.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n deltaLength: { type: 'number', description: 'Change in length in meters' },\n originalLength: { type: 'number', description: 'Original length in meters' },\n },\n required: ['deltaLength', 'originalLength'],\n },\n handler: async (args: { deltaLength: number; originalLength: number }) => {\n try {\n const result = structural.strain(args.deltaLength, args.originalLength);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_youngs_modulus',\n description: \"Calculate Young's modulus (E = σ/ε) from stress and strain values.\",\n inputSchema: {\n type: 'object' as const,\n properties: {\n stress: { type: 'number', description: 'Stress in Pa' },\n strain: { type: 'number', description: 'Strain (dimensionless)' },\n },\n required: ['stress', 'strain'],\n },\n handler: async (args: { stress: number; strain: number }) => {\n try {\n const result = structural.youngsModulus(args.stress, args.strain);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_factor_of_safety',\n description: 'Calculate factor of safety (FoS = σ_ultimate / σ_working).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n ultimateStress: { type: 'number', description: 'Ultimate stress in Pa' },\n workingStress: { type: 'number', description: 'Working/allowable stress in Pa' },\n },\n required: ['ultimateStress', 'workingStress'],\n },\n handler: async (args: { ultimateStress: number; workingStress: number }) => {\n try {\n const result = structural.factorOfSafety(args.ultimateStress, args.workingStress);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_hoop_stress',\n description: 'Calculate hoop and longitudinal stress in thin-walled pressure vessels (σ = pR/t).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n pressure: { type: 'number', description: 'Internal pressure in Pa' },\n radius: { type: 'number', description: 'Vessel radius in meters' },\n thickness: { type: 'number', description: 'Wall thickness in meters' },\n },\n required: ['pressure', 'radius', 'thickness'],\n },\n handler: async (args: { pressure: number; radius: number; thickness: number }) => {\n try {\n const result = structural.hoopStress(args.pressure, args.radius, args.thickness);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n\n // --- Beams ---\n {\n name: 'agent_tools_structural_simply_supported_beam',\n description: 'Analyze a simply supported beam: reactions, max moment, max shear, and deflection. Load types: point-center, point-custom, uniform, triangular.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n length: { type: 'number', description: 'Beam length in meters' },\n load: { type: 'number', description: 'Total load in Newtons' },\n loadType: { type: 'string', enum: ['point-center', 'point-custom', 'uniform', 'triangular'], description: 'Type of loading' },\n E: { type: 'number', description: 'Elastic modulus in Pa (optional, for deflection)' },\n I: { type: 'number', description: 'Moment of inertia in m⁴ (optional, for deflection)' },\n loadPosition: { type: 'number', description: 'Load position from left end in meters (for point-custom)' },\n },\n required: ['length', 'load', 'loadType'],\n },\n handler: async (args: { length: number; load: number; loadType: string; E?: number; I?: number; loadPosition?: number }) => {\n try {\n const result = structural.simplySupported(args.length, args.load, args.loadType as structural.BeamLoadType, args.E, args.I, args.loadPosition);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_cantilever_beam',\n description: 'Analyze a cantilever beam: reactions, max moment, max shear, and deflection. Load types: point-end, point-custom, uniform.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n length: { type: 'number', description: 'Beam length in meters' },\n load: { type: 'number', description: 'Total load in Newtons' },\n loadType: { type: 'string', enum: ['point-end', 'point-custom', 'uniform'], description: 'Type of loading' },\n E: { type: 'number', description: 'Elastic modulus in Pa (optional, for deflection)' },\n I: { type: 'number', description: 'Moment of inertia in m⁴ (optional, for deflection)' },\n loadPosition: { type: 'number', description: 'Load position from fixed end in meters (for point-custom)' },\n },\n required: ['length', 'load', 'loadType'],\n },\n handler: async (args: { length: number; load: number; loadType: string; E?: number; I?: number; loadPosition?: number }) => {\n try {\n const result = structural.cantilever(args.length, args.load, args.loadType as structural.CantileverLoadType, args.E, args.I, args.loadPosition);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n\n // --- Columns ---\n {\n name: 'agent_tools_structural_euler_buckling',\n description: \"Calculate Euler's critical buckling load (Pcr = π²EI/Le²) for columns with various end conditions.\",\n inputSchema: {\n type: 'object' as const,\n properties: {\n E: { type: 'number', description: 'Elastic modulus in Pa' },\n I: { type: 'number', description: 'Moment of inertia in m⁴' },\n length: { type: 'number', description: 'Column length in meters' },\n endCondition: { type: 'string', enum: ['pinned-pinned', 'fixed-free', 'fixed-pinned', 'fixed-fixed'], description: 'End support conditions' },\n },\n required: ['E', 'I', 'length', 'endCondition'],\n },\n handler: async (args: { E: number; I: number; length: number; endCondition: string }) => {\n try {\n const result = structural.eulerBuckling(args.E, args.I, args.length, args.endCondition as structural.EndCondition);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_slenderness_ratio',\n description: 'Calculate slenderness ratio (λ = Le/r) and classify column as short, intermediate, or long.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n effectiveLength: { type: 'number', description: 'Effective length in meters' },\n radiusOfGyration: { type: 'number', description: 'Radius of gyration in meters' },\n },\n required: ['effectiveLength', 'radiusOfGyration'],\n },\n handler: async (args: { effectiveLength: number; radiusOfGyration: number }) => {\n try {\n const result = structural.slendernessRatio(args.effectiveLength, args.radiusOfGyration);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n\n // --- Sections ---\n {\n name: 'agent_tools_structural_rectangle_section',\n description: 'Calculate properties of a rectangular cross-section: area, Ixx, Iyy, Sx, Sy, rx, ry.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n width: { type: 'number', description: 'Width in meters' },\n height: { type: 'number', description: 'Height in meters' },\n },\n required: ['width', 'height'],\n },\n handler: async (args: { width: number; height: number }) => {\n try {\n const result = structural.rectangleSection(args.width, args.height);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_circular_section',\n description: 'Calculate properties of a solid circular cross-section: area, I, S, r.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n diameter: { type: 'number', description: 'Diameter in meters' },\n },\n required: ['diameter'],\n },\n handler: async (args: { diameter: number }) => {\n try {\n const result = structural.circularSection(args.diameter);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_hollow_circular_section',\n description: 'Calculate properties of a hollow circular (tube) cross-section: area, I, S, r.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n outerDiameter: { type: 'number', description: 'Outer diameter in meters' },\n innerDiameter: { type: 'number', description: 'Inner diameter in meters' },\n },\n required: ['outerDiameter', 'innerDiameter'],\n },\n handler: async (args: { outerDiameter: number; innerDiameter: number }) => {\n try {\n const result = structural.hollowCircularSection(args.outerDiameter, args.innerDiameter);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_i_beam_section',\n description: 'Calculate properties of an I-beam (wide flange) cross-section: area, Ixx, Iyy, Sx, Sy, rx, ry.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n flangeWidth: { type: 'number', description: 'Flange width in meters' },\n flangeThickness: { type: 'number', description: 'Flange thickness in meters' },\n webHeight: { type: 'number', description: 'Web height (between flanges) in meters' },\n webThickness: { type: 'number', description: 'Web thickness in meters' },\n },\n required: ['flangeWidth', 'flangeThickness', 'webHeight', 'webThickness'],\n },\n handler: async (args: { flangeWidth: number; flangeThickness: number; webHeight: number; webThickness: number }) => {\n try {\n const result = structural.iBeamSection(args.flangeWidth, args.flangeThickness, args.webHeight, args.webThickness);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n\n // --- Soils ---\n {\n name: 'agent_tools_structural_terzaghi_bearing',\n description: \"Calculate Terzaghi's bearing capacity for shallow foundations (strip, square, circular).\",\n inputSchema: {\n type: 'object' as const,\n properties: {\n cohesion: { type: 'number', description: 'Soil cohesion in Pa' },\n depth: { type: 'number', description: 'Foundation depth in meters' },\n unitWeight: { type: 'number', description: 'Soil unit weight in N/m³' },\n frictionAngle: { type: 'number', description: 'Soil friction angle in degrees' },\n foundationType: { type: 'string', enum: ['strip', 'square', 'circular'], description: 'Foundation shape' },\n },\n required: ['cohesion', 'depth', 'unitWeight', 'frictionAngle', 'foundationType'],\n },\n handler: async (args: { cohesion: number; depth: number; unitWeight: number; frictionAngle: number; foundationType: string }) => {\n try {\n const result = structural.terzaghiBearing(args.cohesion, args.depth, args.unitWeight, args.frictionAngle, args.foundationType as structural.FoundationType);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_lateral_earth_pressure',\n description: 'Calculate Rankine lateral earth pressure coefficients and forces (active, passive, at-rest).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n unitWeight: { type: 'number', description: 'Soil unit weight in N/m³' },\n height: { type: 'number', description: 'Wall/excavation height in meters' },\n frictionAngle: { type: 'number', description: 'Soil friction angle in degrees' },\n pressureType: { type: 'string', enum: ['active', 'passive', 'at-rest'], description: 'Type of earth pressure' },\n },\n required: ['unitWeight', 'height', 'frictionAngle', 'pressureType'],\n },\n handler: async (args: { unitWeight: number; height: number; frictionAngle: number; pressureType: string }) => {\n try {\n const result = structural.lateralEarthPressure(args.unitWeight, args.height, args.frictionAngle, args.pressureType as structural.EarthPressureType);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_settlement',\n description: 'Calculate elastic settlement (δ = qH/E) for foundations.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n load: { type: 'number', description: 'Applied load in Newtons' },\n area: { type: 'number', description: 'Foundation area in m²' },\n elasticModulus: { type: 'number', description: 'Soil elastic modulus in Pa' },\n thickness: { type: 'number', description: 'Compressible layer thickness in meters' },\n },\n required: ['load', 'area', 'elasticModulus', 'thickness'],\n },\n handler: async (args: { load: number; area: number; elasticModulus: number; thickness: number }) => {\n try {\n const result = structural.settlement(args.load, args.area, args.elasticModulus, args.thickness);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n\n // --- Materials ---\n {\n name: 'agent_tools_structural_get_material',\n description: 'Look up structural material properties (E, fy, fu, density, Poisson ratio, thermal expansion) by name.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n name: { type: 'string', description: 'Material name (e.g., A36, A992, 304, 6061, C30, Douglas Fir)' },\n },\n required: ['name'],\n },\n handler: async (args: { name: string }) => {\n try {\n const result = structural.getMaterial(args.name);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_list_materials',\n description: 'List structural materials, optionally filtered by category (steel, aluminum, concrete, timber, other).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n category: { type: 'string', description: 'Filter by category: steel, aluminum, concrete, timber, other' },\n },\n required: [] as string[],\n },\n handler: async (args: { category?: string }) => {\n try {\n const result = structural.listMaterials(args.category);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n];\n","import { jsonTools } from './json';\nimport { csvTools } from './csv';\nimport { pdfTools } from './pdf';\nimport { xmlTools } from './xml';\nimport { excelTools } from './excel';\nimport { imageTools } from './image';\nimport { markdownTools } from './markdown';\nimport { archiveTools } from './archive';\nimport { regexTools } from './regex';\nimport { diffTools } from './diff';\nimport { sqlTools } from './sql';\nimport { cryptoMcpTools } from './crypto';\nimport { datetimeTools } from './datetime';\nimport { textTools } from './text';\nimport { mathTools } from './math';\nimport { colorTools } from './color';\nimport { physicsTools } from './physics';\nimport { structuralTools } from './structural';\n\nexport interface McpTool {\n name: string;\n description: string;\n inputSchema: {\n type: 'object';\n properties: Record<string, unknown>;\n required: string[];\n };\n handler: (args: Record<string, unknown>) => Promise<{\n content: { type: 'text'; text: string }[];\n isError?: boolean;\n }>;\n}\n\nexport const allTools = [\n ...jsonTools,\n ...csvTools,\n ...pdfTools,\n ...xmlTools,\n ...excelTools,\n ...imageTools,\n ...markdownTools,\n ...archiveTools,\n ...regexTools,\n ...diffTools,\n ...sqlTools,\n ...cryptoMcpTools,\n ...datetimeTools,\n ...textTools,\n ...mathTools,\n ...colorTools,\n ...physicsTools,\n ...structuralTools,\n] as unknown as McpTool[];\n\nexport { jsonTools, csvTools, pdfTools };\nexport { xmlTools, excelTools, imageTools, markdownTools, archiveTools };\nexport { regexTools, diffTools, sqlTools, cryptoMcpTools, datetimeTools };\nexport { textTools, mathTools, colorTools, physicsTools };\nexport { structuralTools };\n","import { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\nimport { settingsService } from '@atmaticai/agent-tools-core/settings';\nimport type { ToolCategory } from '@atmaticai/agent-tools-core/settings';\nimport { allTools } from './tools';\n\nfunction getToolCategory(toolName: string): ToolCategory | null {\n const match = toolName.match(/^agent_tools_([a-z]+)_/);\n return match ? (match[1] as ToolCategory) : null;\n}\n\nexport function createServer() {\n const server = new Server(\n {\n name: 'agent-tools',\n version: '1.0.0',\n },\n {\n capabilities: {\n tools: {},\n },\n }\n );\n\n server.setRequestHandler(ListToolsRequestSchema, async () => {\n const settings = await settingsService.getSettings();\n const enabledTools = allTools.filter((tool) => {\n const category = getToolCategory(tool.name);\n return !category || settings.enabled[category] !== false;\n });\n\n return {\n tools: enabledTools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n })),\n };\n });\n\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params;\n\n const category = getToolCategory(name);\n if (category) {\n const enabled = await settingsService.isToolEnabled(category);\n if (!enabled) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error: The \"${category}\" tool category is currently disabled. Enable it in Settings.`,\n },\n ],\n isError: true,\n };\n }\n }\n\n const tool = allTools.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Unknown tool: ${name}`);\n }\n\n try {\n const result = await tool.handler(args as never);\n return result;\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error: ${(error as Error).message}`,\n },\n ],\n isError: true,\n };\n }\n });\n\n return server;\n}\n\nexport async function runStdioServer() {\n const server = createServer();\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n","import express, { Request, Response } from 'express';\nimport { allTools } from '../tools';\n\ninterface JsonRpcRequest {\n jsonrpc: '2.0';\n id: string | number;\n method: string;\n params?: Record<string, unknown>;\n}\n\ninterface JsonRpcResponse {\n jsonrpc: '2.0';\n id: string | number;\n result?: unknown;\n error?: {\n code: number;\n message: string;\n data?: unknown;\n };\n}\n\nexport function createHttpServer(port: number = 3001) {\n const app = express();\n\n app.use(express.json({ limit: '50mb' }));\n\n app.use((_req, res, next) => {\n res.header('Access-Control-Allow-Origin', '*');\n res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');\n res.header('Access-Control-Allow-Headers', 'Content-Type');\n next();\n });\n\n app.options('*', (_req, res) => {\n res.sendStatus(200);\n });\n\n app.get('/health', (_req, res) => {\n res.json({ status: 'ok', server: 'agent-tools-mcp', version: '1.0.0' });\n });\n\n app.post('/mcp', async (req: Request, res: Response) => {\n const request = req.body as JsonRpcRequest;\n\n if (request.jsonrpc !== '2.0') {\n return res.status(400).json({\n jsonrpc: '2.0',\n id: request.id,\n error: { code: -32600, message: 'Invalid Request' },\n });\n }\n\n try {\n const result = await handleRequest(request);\n res.json(result);\n } catch (error) {\n res.json({\n jsonrpc: '2.0',\n id: request.id,\n error: {\n code: -32603,\n message: (error as Error).message,\n },\n } as JsonRpcResponse);\n }\n });\n\n app.post('/mcp/stream', async (req: Request, res: Response) => {\n const request = req.body as JsonRpcRequest;\n\n res.setHeader('Content-Type', 'text/event-stream');\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('Connection', 'keep-alive');\n\n try {\n res.write(`event: start\\n`);\n res.write(`data: ${JSON.stringify({ id: request.id })}\\n\\n`);\n\n const result = await handleRequest(request);\n\n res.write(`event: result\\n`);\n res.write(`data: ${JSON.stringify(result)}\\n\\n`);\n\n res.write(`event: end\\n`);\n res.write(`data: {}\\n\\n`);\n\n res.end();\n } catch (error) {\n res.write(`event: error\\n`);\n res.write(\n `data: ${JSON.stringify({ error: (error as Error).message })}\\n\\n`\n );\n res.end();\n }\n });\n\n app.get('/tools', (_req, res) => {\n res.json({\n tools: allTools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n })),\n });\n });\n\n return app.listen(port, () => {\n console.log(`Agent Tools MCP HTTP server running on port ${port}`);\n console.log(`Endpoints:`);\n console.log(` POST /mcp - JSON-RPC endpoint`);\n console.log(` POST /mcp/stream - Streaming endpoint`);\n console.log(` GET /tools - List available tools`);\n console.log(` GET /health - Health check`);\n });\n}\n\nasync function handleRequest(request: JsonRpcRequest): Promise<JsonRpcResponse> {\n const { method, params, id } = request;\n\n switch (method) {\n case 'tools/list':\n return {\n jsonrpc: '2.0',\n id,\n result: {\n tools: allTools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n })),\n },\n };\n\n case 'tools/call': {\n const { name, arguments: args } = params as {\n name: string;\n arguments: Record<string, unknown>;\n };\n\n const tool = allTools.find((t) => t.name === name);\n if (!tool) {\n return {\n jsonrpc: '2.0',\n id,\n error: { code: -32601, message: `Unknown tool: ${name}` },\n };\n }\n\n try {\n const result = await tool.handler(args as never);\n return { jsonrpc: '2.0', id, result };\n } catch (error) {\n return {\n jsonrpc: '2.0',\n id,\n error: { code: -32603, message: (error as Error).message },\n };\n }\n }\n\n case 'initialize':\n return {\n jsonrpc: '2.0',\n id,\n result: {\n protocolVersion: '2024-11-05',\n serverInfo: {\n name: 'agent-tools',\n version: '1.0.0',\n },\n capabilities: {\n tools: {},\n },\n },\n };\n\n default:\n return {\n jsonrpc: '2.0',\n id,\n error: { code: -32601, message: `Method not found: ${method}` },\n };\n }\n}\n","import express, { Request, Response } from 'express';\nimport { allTools } from '../tools';\n\ninterface Client {\n id: string;\n res: Response;\n}\n\nconst clients: Map<string, Client> = new Map();\n\nexport function createSSEServer(port: number = 3001) {\n const app = express();\n\n app.use(express.json({ limit: '50mb' }));\n\n app.use((_req, res, next) => {\n res.header('Access-Control-Allow-Origin', '*');\n res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');\n res.header('Access-Control-Allow-Headers', 'Content-Type');\n next();\n });\n\n app.get('/health', (_req, res) => {\n res.json({ status: 'ok', server: 'agent-tools-mcp-sse', version: '1.0.0' });\n });\n\n app.get('/sse', (req: Request, res: Response) => {\n const clientId = Math.random().toString(36).substring(7);\n\n res.setHeader('Content-Type', 'text/event-stream');\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('Connection', 'keep-alive');\n\n res.write(`event: connected\\n`);\n res.write(`data: ${JSON.stringify({ clientId })}\\n\\n`);\n\n res.write(`event: endpoint\\n`);\n res.write(`data: ${JSON.stringify({ endpoint: `/message?clientId=${clientId}` })}\\n\\n`);\n\n clients.set(clientId, { id: clientId, res });\n\n req.on('close', () => {\n clients.delete(clientId);\n });\n });\n\n app.post('/message', async (req: Request, res: Response) => {\n const clientId = req.query.clientId as string;\n const client = clients.get(clientId);\n\n if (!client) {\n return res.status(404).json({ error: 'Client not found' });\n }\n\n const { method, params, id } = req.body;\n\n try {\n let result: unknown;\n\n switch (method) {\n case 'tools/list':\n result = {\n tools: allTools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n })),\n };\n break;\n\n case 'tools/call': {\n const { name, arguments: args } = params;\n const tool = allTools.find((t) => t.name === name);\n\n if (!tool) {\n throw new Error(`Unknown tool: ${name}`);\n }\n\n result = await tool.handler(args);\n break;\n }\n\n case 'initialize':\n result = {\n protocolVersion: '2024-11-05',\n serverInfo: {\n name: 'agent-tools',\n version: '1.0.0',\n },\n capabilities: {\n tools: {},\n },\n };\n break;\n\n default:\n throw new Error(`Unknown method: ${method}`);\n }\n\n client.res.write(`event: message\\n`);\n client.res.write(\n `data: ${JSON.stringify({ jsonrpc: '2.0', id, result })}\\n\\n`\n );\n\n res.json({ status: 'sent' });\n } catch (error) {\n client.res.write(`event: message\\n`);\n client.res.write(\n `data: ${JSON.stringify({\n jsonrpc: '2.0',\n id,\n error: { code: -32603, message: (error as Error).message },\n })}\\n\\n`\n );\n\n res.json({ status: 'error', error: (error as Error).message });\n }\n });\n\n app.get('/tools', (_req, res) => {\n res.json({\n tools: allTools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n })),\n });\n });\n\n return app.listen(port, () => {\n console.log(`Agent Tools MCP SSE server running on port ${port}`);\n console.log(`Endpoints:`);\n console.log(` GET /sse - SSE connection`);\n console.log(` POST /message - Send message (requires clientId)`);\n console.log(` GET /tools - List available tools`);\n console.log(` GET /health - Health check`);\n });\n}\n","import { Command } from 'commander';\nimport { runStdioServer } from './server';\nimport { createHttpServer, createSSEServer } from './transports';\n\nconst program = new Command();\n\nprogram\n .name('agent-tools-mcp')\n .description('Agent Tools MCP Server - Deterministic data transformation tools')\n .version('1.0.0');\n\nprogram\n .option('-t, --transport <type>', 'Transport type: stdio, sse, http', 'stdio')\n .option('-p, --port <number>', 'Port for HTTP/SSE transport', '3001')\n .action(async (options) => {\n const { transport, port } = options;\n\n console.log(`Starting Agent Tools MCP server...`);\n console.log(`Transport: ${transport}`);\n\n switch (transport) {\n case 'stdio':\n await runStdioServer();\n break;\n\n case 'http':\n createHttpServer(parseInt(port, 10));\n break;\n\n case 'sse':\n createSSEServer(parseInt(port, 10));\n break;\n\n default:\n console.error(`Unknown transport: ${transport}`);\n process.exit(1);\n }\n });\n\nprogram.parse();\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/settings/defaults.ts","../src/settings/filesystem-repository.ts","../src/settings/service.ts","../src/json/format.ts","../src/json/validate.ts","../src/json/schema-validate.ts","../src/json/query.ts","../src/json/convert.ts","../src/json/diff.ts","../src/json/stats.ts","../src/tools/json.ts","../src/csv/parse.ts","../src/csv/filter.ts","../src/csv/stats.ts","../src/csv/transform.ts","../src/csv/export.ts","../src/tools/csv.ts","../src/pdf/utils.ts","../src/pdf/merge.ts","../src/pdf/split.ts","../src/pdf/metadata.ts","../src/pdf/transform.ts","../src/pdf/extract.ts","../src/pdf/template.ts","../src/pdf/form.ts","../src/tools/pdf.ts","../src/xml/parse.ts","../src/xml/format.ts","../src/xml/validate.ts","../src/xml/query.ts","../src/xml/convert.ts","../src/xml/stats.ts","../src/tools/xml.ts","../src/excel/parse.ts","../src/excel/convert.ts","../src/excel/stats.ts","../src/tools/excel.ts","../src/image/resize.ts","../src/image/transform.ts","../src/image/convert.ts","../src/image/metadata.ts","../src/tools/image.ts","../src/markdown/convert.ts","../src/markdown/toc.ts","../src/markdown/extract.ts","../src/markdown/stats.ts","../src/tools/markdown.ts","../src/archive/create.ts","../src/archive/extract.ts","../src/archive/list.ts","../src/tools/archive.ts","../src/regex/utils.ts","../src/regex/test.ts","../src/regex/replace.ts","../src/regex/extract.ts","../src/regex/validate.ts","../src/tools/regex.ts","../src/diff/compare.ts","../src/diff/unified.ts","../src/diff/patch.ts","../src/tools/diff.ts","../src/sql/format.ts","../src/sql/parse.ts","../src/sql/convert.ts","../src/tools/sql.ts","../src/crypto/hash.ts","../src/crypto/encode.ts","../src/crypto/jwt.ts","../src/tools/crypto.ts","../src/datetime/parse.ts","../src/datetime/math.ts","../src/datetime/timezone.ts","../src/datetime/cron.ts","../src/tools/datetime.ts","../src/text/case.ts","../src/text/slug.ts","../src/text/stats.ts","../src/text/truncate.ts","../src/text/lorem.ts","../src/text/similarity.ts","../src/text/template.ts","../src/tools/text.ts","../src/math/convert.ts","../src/math/base.ts","../src/math/statistics.ts","../src/math/format.ts","../src/math/percentage.ts","../src/tools/math.ts","../src/color/parse.ts","../src/color/convert.ts","../src/color/contrast.ts","../src/color/palette.ts","../src/color/blend.ts","../src/color/name.ts","../src/tools/color.ts","../src/physics/constants.ts","../src/physics/kinematics.ts","../src/physics/mechanics.ts","../src/physics/electricity.ts","../src/physics/waves.ts","../src/physics/thermodynamics.ts","../src/physics/relativity.ts","../src/physics/units.ts","../src/tools/physics.ts","../src/structural/stress.ts","../src/structural/beams.ts","../src/structural/columns.ts","../src/structural/sections.ts","../src/structural/soils.ts","../src/structural/materials.ts","../src/tools/structural.ts","../src/tools/index.ts","../src/server.ts","../src/transports/http.ts","../src/transports/sse.ts","../src/cli.ts"],"names":["join","existsSync","readFile","mkdir","writeFile","now","Ajv","addFormats","ajv","JSONPath","jmespath","JSON5","yaml","TOML","parsed","jsonPatchCompare","parse","Papa","filter","getStats","toCSV","escapeCSVField","format","PDFDocument","degrees","result","StandardFonts","rgb","XMLParser","XMLBuilder","minify","validate","XMLValidator","query","convert","ExcelJS","buffer","sharp","rotate","compress","marked","TurndownService","PassThrough","archiver","AdmZip","extract","diffWords","diffChars","diffLines","createTwoFilesPatch","applyPatch","sqlFormat","Parser","parserDialectMap","createHash","createHmac","randomUUID","DateTime","diff","offset","getFactors","Server","ListToolsRequestSchema","CallToolRequestSchema","StdioServerTransport","express","Command"],"mappings":"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","file":"cli.js","sourcesContent":["import type { ToolCategory, ToolSettings } from './types';\n\nexport const ALL_TOOL_CATEGORIES: ToolCategory[] = [\n 'json',\n 'crypto',\n 'sql',\n 'regex',\n 'diff',\n 'csv',\n 'datetime',\n 'markdown',\n 'xml',\n 'pdf',\n 'excel',\n 'image',\n 'archive',\n 'text',\n 'math',\n 'color',\n 'physics',\n 'structural',\n];\n\nexport const TOOL_METADATA: { id: ToolCategory; name: string; description: string }[] = [\n { id: 'json', name: 'JSON Studio', description: 'Format, validate, query, convert, and diff JSON documents' },\n { id: 'crypto', name: 'Crypto & Encoding', description: 'Hash, encode, decode, and work with JWTs' },\n { id: 'sql', name: 'SQL Studio', description: 'Format, parse, and validate SQL queries' },\n { id: 'regex', name: 'Regex Tester', description: 'Test, replace, and extract with regular expressions' },\n { id: 'diff', name: 'Diff & Patch', description: 'Compare texts and apply unified diffs' },\n { id: 'csv', name: 'CSV Viewer', description: 'Parse, filter, convert, and analyze CSV data' },\n { id: 'datetime', name: 'Date/Time Tools', description: 'Parse, format, convert timezones, and analyze cron expressions' },\n { id: 'markdown', name: 'Markdown Studio', description: 'Convert, generate TOC, and analyze Markdown documents' },\n { id: 'xml', name: 'XML Studio', description: 'Parse, format, validate, and convert XML documents' },\n { id: 'pdf', name: 'PDF Toolkit', description: 'Merge, split, extract text, and generate PDFs' },\n { id: 'excel', name: 'Excel Viewer', description: 'Parse, convert, and analyze Excel workbooks' },\n { id: 'image', name: 'Image Toolkit', description: 'Resize, convert, and extract metadata from images' },\n { id: 'archive', name: 'Archive Manager', description: 'Create, extract, and list archive contents' },\n { id: 'text', name: 'Text Utilities', description: 'Case conversion, slugify, word count, similarity, and template interpolation' },\n { id: 'math', name: 'Math Utilities', description: 'Unit conversion, base conversion, statistics, and number formatting' },\n { id: 'color', name: 'Color Utilities', description: 'Color parsing, conversion, contrast checking, palette generation, and blending' },\n { id: 'physics', name: 'Physics Calculator', description: 'Constants, kinematics, mechanics, electricity, waves, thermodynamics, and relativity' },\n { id: 'structural', name: 'Structural Engineering', description: 'Stress analysis, beam design, column buckling, cross-sections, soil mechanics, and materials' },\n];\n\nexport const DEFAULT_SETTINGS: ToolSettings = {\n enabled: Object.fromEntries(ALL_TOOL_CATEGORIES.map((c) => [c, true])) as Record<ToolCategory, boolean>,\n version: 1,\n updatedAt: new Date().toISOString(),\n};\n","import { readFile, writeFile, mkdir } from 'fs/promises';\nimport { join } from 'path';\nimport { existsSync } from 'fs';\nimport type { ToolSettings, SettingsRepository, ToolCategory } from './types';\nimport { DEFAULT_SETTINGS, ALL_TOOL_CATEGORIES } from './defaults';\n\nexport class FilesystemSettingsRepository implements SettingsRepository {\n private readonly filePath: string;\n\n constructor(dataDir?: string) {\n const dir = dataDir ?? join(process.cwd(), 'data');\n this.filePath = join(dir, 'settings.json');\n }\n\n getDefaults(): ToolSettings {\n return {\n ...DEFAULT_SETTINGS,\n enabled: { ...DEFAULT_SETTINGS.enabled },\n updatedAt: new Date().toISOString(),\n };\n }\n\n async load(): Promise<ToolSettings> {\n try {\n if (!existsSync(this.filePath)) {\n const defaults = this.getDefaults();\n await this.save(defaults);\n return defaults;\n }\n\n const raw = await readFile(this.filePath, 'utf-8');\n const data = JSON.parse(raw) as Partial<ToolSettings>;\n\n // Merge with defaults to handle newly added tools\n const merged: ToolSettings = {\n version: data.version ?? DEFAULT_SETTINGS.version,\n updatedAt: data.updatedAt ?? new Date().toISOString(),\n enabled: { ...DEFAULT_SETTINGS.enabled },\n };\n\n if (data.enabled) {\n for (const category of ALL_TOOL_CATEGORIES) {\n if (category in data.enabled) {\n merged.enabled[category] = data.enabled[category as ToolCategory]!;\n }\n }\n }\n\n return merged;\n } catch {\n return this.getDefaults();\n }\n }\n\n async save(settings: ToolSettings): Promise<void> {\n const dir = join(this.filePath, '..');\n if (!existsSync(dir)) {\n await mkdir(dir, { recursive: true });\n }\n await writeFile(this.filePath, JSON.stringify(settings, null, 2), 'utf-8');\n }\n}\n","import type { ToolCategory, ToolSettings, SettingsRepository } from './types';\nimport { FilesystemSettingsRepository } from './filesystem-repository';\n\nconst CACHE_TTL_MS = 5_000;\n\nexport class SettingsService {\n private cache: ToolSettings | null = null;\n private cacheTimestamp = 0;\n private readonly repository: SettingsRepository;\n\n constructor(repository?: SettingsRepository) {\n this.repository = repository ?? new FilesystemSettingsRepository();\n }\n\n async getSettings(): Promise<ToolSettings> {\n const now = Date.now();\n if (this.cache && now - this.cacheTimestamp < CACHE_TTL_MS) {\n return this.cache;\n }\n\n const settings = await this.repository.load();\n this.cache = settings;\n this.cacheTimestamp = now;\n return settings;\n }\n\n async updateSettings(enabled: Partial<Record<ToolCategory, boolean>>): Promise<ToolSettings> {\n const current = await this.repository.load();\n const updated: ToolSettings = {\n ...current,\n enabled: { ...current.enabled, ...enabled },\n updatedAt: new Date().toISOString(),\n };\n await this.repository.save(updated);\n this.cache = updated;\n this.cacheTimestamp = Date.now();\n return updated;\n }\n\n async isToolEnabled(category: ToolCategory): Promise<boolean> {\n const settings = await this.getSettings();\n return settings.enabled[category] ?? true;\n }\n\n invalidateCache(): void {\n this.cache = null;\n this.cacheTimestamp = 0;\n }\n}\n\nexport const settingsService = new SettingsService();\n","import type { FormatOptions, IndentOption } from './types';\n\nfunction getIndentString(indent: IndentOption): string | number {\n if (indent === 'tab') return '\\t';\n return indent;\n}\n\nfunction sortObjectKeys(obj: unknown): unknown {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(sortObjectKeys);\n }\n\n const sorted: Record<string, unknown> = {};\n const keys = Object.keys(obj as Record<string, unknown>).sort();\n\n for (const key of keys) {\n sorted[key] = sortObjectKeys((obj as Record<string, unknown>)[key]);\n }\n\n return sorted;\n}\n\nexport function format(input: string, options: FormatOptions = {}): string {\n const { indent = 2, sortKeys = false } = options;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch (error) {\n throw new Error(`Invalid JSON: ${(error as Error).message}`);\n }\n\n if (sortKeys) {\n parsed = sortObjectKeys(parsed);\n }\n\n const indentValue = getIndentString(indent);\n return JSON.stringify(parsed, null, indentValue);\n}\n\nexport function minify(input: string): string {\n const parsed = JSON.parse(input);\n return JSON.stringify(parsed);\n}\n\nexport function parse(input: string): unknown {\n return JSON.parse(input);\n}\n\nexport function stringify(value: unknown, options: FormatOptions = {}): string {\n const { indent = 2, sortKeys = false } = options;\n\n let data = value;\n if (sortKeys) {\n data = sortObjectKeys(value);\n }\n\n const indentValue = getIndentString(indent);\n return JSON.stringify(data, null, indentValue);\n}\n","import Ajv from 'ajv';\nimport addFormats from 'ajv-formats';\nimport type { ValidationResult, ValidationError } from './types';\n\nconst ajv = new Ajv({ allErrors: true, verbose: true });\naddFormats(ajv);\n\nexport function validate(input: string, schema?: string): ValidationResult {\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch (error) {\n return {\n valid: false,\n errors: [\n {\n path: '',\n message: `Invalid JSON: ${(error as Error).message}`,\n keyword: 'parse',\n },\n ],\n };\n }\n\n if (!schema) {\n return { valid: true };\n }\n\n let schemaObj: object;\n try {\n schemaObj = JSON.parse(schema);\n } catch (error) {\n return {\n valid: false,\n errors: [\n {\n path: '',\n message: `Invalid schema: ${(error as Error).message}`,\n keyword: 'schema',\n },\n ],\n };\n }\n\n const validateFn = ajv.compile(schemaObj);\n const valid = validateFn(parsed);\n\n if (valid) {\n return { valid: true };\n }\n\n const errors: ValidationError[] = (validateFn.errors || []).map((err) => ({\n path: err.instancePath || '/',\n message: err.message || 'Unknown validation error',\n keyword: err.keyword,\n }));\n\n return { valid: false, errors };\n}\n\nexport function isValidJson(input: string): boolean {\n try {\n JSON.parse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import Ajv from 'ajv';\nimport addFormats from 'ajv-formats';\nimport type { DetailedValidationError, SchemaCoverage, SchemaValidationSummary } from './types';\n\nconst ajv = new Ajv({ allErrors: true, verbose: true });\naddFormats(ajv);\n\nfunction countSchemaProperties(schema: Record<string, unknown>): {\n totalProperties: number;\n requiredFields: string[];\n} {\n const props = schema.properties as Record<string, unknown> | undefined;\n const totalProperties = props ? Object.keys(props).length : 0;\n const requiredFields = (schema.required as string[]) || [];\n return { totalProperties, requiredFields };\n}\n\nfunction buildSuggestion(err: { keyword: string; instancePath: string; params?: Record<string, unknown>; schema?: unknown; data?: unknown }): string {\n const path = err.instancePath || '/';\n switch (err.keyword) {\n case 'type':\n return `Change value at '${path}' from ${typeof err.data} to ${err.schema}`;\n case 'required':\n return `Add missing required field '${(err.params as { missingProperty?: string })?.missingProperty}'`;\n case 'enum':\n return `Change value at '${path}' to one of: ${(err.schema as unknown[])?.join(', ')}`;\n case 'minimum':\n return `Adjust value at '${path}' to be >= ${err.schema}`;\n case 'maximum':\n return `Adjust value at '${path}' to be <= ${err.schema}`;\n case 'pattern':\n return `Change value at '${path}' to match pattern: ${err.schema}`;\n case 'additionalProperties':\n return `Remove unexpected property '${(err.params as { additionalProperty?: string })?.additionalProperty}'`;\n case 'minLength':\n return `Value at '${path}' must have at least ${err.schema} character(s)`;\n case 'maxLength':\n return `Value at '${path}' must have at most ${err.schema} character(s)`;\n case 'minItems':\n return `Array at '${path}' must have at least ${err.schema} item(s)`;\n case 'maxItems':\n return `Array at '${path}' must have at most ${err.schema} item(s)`;\n case 'format':\n return `Value at '${path}' must be a valid ${err.params?.format ?? err.schema}`;\n default:\n return `Fix value at '${path}': ${err.keyword}`;\n }\n}\n\nexport function validateWithSummary(input: string, schema: string): SchemaValidationSummary {\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch (error) {\n return {\n valid: false,\n summary: `Invalid JSON input: ${(error as Error).message}`,\n errorCount: 1,\n errors: [{\n path: '',\n message: `Invalid JSON: ${(error as Error).message}`,\n keyword: 'parse',\n suggestion: 'Fix JSON syntax errors before validating against a schema',\n }],\n coverage: { totalProperties: 0, validProperties: 0, missingRequired: [], extraProperties: [] },\n suggestions: ['Fix JSON syntax errors before validating against a schema'],\n };\n }\n\n let schemaObj: Record<string, unknown>;\n try {\n schemaObj = JSON.parse(schema);\n } catch (error) {\n return {\n valid: false,\n summary: `Invalid JSON Schema: ${(error as Error).message}`,\n errorCount: 1,\n errors: [{\n path: '',\n message: `Invalid schema: ${(error as Error).message}`,\n keyword: 'schema',\n suggestion: 'Fix the JSON Schema syntax before validating',\n }],\n coverage: { totalProperties: 0, validProperties: 0, missingRequired: [], extraProperties: [] },\n suggestions: ['Fix the JSON Schema syntax before validating'],\n };\n }\n\n const { totalProperties } = countSchemaProperties(schemaObj);\n const validateFn = ajv.compile(schemaObj);\n const valid = validateFn(parsed);\n\n if (valid) {\n return {\n valid: true,\n summary: `Validation passed. All ${totalProperties} schema properties satisfied (100%).`,\n errorCount: 0,\n errors: [],\n coverage: {\n totalProperties,\n validProperties: totalProperties,\n missingRequired: [],\n extraProperties: [],\n },\n suggestions: [],\n };\n }\n\n const ajvErrors = validateFn.errors || [];\n\n const missingRequired: string[] = [];\n const extraProperties: string[] = [];\n const errors: DetailedValidationError[] = ajvErrors.map((err) => {\n if (err.keyword === 'required') {\n const field = (err.params as { missingProperty?: string })?.missingProperty;\n if (field) missingRequired.push(field);\n }\n if (err.keyword === 'additionalProperties') {\n const prop = (err.params as { additionalProperty?: string })?.additionalProperty;\n if (prop) extraProperties.push(prop);\n }\n\n return {\n path: err.instancePath || '/',\n message: err.message || 'Unknown validation error',\n keyword: err.keyword,\n expected: err.schema,\n received: err.data,\n suggestion: buildSuggestion({\n keyword: err.keyword,\n instancePath: err.instancePath,\n params: err.params as Record<string, unknown>,\n schema: err.schema,\n data: err.data,\n }),\n };\n });\n\n const propertyErrorCount = new Set(\n ajvErrors\n .filter((e) => e.keyword !== 'required' && e.keyword !== 'additionalProperties')\n .map((e) => e.instancePath)\n ).size;\n const validProperties = Math.max(0, totalProperties - missingRequired.length - propertyErrorCount);\n\n const coverage: SchemaCoverage = {\n totalProperties,\n validProperties,\n missingRequired,\n extraProperties,\n };\n\n const pct = totalProperties > 0 ? Math.round((validProperties / totalProperties) * 100) : 0;\n const parts: string[] = [\n `Validation failed with ${errors.length} error(s).`,\n ];\n if (totalProperties > 0) {\n parts.push(`${validProperties} of ${totalProperties} schema properties satisfied (${pct}%).`);\n }\n if (missingRequired.length > 0) {\n parts.push(`Missing required: ${missingRequired.join(', ')}.`);\n }\n if (extraProperties.length > 0) {\n parts.push(`Unexpected properties: ${extraProperties.join(', ')}.`);\n }\n\n const suggestions = [...new Set(errors.map((e) => e.suggestion))];\n\n return {\n valid: false,\n summary: parts.join(' '),\n errorCount: errors.length,\n errors,\n coverage,\n suggestions,\n };\n}\n","import { JSONPath } from 'jsonpath-plus';\nimport jmespath from 'jmespath';\nimport type { QueryDialect, QueryOptions } from './types';\n\nexport function query(\n input: string,\n path: string,\n options: QueryOptions = {}\n): unknown {\n const { dialect = 'jsonpath' } = options;\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch (error) {\n throw new Error(`Invalid JSON: ${(error as Error).message}`);\n }\n\n return queryValue(parsed, path, dialect);\n}\n\nexport function queryValue(\n data: unknown,\n path: string,\n dialect: QueryDialect = 'jsonpath'\n): unknown {\n if (dialect === 'jsonpath') {\n return JSONPath({ path, json: data as object, wrap: false });\n }\n\n if (dialect === 'jmespath') {\n return jmespath.search(data, path);\n }\n\n throw new Error(`Unknown query dialect: ${dialect}`);\n}\n\nexport function queryMultiple(\n input: string,\n paths: string[],\n dialect: QueryDialect = 'jsonpath'\n): Record<string, unknown> {\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch (error) {\n throw new Error(`Invalid JSON: ${(error as Error).message}`);\n }\n\n const results: Record<string, unknown> = {};\n for (const path of paths) {\n results[path] = queryValue(parsed, path, dialect);\n }\n\n return results;\n}\n","import JSON5 from 'json5';\nimport yaml from 'js-yaml';\nimport * as TOML from 'smol-toml';\nimport type { ConvertFormat, ConvertOptions, IndentOption } from './types';\n\nfunction getIndent(indent: IndentOption = 2): number {\n if (indent === 'tab') return 2;\n return indent;\n}\n\nfunction parseInput(input: string, from: ConvertFormat): unknown {\n switch (from) {\n case 'json':\n return JSON.parse(input);\n case 'json5':\n case 'jsonc':\n return JSON5.parse(input);\n case 'yaml':\n return yaml.load(input);\n case 'toml':\n return TOML.parse(input);\n default:\n throw new Error(`Unsupported input format: ${from}`);\n }\n}\n\nfunction stringifyOutput(\n data: unknown,\n to: ConvertFormat,\n indent: IndentOption = 2\n): string {\n const indentNum = getIndent(indent);\n\n switch (to) {\n case 'json':\n return JSON.stringify(data, null, indentNum);\n case 'json5':\n case 'jsonc':\n return JSON5.stringify(data, null, indentNum);\n case 'yaml':\n return yaml.dump(data, { indent: indentNum, lineWidth: -1 });\n case 'toml':\n if (typeof data !== 'object' || data === null || Array.isArray(data)) {\n throw new Error('TOML requires a root object');\n }\n return TOML.stringify(data as Record<string, unknown>);\n default:\n throw new Error(`Unsupported output format: ${to}`);\n }\n}\n\nexport function convert(input: string, options: ConvertOptions): string {\n const { from, to, indent = 2 } = options;\n\n if (from === to) {\n const parsed = parseInput(input, from);\n return stringifyOutput(parsed, to, indent);\n }\n\n const parsed = parseInput(input, from);\n return stringifyOutput(parsed, to, indent);\n}\n\nexport function toJson(input: string, from: ConvertFormat): string {\n return convert(input, { from, to: 'json' });\n}\n\nexport function fromJson(input: string, to: ConvertFormat): string {\n return convert(input, { from: 'json', to });\n}\n\nexport function detectFormat(input: string): ConvertFormat | null {\n const trimmed = input.trim();\n\n if (trimmed.startsWith('{') || trimmed.startsWith('[')) {\n try {\n JSON.parse(trimmed);\n return 'json';\n } catch {\n try {\n JSON5.parse(trimmed);\n return 'json5';\n } catch {\n return null;\n }\n }\n }\n\n if (trimmed.includes(':') && !trimmed.includes('=')) {\n try {\n yaml.load(trimmed);\n return 'yaml';\n } catch {\n return null;\n }\n }\n\n if (trimmed.includes('=') && (trimmed.includes('[') || trimmed.includes('\"'))) {\n try {\n TOML.parse(trimmed);\n return 'toml';\n } catch {\n return null;\n }\n }\n\n return null;\n}\n","import { compare as jsonPatchCompare } from 'fast-json-patch';\nimport type { DiffResult, DiffOperation } from './types';\n\nexport function diff(a: string, b: string): DiffResult {\n let parsedA: unknown;\n let parsedB: unknown;\n\n try {\n parsedA = JSON.parse(a);\n } catch (error) {\n throw new Error(`Invalid JSON (first argument): ${(error as Error).message}`);\n }\n\n try {\n parsedB = JSON.parse(b);\n } catch (error) {\n throw new Error(`Invalid JSON (second argument): ${(error as Error).message}`);\n }\n\n return diffValues(parsedA, parsedB);\n}\n\nexport function diffValues(a: unknown, b: unknown): DiffResult {\n const operations = jsonPatchCompare(\n a as object,\n b as object\n ) as DiffOperation[];\n\n const summary = {\n added: 0,\n removed: 0,\n changed: 0,\n };\n\n for (const op of operations) {\n switch (op.op) {\n case 'add':\n summary.added++;\n break;\n case 'remove':\n summary.removed++;\n break;\n case 'replace':\n summary.changed++;\n break;\n }\n }\n\n return {\n identical: operations.length === 0,\n operations,\n summary,\n };\n}\n\nexport function applyPatch(\n input: string,\n operations: DiffOperation[]\n): string {\n const parsed = JSON.parse(input);\n\n for (const op of operations) {\n applyOperation(parsed, op);\n }\n\n return JSON.stringify(parsed, null, 2);\n}\n\nfunction applyOperation(obj: unknown, operation: DiffOperation): void {\n const pathParts = operation.path.split('/').filter(Boolean);\n\n if (pathParts.length === 0) {\n throw new Error('Cannot apply operation to root');\n }\n\n const parent = getParent(obj, pathParts);\n const key = pathParts[pathParts.length - 1];\n\n switch (operation.op) {\n case 'add':\n case 'replace':\n if (Array.isArray(parent)) {\n const index = parseInt(key, 10);\n if (operation.op === 'add') {\n parent.splice(index, 0, operation.value);\n } else {\n parent[index] = operation.value;\n }\n } else if (typeof parent === 'object' && parent !== null) {\n (parent as Record<string, unknown>)[key] = operation.value;\n }\n break;\n case 'remove':\n if (Array.isArray(parent)) {\n parent.splice(parseInt(key, 10), 1);\n } else if (typeof parent === 'object' && parent !== null) {\n delete (parent as Record<string, unknown>)[key];\n }\n break;\n }\n}\n\nfunction getParent(obj: unknown, pathParts: string[]): unknown {\n let current = obj;\n\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n if (Array.isArray(current)) {\n current = current[parseInt(part, 10)];\n } else if (typeof current === 'object' && current !== null) {\n current = (current as Record<string, unknown>)[part];\n }\n }\n\n return current;\n}\n","import type { JsonStats } from './types';\n\nexport function getStats(input: string): JsonStats {\n const parsed = JSON.parse(input);\n\n const stats: JsonStats = {\n keys: 0,\n depth: 0,\n arrays: 0,\n objects: 0,\n strings: 0,\n numbers: 0,\n booleans: 0,\n nulls: 0,\n sizeBytes: new TextEncoder().encode(input).length,\n };\n\n analyzeValue(parsed, stats, 0);\n\n return stats;\n}\n\nfunction analyzeValue(value: unknown, stats: JsonStats, depth: number): void {\n stats.depth = Math.max(stats.depth, depth);\n\n if (value === null) {\n stats.nulls++;\n return;\n }\n\n switch (typeof value) {\n case 'string':\n stats.strings++;\n break;\n case 'number':\n stats.numbers++;\n break;\n case 'boolean':\n stats.booleans++;\n break;\n case 'object':\n if (Array.isArray(value)) {\n stats.arrays++;\n for (const item of value) {\n analyzeValue(item, stats, depth + 1);\n }\n } else {\n stats.objects++;\n const keys = Object.keys(value as object);\n stats.keys += keys.length;\n for (const key of keys) {\n analyzeValue((value as Record<string, unknown>)[key], stats, depth + 1);\n }\n }\n break;\n }\n}\n\nexport function getSizeInfo(input: string): {\n bytes: number;\n formatted: string;\n minifiedBytes: number;\n savings: number;\n} {\n const bytes = new TextEncoder().encode(input).length;\n const minified = JSON.stringify(JSON.parse(input));\n const minifiedBytes = new TextEncoder().encode(minified).length;\n\n return {\n bytes,\n formatted: formatBytes(bytes),\n minifiedBytes,\n savings: bytes - minifiedBytes,\n };\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;\n}\n","import * as json from '../json';\n\nexport const jsonTools = [\n {\n name: 'agent_tools_json_format',\n description:\n 'Format JSON with configurable indentation. Returns pretty-printed JSON.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to format',\n },\n indent: {\n type: 'number',\n enum: [2, 4],\n description: 'Number of spaces for indentation (default: 2)',\n },\n sortKeys: {\n type: 'boolean',\n description: 'Sort object keys alphabetically (default: false)',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string; indent?: number; sortKeys?: boolean }) => {\n try {\n const result = json.format(args.input, {\n indent: (args.indent || 2) as 2 | 4,\n sortKeys: args.sortKeys || false,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_json_validate',\n description:\n 'Validate JSON, optionally against a JSON Schema. Returns validation result with errors.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to validate',\n },\n schema: {\n type: 'string',\n description: 'Optional JSON Schema to validate against',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string; schema?: string }) => {\n const result = json.validate(args.input, args.schema);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_json_query',\n description:\n 'Query JSON using JSONPath or JMESPath. Returns the matched values.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to query',\n },\n path: {\n type: 'string',\n description: 'The query path (e.g., \"$.store.book[*].author\")',\n },\n dialect: {\n type: 'string',\n enum: ['jsonpath', 'jmespath'],\n description: 'Query dialect (default: jsonpath)',\n },\n },\n required: ['input', 'path'],\n },\n handler: async (args: { input: string; path: string; dialect?: string }) => {\n const result = json.query(args.input, args.path, {\n dialect: (args.dialect as 'jsonpath' | 'jmespath') || 'jsonpath',\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_json_convert',\n description:\n 'Convert between JSON, JSON5, JSONC, YAML, and TOML formats.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The input string to convert',\n },\n from: {\n type: 'string',\n enum: ['json', 'json5', 'jsonc', 'yaml', 'toml'],\n description: 'Source format',\n },\n to: {\n type: 'string',\n enum: ['json', 'json5', 'jsonc', 'yaml', 'toml'],\n description: 'Target format',\n },\n },\n required: ['input', 'from', 'to'],\n },\n handler: async (args: { input: string; from: string; to: string }) => {\n const result = json.convert(args.input, {\n from: args.from as json.ConvertFormat,\n to: args.to as json.ConvertFormat,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_json_diff',\n description:\n 'Compare two JSON documents and return the differences as JSON Patch operations.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n a: {\n type: 'string',\n description: 'First JSON document',\n },\n b: {\n type: 'string',\n description: 'Second JSON document',\n },\n },\n required: ['a', 'b'],\n },\n handler: async (args: { a: string; b: string }) => {\n const result = json.diff(args.a, args.b);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_json_minify',\n description: 'Minify JSON by removing all whitespace.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to minify',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n const result = json.minify(args.input);\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_json_stats',\n description:\n 'Get statistics about a JSON document (key count, depth, types, size).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to analyze',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n const result = json.getStats(args.input);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_json_schema_validate',\n description:\n 'Validate JSON against a schema with detailed error analysis, coverage stats, and actionable fix suggestions. Returns a comprehensive summary suitable for LLM consumption.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The JSON string to validate',\n },\n schema: {\n type: 'string',\n description: 'The JSON Schema to validate against',\n },\n },\n required: ['input', 'schema'],\n },\n handler: async (args: { input: string; schema: string }) => {\n const result = json.validateWithSummary(args.input, args.schema);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import Papa from 'papaparse';\nimport type { ParseOptions, ParseResult, ParseError } from './types';\n\nexport function parse(input: string, options: ParseOptions = {}): ParseResult {\n const {\n delimiter = ',',\n header = true,\n skipRows = 0,\n trimFields = true,\n dynamicTyping = true,\n } = options;\n\n let processedInput = input;\n if (skipRows > 0) {\n const lines = input.split('\\n');\n processedInput = lines.slice(skipRows).join('\\n');\n }\n\n const result = Papa.parse(processedInput, {\n delimiter,\n header,\n skipEmptyLines: true,\n transformHeader: trimFields ? (h) => h.trim() : undefined,\n transform: trimFields ? (v) => v.trim() : undefined,\n dynamicTyping,\n });\n\n const errors: ParseError[] = result.errors.map((e) => ({\n row: e.row ?? -1,\n message: e.message,\n }));\n\n const headers = header\n ? (result.meta.fields || [])\n : Array.from({ length: (result.data[0] as unknown[])?.length || 0 }, (_, i) => `col_${i}`);\n\n const data = header\n ? (result.data as Record<string, unknown>[])\n : (result.data as unknown[][]).map((row) => {\n const obj: Record<string, unknown> = {};\n headers.forEach((h, i) => {\n obj[h] = row[i];\n });\n return obj;\n });\n\n return {\n data,\n headers,\n rowCount: data.length,\n errors,\n };\n}\n\nexport function parseToArray(input: string, options: ParseOptions = {}): unknown[][] {\n const result = parse(input, { ...options, header: false });\n return result.data.map((row) => Object.values(row));\n}\n\nexport function detectDelimiter(input: string): string {\n const delimiters = [',', '\\t', ';', '|'];\n const firstLine = input.split('\\n')[0];\n\n let maxCount = 0;\n let detected = ',';\n\n for (const d of delimiters) {\n const count = (firstLine.match(new RegExp(`\\\\${d}`, 'g')) || []).length;\n if (count > maxCount) {\n maxCount = count;\n detected = d;\n }\n }\n\n return detected;\n}\n\nexport function getHeaders(input: string, delimiter?: string): string[] {\n const d = delimiter || detectDelimiter(input);\n const firstLine = input.split('\\n')[0];\n return Papa.parse(firstLine, { delimiter: d }).data[0] as string[];\n}\n","import type { Filter, FilterOperator } from './types';\nimport { parse } from './parse';\n\nexport function filter(input: string, filters: Filter[]): string {\n const result = parse(input);\n const filteredData = filterData(result.data, filters);\n return toCSV(filteredData, result.headers);\n}\n\nexport function filterData(\n data: Record<string, unknown>[],\n filters: Filter[]\n): Record<string, unknown>[] {\n return data.filter((row) => {\n return filters.every((f) => matchesFilter(row, f));\n });\n}\n\nfunction matchesFilter(row: Record<string, unknown>, filter: Filter): boolean {\n const value = row[filter.column];\n const filterValue = filter.value;\n\n switch (filter.operator) {\n case 'eq':\n return value === filterValue;\n case 'neq':\n return value !== filterValue;\n case 'gt':\n return Number(value) > Number(filterValue);\n case 'gte':\n return Number(value) >= Number(filterValue);\n case 'lt':\n return Number(value) < Number(filterValue);\n case 'lte':\n return Number(value) <= Number(filterValue);\n case 'contains':\n return String(value).toLowerCase().includes(String(filterValue).toLowerCase());\n case 'startsWith':\n return String(value).toLowerCase().startsWith(String(filterValue).toLowerCase());\n case 'endsWith':\n return String(value).toLowerCase().endsWith(String(filterValue).toLowerCase());\n case 'matches':\n return new RegExp(String(filterValue), 'i').test(String(value));\n case 'isNull':\n return value === null || value === undefined || value === '';\n case 'isNotNull':\n return value !== null && value !== undefined && value !== '';\n default:\n return true;\n }\n}\n\nfunction toCSV(data: Record<string, unknown>[], headers: string[]): string {\n const headerRow = headers.map(escapeCSVField).join(',');\n const dataRows = data.map((row) =>\n headers.map((h) => escapeCSVField(row[h])).join(',')\n );\n return [headerRow, ...dataRows].join('\\n');\n}\n\nfunction escapeCSVField(value: unknown): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n if (str.includes(',') || str.includes('\"') || str.includes('\\n')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\n\nexport function filterByColumn(\n input: string,\n column: string,\n operator: FilterOperator,\n value?: unknown\n): string {\n return filter(input, [{ column, operator, value }]);\n}\n","import type { ColumnStats, ParseResult } from './types';\nimport { parse } from './parse';\n\nexport function getStats(input: string): ColumnStats[] {\n const result = parse(input);\n return getStatsFromData(result);\n}\n\nexport function getStatsFromData(result: ParseResult): ColumnStats[] {\n const { data, headers } = result;\n\n return headers.map((header) => {\n const values = data.map((row) => row[header]);\n return analyzeColumn(header, values);\n });\n}\n\nfunction analyzeColumn(name: string, values: unknown[]): ColumnStats {\n const nonNullValues = values.filter(\n (v) => v !== null && v !== undefined && v !== ''\n );\n\n const nullCount = values.length - nonNullValues.length;\n const type = detectType(nonNullValues);\n\n const stats: ColumnStats = {\n name,\n type,\n count: values.length,\n nullCount,\n uniqueCount: new Set(nonNullValues.map(String)).size,\n };\n\n if (type === 'number') {\n const numbers = nonNullValues.map(Number).filter((n) => !isNaN(n));\n if (numbers.length > 0) {\n stats.min = Math.min(...numbers);\n stats.max = Math.max(...numbers);\n stats.sum = numbers.reduce((a, b) => a + b, 0);\n stats.mean = stats.sum / numbers.length;\n }\n } else if (type === 'string' || type === 'date') {\n const sorted = [...nonNullValues].map(String).sort();\n if (sorted.length > 0) {\n stats.min = sorted[0];\n stats.max = sorted[sorted.length - 1];\n }\n }\n\n stats.topValues = getTopValues(nonNullValues, 5);\n\n return stats;\n}\n\nfunction detectType(\n values: unknown[]\n): 'string' | 'number' | 'boolean' | 'date' | 'mixed' | 'empty' {\n if (values.length === 0) return 'empty';\n\n const types = new Set<string>();\n\n for (const value of values) {\n if (typeof value === 'number' || !isNaN(Number(value))) {\n types.add('number');\n } else if (typeof value === 'boolean' || value === 'true' || value === 'false') {\n types.add('boolean');\n } else if (isDateLike(String(value))) {\n types.add('date');\n } else {\n types.add('string');\n }\n }\n\n if (types.size === 1) {\n return types.values().next().value as 'string' | 'number' | 'boolean' | 'date';\n }\n\n if (types.size === 2 && types.has('number') && types.has('string')) {\n const numberRatio =\n values.filter((v) => !isNaN(Number(v))).length / values.length;\n if (numberRatio > 0.9) return 'number';\n }\n\n return 'mixed';\n}\n\nfunction isDateLike(value: string): boolean {\n const datePatterns = [\n /^\\d{4}-\\d{2}-\\d{2}$/,\n /^\\d{2}\\/\\d{2}\\/\\d{4}$/,\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/,\n ];\n return datePatterns.some((p) => p.test(value));\n}\n\nfunction getTopValues(\n values: unknown[],\n limit: number\n): { value: unknown; count: number }[] {\n const counts = new Map<string, { value: unknown; count: number }>();\n\n for (const value of values) {\n const key = String(value);\n const existing = counts.get(key);\n if (existing) {\n existing.count++;\n } else {\n counts.set(key, { value, count: 1 });\n }\n }\n\n return [...counts.values()]\n .sort((a, b) => b.count - a.count)\n .slice(0, limit);\n}\n\nexport function getColumnStats(input: string, column: string): ColumnStats | null {\n const stats = getStats(input);\n return stats.find((s) => s.name === column) || null;\n}\n","import type { TransformOptions, ParseResult } from './types';\nimport { parse } from './parse';\n\nexport function transform(input: string, options: TransformOptions): string {\n const result = parse(input);\n const transformed = transformData(result, options);\n return toCSV(transformed.data, transformed.headers);\n}\n\nexport function transformData(\n result: ParseResult,\n options: TransformOptions\n): ParseResult {\n let { data, headers } = result;\n\n if (options.select) {\n headers = options.select.filter((h) => headers.includes(h));\n }\n\n if (options.exclude) {\n headers = headers.filter((h) => !options.exclude!.includes(h));\n }\n\n if (options.rename) {\n headers = headers.map((h) => options.rename![h] || h);\n }\n\n data = data.map((row) => {\n const newRow: Record<string, unknown> = {};\n\n for (const header of result.headers) {\n if (options.select && !options.select.includes(header)) continue;\n if (options.exclude && options.exclude.includes(header)) continue;\n\n const newKey = options.rename?.[header] || header;\n newRow[newKey] = row[header];\n }\n\n if (options.derive) {\n for (const [key, fn] of Object.entries(options.derive)) {\n newRow[key] = fn(row);\n }\n }\n\n return newRow;\n });\n\n if (options.derive) {\n headers = [...headers, ...Object.keys(options.derive)];\n }\n\n return { data, headers, rowCount: data.length, errors: [] };\n}\n\nfunction toCSV(data: Record<string, unknown>[], headers: string[]): string {\n const headerRow = headers.map(escapeCSVField).join(',');\n const dataRows = data.map((row) =>\n headers.map((h) => escapeCSVField(row[h])).join(',')\n );\n return [headerRow, ...dataRows].join('\\n');\n}\n\nfunction escapeCSVField(value: unknown): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n if (str.includes(',') || str.includes('\"') || str.includes('\\n')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n}\n\nexport function sortData(\n data: Record<string, unknown>[],\n column: string,\n direction: 'asc' | 'desc' = 'asc'\n): Record<string, unknown>[] {\n return [...data].sort((a, b) => {\n const aVal = a[column];\n const bVal = b[column];\n\n if (aVal === bVal) return 0;\n if (aVal === null || aVal === undefined) return 1;\n if (bVal === null || bVal === undefined) return -1;\n\n const comparison =\n typeof aVal === 'number' && typeof bVal === 'number'\n ? aVal - bVal\n : String(aVal).localeCompare(String(bVal));\n\n return direction === 'asc' ? comparison : -comparison;\n });\n}\n","import type { ExportOptions, ParseResult } from './types';\nimport { parse } from './parse';\n\nexport function exportData(input: string, options: ExportOptions): string {\n const result = parse(input);\n return exportFromData(result, options);\n}\n\nexport function exportFromData(result: ParseResult, options: ExportOptions): string {\n const { format, headers = true, delimiter } = options;\n\n switch (format) {\n case 'csv':\n return toCSV(result.data, result.headers, delimiter || ',', headers);\n case 'tsv':\n return toCSV(result.data, result.headers, '\\t', headers);\n case 'json':\n return JSON.stringify(result.data, null, 2);\n case 'jsonl':\n return result.data.map((row) => JSON.stringify(row)).join('\\n');\n default:\n throw new Error(`Unsupported export format: ${format}`);\n }\n}\n\nfunction toCSV(\n data: Record<string, unknown>[],\n headers: string[],\n delimiter: string,\n includeHeaders: boolean\n): string {\n const lines: string[] = [];\n\n if (includeHeaders) {\n lines.push(headers.map((h) => escapeField(h, delimiter)).join(delimiter));\n }\n\n for (const row of data) {\n lines.push(\n headers.map((h) => escapeField(row[h], delimiter)).join(delimiter)\n );\n }\n\n return lines.join('\\n');\n}\n\nfunction escapeField(value: unknown, delimiter: string): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n const str = String(value);\n const needsQuoting =\n str.includes(delimiter) || str.includes('\"') || str.includes('\\n');\n\n if (needsQuoting) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n\n return str;\n}\n\nexport function toJson(input: string, pretty = true): string {\n const result = parse(input);\n return pretty\n ? JSON.stringify(result.data, null, 2)\n : JSON.stringify(result.data);\n}\n\nexport function toJsonLines(input: string): string {\n const result = parse(input);\n return result.data.map((row) => JSON.stringify(row)).join('\\n');\n}\n\nexport function toArray(input: string): Record<string, unknown>[] {\n const result = parse(input);\n return result.data;\n}\n","import * as csv from '../csv';\n\nexport const csvTools = [\n {\n name: 'agent_tools_csv_parse',\n description:\n 'Parse CSV data into structured JSON. Auto-detects delimiter if not specified.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to parse',\n },\n delimiter: {\n type: 'string',\n description: 'Field delimiter (auto-detected if not specified)',\n },\n header: {\n type: 'boolean',\n description: 'First row contains headers (default: true)',\n },\n skipRows: {\n type: 'number',\n description: 'Number of rows to skip at the beginning',\n },\n },\n required: ['input'],\n },\n handler: async (args: {\n input: string;\n delimiter?: string;\n header?: boolean;\n skipRows?: number;\n }) => {\n const result = csv.parse(args.input, {\n delimiter: args.delimiter,\n header: args.header ?? true,\n skipRows: args.skipRows,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_csv_to_json',\n description: 'Convert CSV to JSON array.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to convert',\n },\n pretty: {\n type: 'boolean',\n description: 'Pretty-print output (default: true)',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string; pretty?: boolean }) => {\n const result = csv.toJson(args.input, args.pretty ?? true);\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_csv_filter',\n description: 'Filter CSV rows based on column conditions.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to filter',\n },\n filters: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n column: { type: 'string' },\n operator: {\n type: 'string',\n enum: [\n 'eq',\n 'neq',\n 'gt',\n 'gte',\n 'lt',\n 'lte',\n 'contains',\n 'startsWith',\n 'endsWith',\n 'matches',\n 'isNull',\n 'isNotNull',\n ],\n },\n value: {},\n },\n required: ['column', 'operator'],\n },\n description: 'Array of filter conditions',\n },\n },\n required: ['input', 'filters'],\n },\n handler: async (args: { input: string; filters: csv.Filter[] }) => {\n const result = csv.filter(args.input, args.filters);\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_csv_stats',\n description:\n 'Get column statistics for CSV data (types, counts, min/max, top values).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to analyze',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n const result = csv.getStats(args.input);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_csv_transform',\n description:\n 'Transform CSV by selecting, renaming, or excluding columns.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to transform',\n },\n select: {\n type: 'array',\n items: { type: 'string' },\n description: 'Columns to include',\n },\n exclude: {\n type: 'array',\n items: { type: 'string' },\n description: 'Columns to exclude',\n },\n rename: {\n type: 'object',\n additionalProperties: { type: 'string' },\n description: 'Column rename mapping (oldName: newName)',\n },\n },\n required: ['input'],\n },\n handler: async (args: {\n input: string;\n select?: string[];\n exclude?: string[];\n rename?: Record<string, string>;\n }) => {\n const result = csv.transform(args.input, {\n select: args.select,\n exclude: args.exclude,\n rename: args.rename,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_csv_export',\n description: 'Export CSV to different formats (csv, tsv, json, jsonl).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The CSV string to export',\n },\n format: {\n type: 'string',\n enum: ['csv', 'tsv', 'json', 'jsonl'],\n description: 'Target format',\n },\n headers: {\n type: 'boolean',\n description: 'Include headers in output (default: true)',\n },\n },\n required: ['input', 'format'],\n },\n handler: async (args: {\n input: string;\n format: csv.ExportFormat;\n headers?: boolean;\n }) => {\n const result = csv.exportData(args.input, {\n format: args.format,\n headers: args.headers ?? true,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n];\n","import type { PageRange } from './types';\n\nexport function parsePageRanges(rangeStr: string, totalPages: number): number[] {\n const pages: Set<number> = new Set();\n const parts = rangeStr.split(',').map((s) => s.trim());\n\n for (const part of parts) {\n if (part.toLowerCase() === 'all') {\n for (let i = 1; i <= totalPages; i++) {\n pages.add(i);\n }\n continue;\n }\n\n if (part.includes('-')) {\n const [startStr, endStr] = part.split('-').map((s) => s.trim());\n const start = parseInt(startStr, 10) || 1;\n const end = parseInt(endStr, 10) || totalPages;\n\n for (let i = Math.max(1, start); i <= Math.min(totalPages, end); i++) {\n pages.add(i);\n }\n } else {\n const page = parseInt(part, 10);\n if (page >= 1 && page <= totalPages) {\n pages.add(page);\n }\n }\n }\n\n return [...pages].sort((a, b) => a - b);\n}\n\nexport function parseRangesToGroups(\n rangeStr: string,\n totalPages: number\n): PageRange[] {\n const ranges: PageRange[] = [];\n const parts = rangeStr.split(',').map((s) => s.trim());\n\n for (const part of parts) {\n if (part.toLowerCase() === 'all') {\n ranges.push({ start: 1, end: totalPages });\n continue;\n }\n\n if (part.includes('-')) {\n const [startStr, endStr] = part.split('-').map((s) => s.trim());\n const start = parseInt(startStr, 10) || 1;\n const end = parseInt(endStr, 10) || totalPages;\n ranges.push({\n start: Math.max(1, start),\n end: Math.min(totalPages, end),\n });\n } else {\n const page = parseInt(part, 10);\n if (page >= 1 && page <= totalPages) {\n ranges.push({ start: page, end: page });\n }\n }\n }\n\n return ranges;\n}\n\nexport function formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;\n}\n\nexport function toUint8Array(data: Buffer | Uint8Array | ArrayBuffer): Uint8Array {\n if (data instanceof Uint8Array) {\n return data;\n }\n if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n if (Buffer.isBuffer(data)) {\n return new Uint8Array(data);\n }\n throw new Error('Invalid data type');\n}\n","import { PDFDocument } from 'pdf-lib';\nimport type { MergeOptions } from './types';\nimport { parsePageRanges, toUint8Array } from './utils';\n\nexport async function merge(\n files: (Buffer | Uint8Array)[],\n options: MergeOptions = {}\n): Promise<Uint8Array> {\n const { pageRanges } = options;\n\n const mergedPdf = await PDFDocument.create();\n\n for (let i = 0; i < files.length; i++) {\n const fileData = toUint8Array(files[i]);\n const sourcePdf = await PDFDocument.load(fileData);\n const totalPages = sourcePdf.getPageCount();\n\n let pagesToCopy: number[];\n\n if (pageRanges && pageRanges[i]) {\n pagesToCopy = parsePageRanges(pageRanges[i], totalPages);\n } else {\n pagesToCopy = Array.from({ length: totalPages }, (_, j) => j + 1);\n }\n\n const pageIndices = pagesToCopy.map((p) => p - 1);\n const copiedPages = await mergedPdf.copyPages(sourcePdf, pageIndices);\n\n for (const page of copiedPages) {\n mergedPdf.addPage(page);\n }\n }\n\n return mergedPdf.save();\n}\n\nexport async function mergeAll(files: (Buffer | Uint8Array)[]): Promise<Uint8Array> {\n return merge(files);\n}\n\nexport async function appendPages(\n target: Buffer | Uint8Array,\n source: Buffer | Uint8Array,\n pageRange?: string\n): Promise<Uint8Array> {\n const targetPdf = await PDFDocument.load(toUint8Array(target));\n const sourcePdf = await PDFDocument.load(toUint8Array(source));\n\n const totalPages = sourcePdf.getPageCount();\n const pagesToCopy = pageRange\n ? parsePageRanges(pageRange, totalPages)\n : Array.from({ length: totalPages }, (_, i) => i + 1);\n\n const pageIndices = pagesToCopy.map((p) => p - 1);\n const copiedPages = await targetPdf.copyPages(sourcePdf, pageIndices);\n\n for (const page of copiedPages) {\n targetPdf.addPage(page);\n }\n\n return targetPdf.save();\n}\n","import { PDFDocument } from 'pdf-lib';\nimport type { SplitOptions } from './types';\nimport { parsePageRanges, parseRangesToGroups, toUint8Array } from './utils';\n\nexport async function split(\n file: Buffer | Uint8Array,\n options: SplitOptions\n): Promise<Uint8Array[]> {\n const { ranges } = options;\n const fileData = toUint8Array(file);\n const sourcePdf = await PDFDocument.load(fileData);\n const totalPages = sourcePdf.getPageCount();\n\n const rangeGroups = parseRangesToGroups(ranges, totalPages);\n const results: Uint8Array[] = [];\n\n for (const range of rangeGroups) {\n const newPdf = await PDFDocument.create();\n const pageIndices: number[] = [];\n\n for (let i = range.start; i <= range.end; i++) {\n pageIndices.push(i - 1);\n }\n\n const copiedPages = await newPdf.copyPages(sourcePdf, pageIndices);\n for (const page of copiedPages) {\n newPdf.addPage(page);\n }\n\n results.push(await newPdf.save());\n }\n\n return results;\n}\n\nexport async function extractPages(\n file: Buffer | Uint8Array,\n pageRange: string\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const sourcePdf = await PDFDocument.load(fileData);\n const totalPages = sourcePdf.getPageCount();\n\n const pages = parsePageRanges(pageRange, totalPages);\n const newPdf = await PDFDocument.create();\n\n const pageIndices = pages.map((p) => p - 1);\n const copiedPages = await newPdf.copyPages(sourcePdf, pageIndices);\n\n for (const page of copiedPages) {\n newPdf.addPage(page);\n }\n\n return newPdf.save();\n}\n\nexport async function splitEveryN(\n file: Buffer | Uint8Array,\n n: number\n): Promise<Uint8Array[]> {\n const fileData = toUint8Array(file);\n const sourcePdf = await PDFDocument.load(fileData);\n const totalPages = sourcePdf.getPageCount();\n\n const ranges: string[] = [];\n for (let i = 1; i <= totalPages; i += n) {\n const end = Math.min(i + n - 1, totalPages);\n ranges.push(`${i}-${end}`);\n }\n\n return split(file, { ranges: ranges.join(',') });\n}\n\nexport async function splitIntoSingle(\n file: Buffer | Uint8Array\n): Promise<Uint8Array[]> {\n return splitEveryN(file, 1);\n}\n","import { PDFDocument } from 'pdf-lib';\nimport type { PDFMetadata, PDFInfo, PageInfo } from './types';\nimport { toUint8Array } from './utils';\n\nexport async function getInfo(file: Buffer | Uint8Array): Promise<PDFInfo> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData, { ignoreEncryption: true });\n\n return {\n pageCount: pdf.getPageCount(),\n metadata: {\n title: pdf.getTitle(),\n author: pdf.getAuthor(),\n subject: pdf.getSubject(),\n keywords: pdf.getKeywords()?.split(',').map((k) => k.trim()),\n creator: pdf.getCreator(),\n producer: pdf.getProducer(),\n creationDate: pdf.getCreationDate(),\n modificationDate: pdf.getModificationDate(),\n },\n encrypted: false,\n version: 'PDF-1.7',\n };\n}\n\nexport async function getMetadata(file: Buffer | Uint8Array): Promise<PDFMetadata> {\n const info = await getInfo(file);\n return info.metadata;\n}\n\nexport async function setMetadata(\n file: Buffer | Uint8Array,\n metadata: Partial<PDFMetadata>\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n\n if (metadata.title !== undefined) pdf.setTitle(metadata.title);\n if (metadata.author !== undefined) pdf.setAuthor(metadata.author);\n if (metadata.subject !== undefined) pdf.setSubject(metadata.subject);\n if (metadata.keywords !== undefined) pdf.setKeywords(metadata.keywords);\n if (metadata.creator !== undefined) pdf.setCreator(metadata.creator);\n if (metadata.producer !== undefined) pdf.setProducer(metadata.producer);\n\n return pdf.save();\n}\n\nexport async function getPageInfo(file: Buffer | Uint8Array): Promise<PageInfo[]> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n\n const pages = pdf.getPages();\n return pages.map((page, index) => ({\n index,\n width: page.getWidth(),\n height: page.getHeight(),\n rotation: page.getRotation().angle,\n }));\n}\n\nexport async function getPageCount(file: Buffer | Uint8Array): Promise<number> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n return pdf.getPageCount();\n}\n","import { PDFDocument, degrees, rgb, StandardFonts } from 'pdf-lib';\nimport type { RotateOptions, WatermarkOptions, CompressOptions } from './types';\nimport { parsePageRanges, toUint8Array } from './utils';\n\nexport async function rotate(\n file: Buffer | Uint8Array,\n options: RotateOptions\n): Promise<Uint8Array> {\n const { pages: pageRange, degrees: deg } = options;\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n\n const allPages = pdf.getPages();\n const pagesToRotate = pageRange\n ? parsePageRanges(pageRange.join(','), allPages.length)\n : Array.from({ length: allPages.length }, (_, i) => i + 1);\n\n for (const pageNum of pagesToRotate) {\n const page = allPages[pageNum - 1];\n if (page) {\n const currentRotation = page.getRotation().angle;\n page.setRotation(degrees(currentRotation + deg));\n }\n }\n\n return pdf.save();\n}\n\nexport async function addWatermark(\n file: Buffer | Uint8Array,\n options: WatermarkOptions\n): Promise<Uint8Array> {\n const {\n text = 'WATERMARK',\n opacity = 0.3,\n rotation = -45,\n position = 'center',\n fontSize = 50,\n color = { r: 0.5, g: 0.5, b: 0.5 },\n } = options;\n\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n const font = await pdf.embedFont(StandardFonts.Helvetica);\n\n const pages = pdf.getPages();\n\n for (const page of pages) {\n const { width, height } = page.getSize();\n const textWidth = font.widthOfTextAtSize(text, fontSize);\n\n const x = (width - textWidth) / 2;\n let y = height / 2;\n\n if (position === 'top') {\n y = height - fontSize - 20;\n } else if (position === 'bottom') {\n y = 20;\n }\n\n page.drawText(text, {\n x,\n y,\n size: fontSize,\n font,\n color: rgb(color.r, color.g, color.b),\n opacity,\n rotate: degrees(rotation),\n });\n }\n\n return pdf.save();\n}\n\nexport async function reorderPages(\n file: Buffer | Uint8Array,\n newOrder: number[]\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const sourcePdf = await PDFDocument.load(fileData);\n const newPdf = await PDFDocument.create();\n\n const pageIndices = newOrder.map((p) => p - 1);\n const copiedPages = await newPdf.copyPages(sourcePdf, pageIndices);\n\n for (const page of copiedPages) {\n newPdf.addPage(page);\n }\n\n return newPdf.save();\n}\n\nexport async function deletePage(\n file: Buffer | Uint8Array,\n pageNumbers: number[]\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n const totalPages = pdf.getPageCount();\n\n const sortedPageNumbers = [...pageNumbers].sort((a, b) => b - a);\n\n for (const pageNum of sortedPageNumbers) {\n if (pageNum >= 1 && pageNum <= totalPages) {\n pdf.removePage(pageNum - 1);\n }\n }\n\n return pdf.save();\n}\n\nexport async function compress(\n file: Buffer | Uint8Array,\n _options: CompressOptions = { quality: 'medium' }\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const pdf = await PDFDocument.load(fileData);\n\n return pdf.save({\n useObjectStreams: true,\n addDefaultPage: false,\n });\n}\n","import type { ExtractTextOptions } from './types';\nimport { toUint8Array, parsePageRanges } from './utils';\n\nexport async function extractText(\n file: Buffer | Uint8Array,\n options: ExtractTextOptions = {}\n): Promise<string> {\n const { pages: pageNums } = options;\n const fileData = toUint8Array(file);\n\n try {\n const pdfParse = await import('pdf-parse');\n const parser = pdfParse.default || pdfParse;\n\n if (pageNums && pageNums.length > 0) {\n const result = await parser(Buffer.from(fileData), {\n max: Math.max(...pageNums),\n });\n\n return result.text;\n }\n\n const result = await parser(Buffer.from(fileData));\n return result.text;\n } catch (error) {\n throw new Error(`Failed to extract text: ${(error as Error).message}`);\n }\n}\n\nexport async function extractTextFromPages(\n file: Buffer | Uint8Array,\n pageRange: string\n): Promise<Record<number, string>> {\n const fileData = toUint8Array(file);\n\n try {\n const pdfParse = await import('pdf-parse');\n const parser = pdfParse.default || pdfParse;\n\n const result = await parser(Buffer.from(fileData));\n const totalPages = result.numpages;\n const pages = parsePageRanges(pageRange, totalPages);\n\n const pageTexts: Record<number, string> = {};\n\n const fullText = result.text;\n const textPerPage = fullText.length / totalPages;\n\n for (const pageNum of pages) {\n const start = (pageNum - 1) * textPerPage;\n const end = pageNum * textPerPage;\n pageTexts[pageNum] = fullText.slice(start, end).trim();\n }\n\n return pageTexts;\n } catch (error) {\n throw new Error(`Failed to extract text: ${(error as Error).message}`);\n }\n}\n\nexport async function hasText(file: Buffer | Uint8Array): Promise<boolean> {\n try {\n const text = await extractText(file);\n return text.trim().length > 0;\n } catch {\n return false;\n }\n}\n","import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';\nimport type {\n PDFTemplate,\n TemplatePage,\n TemplateElement,\n TemplateField,\n TemplateFont,\n PdfToTemplateOptions,\n TemplateToPdfOptions,\n} from './types';\nimport { toUint8Array } from './utils';\n\nconst PLACEHOLDER_REGEX = /\\{\\{(\\w+)\\}\\}/g;\n\nfunction extractFieldName(content: string): string | undefined {\n const match = content.match(/^\\{\\{(\\w+)\\}\\}$/);\n return match ? match[1] : undefined;\n}\n\nfunction resolveContent(\n content: string,\n data: Record<string, string>,\n missingFieldBehavior: 'leave_placeholder' | 'use_default' | 'empty_string',\n fields: TemplateField[]\n): string {\n return content.replace(PLACEHOLDER_REGEX, (match, fieldName) => {\n if (fieldName in data) {\n return data[fieldName];\n }\n switch (missingFieldBehavior) {\n case 'use_default': {\n const field = fields.find((f) => f.name === fieldName);\n return field?.defaultValue ?? '';\n }\n case 'empty_string':\n return '';\n case 'leave_placeholder':\n default:\n return match;\n }\n });\n}\n\nfunction resolveFont(\n font: TemplateFont | undefined,\n defaults: PDFTemplate['defaults']\n): TemplateFont {\n return font ?? defaults?.font ?? { name: 'Helvetica', size: 12 };\n}\n\nexport async function pdfToTemplate(\n file: Buffer | Uint8Array,\n options: PdfToTemplateOptions = {}\n): Promise<PDFTemplate> {\n const fileData = toUint8Array(file);\n const pdfDoc = await PDFDocument.load(fileData, { ignoreEncryption: true });\n const pageCount = pdfDoc.getPageCount();\n const pdfPages = pdfDoc.getPages();\n\n let fullText = '';\n try {\n const pdfParse = await import('pdf-parse');\n const parser = pdfParse.default || pdfParse;\n const parsed = await parser(Buffer.from(fileData));\n fullText = parsed.text;\n } catch {\n fullText = '';\n }\n\n const textPerPage = pageCount > 0 ? fullText.length / pageCount : 0;\n const fieldsMap = new Map<string, { pages: Set<number>; defaultValue: string }>();\n const fonts: Record<string, TemplateFont> = {};\n const defaultFont: TemplateFont = { name: 'Helvetica', size: 12 };\n\n fonts['Helvetica-12'] = defaultFont;\n\n const pages: TemplatePage[] = pdfPages.map((page, pageIndex) => {\n const { width, height } = page.getSize();\n\n const start = Math.floor(pageIndex * textPerPage);\n const end = Math.floor((pageIndex + 1) * textPerPage);\n const pageText = fullText.slice(start, end).trim();\n\n const elements: TemplateElement[] = [];\n\n if (pageText) {\n const lines = pageText.split('\\n').filter((l) => l.trim());\n const lineHeight = 14;\n let yPos = height - 40;\n\n for (const line of lines) {\n const hasPlaceholder = PLACEHOLDER_REGEX.test(line);\n PLACEHOLDER_REGEX.lastIndex = 0;\n\n const element: TemplateElement = {\n type: hasPlaceholder ? 'placeholder' : 'text',\n content: line.trim(),\n x: 40,\n y: yPos,\n font: defaultFont,\n };\n\n if (hasPlaceholder) {\n const fieldName = extractFieldName(line.trim());\n if (fieldName) {\n element.fieldName = fieldName;\n }\n\n let match;\n PLACEHOLDER_REGEX.lastIndex = 0;\n while ((match = PLACEHOLDER_REGEX.exec(line)) !== null) {\n const name = match[1];\n if (!fieldsMap.has(name)) {\n fieldsMap.set(name, { pages: new Set(), defaultValue: '' });\n }\n fieldsMap.get(name)!.pages.add(pageIndex + 1);\n }\n }\n\n elements.push(element);\n yPos -= lineHeight;\n }\n }\n\n return { width, height, elements };\n });\n\n const fields: TemplateField[] = [];\n for (const [name, info] of fieldsMap) {\n fields.push({\n name,\n defaultValue: info.defaultValue,\n pages: [...info.pages].sort((a, b) => a - b),\n });\n }\n\n return {\n version: '1.0',\n metadata: {\n name: options.name,\n description: options.description,\n createdAt: new Date().toISOString(),\n sourcePageCount: pageCount,\n },\n pages,\n fields,\n fonts,\n defaults: {\n font: defaultFont,\n color: { r: 0, g: 0, b: 0 },\n missingFieldBehavior: 'leave_placeholder',\n },\n };\n}\n\nexport async function templateToPdf(\n template: PDFTemplate,\n data: Record<string, string> = {},\n options: TemplateToPdfOptions = {}\n): Promise<Uint8Array> {\n validateTemplate(template);\n\n const pdfDoc = await PDFDocument.create();\n const font = await pdfDoc.embedFont(StandardFonts.Helvetica);\n const boldFont = await pdfDoc.embedFont(StandardFonts.HelveticaBold);\n\n const missingFieldBehavior =\n options.missingFieldBehavior ??\n template.defaults?.missingFieldBehavior ??\n 'leave_placeholder';\n\n const defaultColor = template.defaults?.color ?? { r: 0, g: 0, b: 0 };\n\n for (const templatePage of template.pages) {\n const page = pdfDoc.addPage([templatePage.width, templatePage.height]);\n\n for (const element of templatePage.elements) {\n const resolvedFont = resolveFont(element.font, template.defaults);\n const color = element.color ?? defaultColor;\n const pdfFont = resolvedFont.weight === 'bold' ? boldFont : font;\n const fontSize = resolvedFont.size;\n\n const content =\n element.type === 'placeholder'\n ? resolveContent(element.content, data, missingFieldBehavior, template.fields)\n : element.content;\n\n page.drawText(content, {\n x: element.x,\n y: element.y,\n size: fontSize,\n font: pdfFont,\n color: rgb(color.r, color.g, color.b),\n });\n }\n }\n\n return pdfDoc.save();\n}\n\nexport function validateTemplate(template: PDFTemplate): void {\n if (!template) {\n throw new Error('Template is required');\n }\n\n if (template.version !== '1.0') {\n throw new Error(`Unsupported template version: ${template.version}`);\n }\n\n if (!Array.isArray(template.pages) || template.pages.length === 0) {\n throw new Error('Template must have at least one page');\n }\n\n if (!template.metadata) {\n throw new Error('Template metadata is required');\n }\n\n if (typeof template.metadata.sourcePageCount !== 'number' || template.metadata.sourcePageCount < 1) {\n throw new Error('Template metadata.sourcePageCount must be a positive number');\n }\n\n if (!Array.isArray(template.fields)) {\n throw new Error('Template fields must be an array');\n }\n\n for (const page of template.pages) {\n if (typeof page.width !== 'number' || typeof page.height !== 'number') {\n throw new Error('Each page must have numeric width and height');\n }\n if (!Array.isArray(page.elements)) {\n throw new Error('Each page must have an elements array');\n }\n for (const element of page.elements) {\n if (element.type !== 'text' && element.type !== 'placeholder') {\n throw new Error(`Invalid element type: ${element.type}`);\n }\n if (typeof element.content !== 'string') {\n throw new Error('Element content must be a string');\n }\n if (typeof element.x !== 'number' || typeof element.y !== 'number') {\n throw new Error('Element x and y must be numbers');\n }\n }\n }\n}\n","import { PDFDocument } from 'pdf-lib';\nimport type { FormField, FormInfo, FillFormOptions } from './types';\nimport { toUint8Array } from './utils';\n\nexport async function readFormFields(\n file: Buffer | Uint8Array\n): Promise<FormInfo> {\n const data = toUint8Array(file);\n const pdfDoc = await PDFDocument.load(data);\n const form = pdfDoc.getForm();\n const pdfFields = form.getFields();\n\n const fields: FormField[] = pdfFields.map((field) => {\n const name = field.getName();\n const typeName = field.constructor.name;\n\n switch (typeName) {\n case 'PDFTextField': {\n const tf = field as import('pdf-lib').PDFTextField;\n return { name, type: 'text' as const, value: tf.getText() ?? '' };\n }\n case 'PDFCheckBox': {\n const cb = field as import('pdf-lib').PDFCheckBox;\n return { name, type: 'checkbox' as const, value: cb.isChecked() };\n }\n case 'PDFRadioGroup': {\n const rg = field as import('pdf-lib').PDFRadioGroup;\n return {\n name,\n type: 'radio' as const,\n value: rg.getSelected() ?? '',\n options: rg.getOptions(),\n };\n }\n case 'PDFDropdown': {\n const dd = field as import('pdf-lib').PDFDropdown;\n return {\n name,\n type: 'dropdown' as const,\n value: dd.getSelected()[0] ?? '',\n options: dd.getOptions(),\n };\n }\n default:\n return { name, type: 'text' as const, value: '' };\n }\n });\n\n return { fields, fieldCount: fields.length };\n}\n\nexport async function fillFormFields(\n file: Buffer | Uint8Array,\n data: Record<string, string | boolean>,\n options: FillFormOptions = {}\n): Promise<Uint8Array> {\n const fileData = toUint8Array(file);\n const pdfDoc = await PDFDocument.load(fileData);\n const form = pdfDoc.getForm();\n\n for (const [fieldName, value] of Object.entries(data)) {\n const field = form.getField(fieldName);\n const typeName = field.constructor.name;\n\n switch (typeName) {\n case 'PDFTextField': {\n const tf = field as import('pdf-lib').PDFTextField;\n tf.setText(String(value));\n break;\n }\n case 'PDFCheckBox': {\n const cb = field as import('pdf-lib').PDFCheckBox;\n if (value === true || value === 'true') {\n cb.check();\n } else {\n cb.uncheck();\n }\n break;\n }\n case 'PDFRadioGroup': {\n const rg = field as import('pdf-lib').PDFRadioGroup;\n rg.select(String(value));\n break;\n }\n case 'PDFDropdown': {\n const dd = field as import('pdf-lib').PDFDropdown;\n dd.select(String(value));\n break;\n }\n }\n }\n\n if (options.flatten) {\n form.flatten();\n }\n\n return pdfDoc.save();\n}\n","import * as pdf from '../pdf';\n\nexport const pdfTools = [\n {\n name: 'agent_tools_pdf_merge',\n description:\n 'Merge multiple PDF files into one. Files should be base64 encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n files: {\n type: 'array',\n items: { type: 'string' },\n description: 'Array of base64-encoded PDF files',\n },\n pageRanges: {\n type: 'array',\n items: { type: 'string' },\n description:\n 'Optional page ranges for each file (e.g., [\"1-3\", \"all\", \"5,7-10\"])',\n },\n },\n required: ['files'],\n },\n handler: async (args: { files: string[]; pageRanges?: string[] }) => {\n const buffers = args.files.map((f) => Buffer.from(f, 'base64'));\n const result = await pdf.merge(buffers, { pageRanges: args.pageRanges });\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_split',\n description:\n 'Split a PDF into multiple documents based on page ranges. Returns array of base64 PDFs.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n ranges: {\n type: 'string',\n description:\n 'Comma-separated page ranges (e.g., \"1-3,4-6,7-10\")',\n },\n },\n required: ['file', 'ranges'],\n },\n handler: async (args: { file: string; ranges: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const results = await pdf.split(buffer, { ranges: args.ranges });\n const base64Results = results.map((r) => Buffer.from(r).toString('base64'));\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(base64Results),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_extract_pages',\n description:\n 'Extract specific pages from a PDF. Returns base64-encoded PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n pageRange: {\n type: 'string',\n description: 'Pages to extract (e.g., \"1,3,5-10\")',\n },\n },\n required: ['file', 'pageRange'],\n },\n handler: async (args: { file: string; pageRange: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.extractPages(buffer, args.pageRange);\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_extract_text',\n description: 'Extract text content from a PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n pages: {\n type: 'array',\n items: { type: 'number' },\n description: 'Optional specific pages to extract text from',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string; pages?: number[] }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.extractText(buffer, { pages: args.pages });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_pdf_metadata',\n description: 'Get metadata from a PDF (title, author, page count, etc.).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.getInfo(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_pdf_set_metadata',\n description: 'Set metadata on a PDF. Returns modified base64-encoded PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n metadata: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n author: { type: 'string' },\n subject: { type: 'string' },\n keywords: { type: 'array', items: { type: 'string' } },\n },\n description: 'Metadata to set',\n },\n },\n required: ['file', 'metadata'],\n },\n handler: async (args: { file: string; metadata: pdf.PDFMetadata }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.setMetadata(buffer, args.metadata);\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_rotate',\n description: 'Rotate pages in a PDF. Returns base64-encoded PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n degrees: {\n type: 'number',\n enum: [90, 180, 270],\n description: 'Rotation angle',\n },\n pages: {\n type: 'array',\n items: { type: 'number' },\n description: 'Pages to rotate (all pages if not specified)',\n },\n },\n required: ['file', 'degrees'],\n },\n handler: async (args: { file: string; degrees: number; pages?: number[] }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.rotate(buffer, {\n degrees: args.degrees as 0 | 90 | 180 | 270,\n pages: args.pages,\n });\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_compress',\n description:\n 'Compress a PDF to reduce file size. Returns base64-encoded PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n quality: {\n type: 'string',\n enum: ['low', 'medium', 'high'],\n description: 'Compression quality (default: medium)',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string; quality?: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.compress(buffer, {\n quality: (args.quality || 'medium') as 'low' | 'medium' | 'high',\n });\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_page_count',\n description: 'Get the number of pages in a PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const count = await pdf.getPageCount(buffer);\n return {\n content: [{ type: 'text' as const, text: String(count) }],\n };\n },\n },\n {\n name: 'agent_tools_pdf_to_template',\n description:\n 'Extract a reusable JSON template from a PDF, detecting {{placeholder}} fields. Returns template JSON.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n name: {\n type: 'string',\n description: 'Optional template name',\n },\n description: {\n type: 'string',\n description: 'Optional template description',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string; name?: string; description?: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const template = await pdf.pdfToTemplate(buffer, {\n name: args.name,\n description: args.description,\n });\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(template, null, 2),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_from_template',\n description:\n 'Generate a PDF from a template JSON and data JSON, replacing placeholders with values. Returns base64-encoded PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n template: {\n type: 'object',\n description: 'PDF template JSON object',\n },\n data: {\n type: 'object',\n description: 'Key-value pairs for placeholder replacement',\n },\n missingFieldBehavior: {\n type: 'string',\n enum: ['leave_placeholder', 'use_default', 'empty_string'],\n description:\n 'How to handle missing fields (default: leave_placeholder)',\n },\n },\n required: ['template'],\n },\n handler: async (args: {\n template: pdf.PDFTemplate;\n data?: Record<string, string>;\n missingFieldBehavior?: string;\n }) => {\n const result = await pdf.templateToPdf(args.template, args.data ?? {}, {\n missingFieldBehavior: args.missingFieldBehavior as\n | 'leave_placeholder'\n | 'use_default'\n | 'empty_string'\n | undefined,\n });\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_read_form',\n description:\n 'Read AcroForm fields from a fillable PDF. Returns field names, types, current values, and options.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n },\n required: ['file'],\n },\n handler: async (args: { file: string }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.readFormFields(buffer);\n return {\n content: [\n { type: 'text' as const, text: JSON.stringify(result, null, 2) },\n ],\n };\n },\n },\n {\n name: 'agent_tools_pdf_fill_form',\n description:\n 'Fill AcroForm fields in a fillable PDF with provided data. Returns base64-encoded filled PDF.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded PDF file',\n },\n data: {\n type: 'object',\n description:\n 'Key-value pairs mapping field names to values (string for text/radio/dropdown, boolean for checkbox)',\n },\n flatten: {\n type: 'boolean',\n description:\n 'If true, flatten the form fields making them non-editable (default: false)',\n },\n },\n required: ['file', 'data'],\n },\n handler: async (args: {\n file: string;\n data: Record<string, string | boolean>;\n flatten?: boolean;\n }) => {\n const buffer = Buffer.from(args.file, 'base64');\n const result = await pdf.fillFormFields(buffer, args.data, {\n flatten: args.flatten,\n });\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n];\n","import { XMLParser } from 'fast-xml-parser';\nimport type { XmlParseOptions } from './types';\n\nexport function parse(\n input: string,\n options: XmlParseOptions = {}\n): Record<string, unknown> {\n const parser = new XMLParser({\n preserveOrder: options.preserveOrder ?? false,\n ignoreAttributes: options.ignoreAttributes ?? false,\n trimValues: options.trimValues ?? true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n\n return parser.parse(input) as Record<string, unknown>;\n}\n","import { XMLParser, XMLBuilder } from 'fast-xml-parser';\nimport type { XmlFormatOptions } from './types';\n\nexport function format(input: string, options: XmlFormatOptions = {}): string {\n const indent = options.indent ?? 2;\n\n const parser = new XMLParser({\n preserveOrder: true,\n ignoreAttributes: false,\n trimValues: true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n\n const parsed = parser.parse(input);\n\n const builder = new XMLBuilder({\n preserveOrder: true,\n ignoreAttributes: false,\n format: true,\n indentBy: ' '.repeat(indent),\n suppressEmptyNode: false,\n });\n\n return builder.build(parsed) as string;\n}\n\nexport function minify(input: string): string {\n const parser = new XMLParser({\n preserveOrder: true,\n ignoreAttributes: false,\n trimValues: true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n\n const parsed = parser.parse(input);\n\n const builder = new XMLBuilder({\n preserveOrder: true,\n ignoreAttributes: false,\n format: false,\n suppressEmptyNode: false,\n });\n\n return builder.build(parsed) as string;\n}\n","import { XMLValidator } from 'fast-xml-parser';\nimport type { XmlValidationResult } from './types';\n\nexport function validate(input: string): XmlValidationResult {\n const result = XMLValidator.validate(input, {\n allowBooleanAttributes: true,\n });\n\n if (result === true) {\n return { valid: true, errors: [] };\n }\n\n return {\n valid: false,\n errors: [\n {\n line: (result as { err: { line: number; msg: string } }).err.line,\n message: (result as { err: { line: number; msg: string } }).err.msg,\n },\n ],\n };\n}\n","import { XMLParser } from 'fast-xml-parser';\nimport type { XmlQueryResult } from './types';\n\nexport function query(input: string, path: string): XmlQueryResult {\n const parser = new XMLParser({\n ignoreAttributes: false,\n trimValues: true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n\n const parsed = parser.parse(input);\n const segments = path.replace(/^\\/+/, '').split('/');\n const matches = resolvePath(parsed, segments);\n\n return {\n matches,\n count: matches.length,\n };\n}\n\nfunction resolvePath(obj: unknown, segments: string[]): unknown[] {\n if (segments.length === 0) {\n return obj !== undefined ? [obj] : [];\n }\n\n if (obj === null || obj === undefined || typeof obj !== 'object') {\n return [];\n }\n\n const [current, ...rest] = segments;\n\n if (current === '*') {\n const results: unknown[] = [];\n for (const value of Object.values(obj as Record<string, unknown>)) {\n results.push(...resolvePath(value, rest));\n }\n return results;\n }\n\n const record = obj as Record<string, unknown>;\n if (current in record) {\n const value = record[current];\n if (Array.isArray(value)) {\n if (rest.length === 0) return value;\n const results: unknown[] = [];\n for (const item of value) {\n results.push(...resolvePath(item, rest));\n }\n return results;\n }\n return resolvePath(value, rest);\n }\n\n return [];\n}\n","import { XMLParser, XMLBuilder } from 'fast-xml-parser';\nimport type { XmlConvertFormat } from './types';\n\nexport function convert(\n input: string,\n from: XmlConvertFormat,\n to: XmlConvertFormat\n): string {\n if (from === to) return input;\n\n if (from === 'xml' && to === 'json') {\n const parser = new XMLParser({\n ignoreAttributes: false,\n trimValues: true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n return JSON.stringify(parser.parse(input), null, 2);\n }\n\n if (from === 'json' && to === 'xml') {\n const data = JSON.parse(input);\n const builder = new XMLBuilder({\n ignoreAttributes: false,\n format: true,\n indentBy: ' ',\n suppressEmptyNode: false,\n });\n return builder.build(data) as string;\n }\n\n throw new Error(`Unsupported conversion: ${from} -> ${to}`);\n}\n","import { XMLParser } from 'fast-xml-parser';\nimport type { XmlStats } from './types';\n\nexport function getStats(input: string): XmlStats {\n const parser = new XMLParser({\n ignoreAttributes: false,\n trimValues: true,\n parseAttributeValue: true,\n parseTagValue: true,\n });\n\n const parsed = parser.parse(input);\n const stats: XmlStats = {\n elements: 0,\n attributes: 0,\n textNodes: 0,\n depth: 0,\n sizeBytes: Buffer.byteLength(input, 'utf8'),\n };\n\n countNodes(parsed, 0, stats);\n return stats;\n}\n\nfunction countNodes(\n obj: unknown,\n depth: number,\n stats: XmlStats\n): void {\n if (obj === null || obj === undefined) return;\n\n if (typeof obj !== 'object') {\n stats.textNodes++;\n return;\n }\n\n if (Array.isArray(obj)) {\n for (const item of obj) {\n countNodes(item, depth, stats);\n }\n return;\n }\n\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key.startsWith('@_')) {\n stats.attributes++;\n } else if (key === '#text') {\n stats.textNodes++;\n } else {\n stats.elements++;\n stats.depth = Math.max(stats.depth, depth + 1);\n countNodes(value, depth + 1, stats);\n }\n }\n}\n","import * as xml from '../xml';\nimport type { McpTool } from './index';\n\nexport const xmlTools: McpTool[] = [\n {\n name: 'agent_tools_xml_parse',\n description:\n 'Parse XML string into a JSON object representation. Supports attributes, nested elements, and text nodes.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to parse' },\n ignoreAttributes: {\n type: 'boolean',\n description: 'Whether to ignore XML attributes (default: false)',\n },\n trimValues: {\n type: 'boolean',\n description: 'Whether to trim text values (default: true)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.parse(args.input as string, {\n ignoreAttributes: args.ignoreAttributes as boolean,\n trimValues: args.trimValues as boolean,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_xml_format',\n description:\n 'Pretty-print XML with configurable indentation. Reformats XML to be human-readable.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to format' },\n indent: {\n type: 'number',\n description: 'Number of spaces for indentation (default: 2)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.format(args.input as string, {\n indent: (args.indent as number) || 2,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_xml_minify',\n description: 'Minify XML by removing unnecessary whitespace and formatting.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to minify' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.minify(args.input as string);\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_xml_validate',\n description:\n 'Validate XML syntax. Returns whether the XML is well-formed with error details if invalid.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to validate' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.validate(args.input as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_xml_query',\n description:\n 'Query XML using a simplified path expression (e.g., \"root/items/item\"). Returns matching nodes.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to query' },\n path: {\n type: 'string',\n description: 'Path expression (e.g., \"catalog/book/title\")',\n },\n },\n required: ['input', 'path'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.query(args.input as string, args.path as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_xml_convert',\n description: 'Convert between XML and JSON formats.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Input string to convert' },\n from: {\n type: 'string',\n enum: ['xml', 'json'],\n description: 'Source format',\n },\n to: {\n type: 'string',\n enum: ['xml', 'json'],\n description: 'Target format',\n },\n },\n required: ['input', 'from', 'to'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.convert(\n args.input as string,\n args.from as xml.XmlConvertFormat,\n args.to as xml.XmlConvertFormat\n );\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_xml_stats',\n description:\n 'Get statistics about an XML document: element count, attribute count, text nodes, depth, and size.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'XML string to analyze' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = xml.getStats(args.input as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import ExcelJS from 'exceljs';\nimport type { ExcelParseOptions, ExcelParseResult, SheetInfo } from './types';\n\nexport async function parse(\n file: Buffer | Uint8Array,\n options: ExcelParseOptions = {}\n): Promise<ExcelParseResult> {\n const workbook = new ExcelJS.Workbook();\n // @ts-expect-error - exceljs types incompatible with Node.js 22 Buffer\n await workbook.xlsx.load(Buffer.from(file));\n\n const sheets: SheetInfo[] = [];\n workbook.eachSheet((ws, id) => {\n sheets.push({\n name: ws.name,\n index: id,\n rowCount: ws.rowCount,\n columnCount: ws.columnCount,\n });\n });\n\n const targetSheet =\n typeof options.sheet === 'number'\n ? workbook.worksheets[options.sheet]\n : typeof options.sheet === 'string'\n ? workbook.getWorksheet(options.sheet)\n : workbook.worksheets[0];\n\n if (!targetSheet) {\n throw new Error('Sheet not found');\n }\n\n const useHeaders = options.header ?? true;\n const rows: Record<string, unknown>[] = [];\n let headers: string[] = [];\n\n targetSheet.eachRow((row, rowNumber) => {\n const values = row.values as unknown[];\n const cells = values.slice(1);\n\n if (rowNumber === 1 && useHeaders) {\n headers = cells.map((c, i) => String(c ?? `Column${i + 1}`));\n return;\n }\n\n const record: Record<string, unknown> = {};\n const keys = useHeaders && headers.length > 0 ? headers : cells.map((_, i) => `Column${i + 1}`);\n\n if (!useHeaders && rowNumber === 1) {\n headers = keys;\n }\n\n keys.forEach((key, i) => {\n const val = cells[i];\n record[key] = val instanceof Date ? val.toISOString() : (val ?? null);\n });\n rows.push(record);\n });\n\n return {\n sheets,\n data: rows,\n headers,\n rowCount: rows.length,\n };\n}\n\nexport async function getSheets(\n file: Buffer | Uint8Array\n): Promise<SheetInfo[]> {\n const workbook = new ExcelJS.Workbook();\n // @ts-expect-error - exceljs types incompatible with Node.js 22 Buffer\n await workbook.xlsx.load(Buffer.from(file));\n\n const sheets: SheetInfo[] = [];\n workbook.eachSheet((ws, id) => {\n sheets.push({\n name: ws.name,\n index: id,\n rowCount: ws.rowCount,\n columnCount: ws.columnCount,\n });\n });\n\n return sheets;\n}\n","import ExcelJS from 'exceljs';\nimport type { ExcelConvertOptions, ExcelConvertFormat } from './types';\n\nexport async function convert(\n file: Buffer | Uint8Array,\n format: ExcelConvertFormat,\n options: ExcelConvertOptions = {}\n): Promise<string> {\n const workbook = new ExcelJS.Workbook();\n // @ts-expect-error - exceljs types incompatible with Node.js 22 Buffer\n await workbook.xlsx.load(Buffer.from(file));\n\n const targetSheet =\n typeof options.sheet === 'number'\n ? workbook.worksheets[options.sheet]\n : typeof options.sheet === 'string'\n ? workbook.getWorksheet(options.sheet)\n : workbook.worksheets[0];\n\n if (!targetSheet) {\n throw new Error('Sheet not found');\n }\n\n const useHeaders = options.header ?? true;\n const allRows: unknown[][] = [];\n\n targetSheet.eachRow((row) => {\n const values = row.values as unknown[];\n allRows.push(values.slice(1).map((v) => (v instanceof Date ? v.toISOString() : v)));\n });\n\n if (allRows.length === 0) return '';\n\n const headers = useHeaders\n ? allRows[0].map((c, i) => String(c ?? `Column${i + 1}`))\n : allRows[0].map((_, i) => `Column${i + 1}`);\n const dataRows = useHeaders ? allRows.slice(1) : allRows;\n\n switch (format) {\n case 'json': {\n const records = dataRows.map((row) => {\n const record: Record<string, unknown> = {};\n headers.forEach((h, i) => {\n record[h] = row[i] ?? null;\n });\n return record;\n });\n return JSON.stringify(records, null, 2);\n }\n case 'csv':\n return toDSV(headers, dataRows, ',');\n case 'tsv':\n return toDSV(headers, dataRows, '\\t');\n default:\n throw new Error(`Unsupported format: ${format}`);\n }\n}\n\nfunction toDSV(headers: string[], rows: unknown[][], delimiter: string): string {\n const escape = (val: unknown): string => {\n const str = String(val ?? '');\n if (str.includes(delimiter) || str.includes('\"') || str.includes('\\n')) {\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\n }\n return str;\n };\n\n const lines = [headers.map(escape).join(delimiter)];\n for (const row of rows) {\n lines.push(headers.map((_, i) => escape(row[i])).join(delimiter));\n }\n return lines.join('\\n');\n}\n\nexport async function createExcel(\n data: Record<string, unknown>[],\n sheetName = 'Sheet1'\n): Promise<Uint8Array> {\n const workbook = new ExcelJS.Workbook();\n const sheet = workbook.addWorksheet(sheetName);\n\n if (data.length === 0) {\n const buffer = await workbook.xlsx.writeBuffer();\n return new Uint8Array(buffer);\n }\n\n const headers = Object.keys(data[0]);\n sheet.addRow(headers);\n\n for (const record of data) {\n sheet.addRow(headers.map((h) => record[h]));\n }\n\n const buffer = await workbook.xlsx.writeBuffer();\n return new Uint8Array(buffer);\n}\n","import ExcelJS from 'exceljs';\nimport type { ExcelStats, SheetInfo } from './types';\n\nexport async function getStats(file: Buffer | Uint8Array): Promise<ExcelStats> {\n const workbook = new ExcelJS.Workbook();\n // @ts-expect-error - exceljs types incompatible with Node.js 22 Buffer\n await workbook.xlsx.load(Buffer.from(file));\n\n const sheetDetails: SheetInfo[] = [];\n let totalRows = 0;\n let totalColumns = 0;\n\n workbook.eachSheet((ws, id) => {\n sheetDetails.push({\n name: ws.name,\n index: id,\n rowCount: ws.rowCount,\n columnCount: ws.columnCount,\n });\n totalRows += ws.rowCount;\n totalColumns = Math.max(totalColumns, ws.columnCount);\n });\n\n return {\n sheets: sheetDetails.length,\n totalRows,\n totalColumns,\n sheetDetails,\n sizeBytes: file.length,\n };\n}\n","import * as excel from '../excel';\nimport type { McpTool } from './index';\n\nexport const excelTools: McpTool[] = [\n {\n name: 'agent_tools_excel_parse',\n description:\n 'Parse an Excel file (XLSX) into JSON. Returns sheet info, headers, row data, and row count. Input file must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded Excel file',\n },\n sheet: {\n type: 'string',\n description: 'Sheet name or index to parse (default: first sheet)',\n },\n header: {\n type: 'boolean',\n description: 'Whether first row is headers (default: true)',\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const sheetArg = args.sheet;\n const sheet = sheetArg !== undefined && !isNaN(Number(sheetArg)) ? Number(sheetArg) : (sheetArg as string | undefined);\n const result = await excel.parse(buffer, {\n sheet,\n header: args.header as boolean,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_excel_convert',\n description:\n 'Convert an Excel file to JSON, CSV, or TSV format. Input file must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded Excel file',\n },\n format: {\n type: 'string',\n enum: ['json', 'csv', 'tsv'],\n description: 'Target format',\n },\n sheet: {\n type: 'string',\n description: 'Sheet name or index (default: first sheet)',\n },\n header: {\n type: 'boolean',\n description: 'Whether first row is headers (default: true)',\n },\n },\n required: ['file', 'format'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await excel.convert(buffer, args.format as excel.ExcelConvertFormat, {\n sheet: args.sheet as string | undefined,\n header: args.header as boolean,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_excel_stats',\n description:\n 'Get statistics about an Excel file: sheet count, total rows, columns, and sheet details. Input file must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded Excel file',\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await excel.getStats(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_excel_sheets',\n description:\n 'List all sheets in an Excel file with their names, row counts, and column counts. Input file must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: {\n type: 'string',\n description: 'Base64-encoded Excel file',\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await excel.getSheets(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_excel_create',\n description:\n 'Create an Excel file from JSON data. Returns the file as base64-encoded XLSX.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n data: {\n type: 'string',\n description: 'JSON string of an array of objects to convert to Excel',\n },\n sheetName: {\n type: 'string',\n description: 'Name for the worksheet (default: Sheet1)',\n },\n },\n required: ['data'],\n },\n handler: async (args: Record<string, unknown>) => {\n const data = JSON.parse(args.data as string) as Record<string, unknown>[];\n const result = await excel.createExcel(data, args.sheetName as string);\n return {\n content: [\n {\n type: 'text' as const,\n text: Buffer.from(result).toString('base64'),\n },\n ],\n };\n },\n },\n];\n","import sharp from 'sharp';\nimport type { ResizeOptions } from './types';\n\nexport async function resize(\n file: Buffer | Uint8Array,\n options: ResizeOptions\n): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file))\n .resize({\n width: options.width,\n height: options.height,\n fit: options.fit ?? 'inside',\n background: options.background ?? '#ffffff',\n })\n .toBuffer();\n\n return new Uint8Array(result);\n}\n","import sharp from 'sharp';\nimport type { CropOptions, RotateOptions } from './types';\n\nexport async function crop(\n file: Buffer | Uint8Array,\n options: CropOptions\n): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file))\n .extract({\n left: options.left,\n top: options.top,\n width: options.width,\n height: options.height,\n })\n .toBuffer();\n\n return new Uint8Array(result);\n}\n\nexport async function rotate(\n file: Buffer | Uint8Array,\n options: RotateOptions\n): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file))\n .rotate(options.degrees, {\n background: options.background ?? '#ffffff',\n })\n .toBuffer();\n\n return new Uint8Array(result);\n}\n\nexport async function flip(file: Buffer | Uint8Array): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file)).flip().toBuffer();\n return new Uint8Array(result);\n}\n\nexport async function flop(file: Buffer | Uint8Array): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file)).flop().toBuffer();\n return new Uint8Array(result);\n}\n\nexport async function grayscale(file: Buffer | Uint8Array): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file)).grayscale().toBuffer();\n return new Uint8Array(result);\n}\n\nexport async function blur(\n file: Buffer | Uint8Array,\n sigma: number = 3\n): Promise<Uint8Array> {\n const result = await sharp(Buffer.from(file)).blur(sigma).toBuffer();\n return new Uint8Array(result);\n}\n","import sharp from 'sharp';\nimport type { ConvertOptions, CompressOptions } from './types';\n\nexport async function convert(\n file: Buffer | Uint8Array,\n options: ConvertOptions\n): Promise<Uint8Array> {\n let pipeline = sharp(Buffer.from(file));\n\n switch (options.format) {\n case 'png':\n pipeline = pipeline.png();\n break;\n case 'jpeg':\n pipeline = pipeline.jpeg({ quality: options.quality ?? 80 });\n break;\n case 'webp':\n pipeline = pipeline.webp({ quality: options.quality ?? 80 });\n break;\n case 'gif':\n pipeline = pipeline.gif();\n break;\n case 'tiff':\n pipeline = pipeline.tiff({ quality: options.quality ?? 80 });\n break;\n case 'avif':\n pipeline = pipeline.avif({ quality: options.quality ?? 50 });\n break;\n default:\n throw new Error(`Unsupported format: ${options.format}`);\n }\n\n const result = await pipeline.toBuffer();\n return new Uint8Array(result);\n}\n\nexport async function compress(\n file: Buffer | Uint8Array,\n options: CompressOptions = {}\n): Promise<Uint8Array> {\n const quality = options.quality ?? 70;\n const format = options.format ?? 'jpeg';\n\n return convert(file, { format, quality });\n}\n","import sharp from 'sharp';\nimport type { ImageMetadata, ImageStats } from './types';\n\nexport async function getMetadata(\n file: Buffer | Uint8Array\n): Promise<ImageMetadata> {\n const meta = await sharp(Buffer.from(file)).metadata();\n\n return {\n width: meta.width ?? 0,\n height: meta.height ?? 0,\n format: meta.format ?? 'unknown',\n channels: meta.channels ?? 0,\n space: meta.space ?? 'unknown',\n depth: meta.depth ?? 'unknown',\n density: meta.density,\n hasAlpha: meta.hasAlpha ?? false,\n sizeBytes: file.length,\n };\n}\n\nexport async function getStats(\n file: Buffer | Uint8Array\n): Promise<ImageStats> {\n const meta = await sharp(Buffer.from(file)).metadata();\n\n const width = meta.width ?? 0;\n const height = meta.height ?? 0;\n\n return {\n width,\n height,\n format: meta.format ?? 'unknown',\n channels: meta.channels ?? 0,\n hasAlpha: meta.hasAlpha ?? false,\n sizeBytes: file.length,\n megapixels: Math.round((width * height) / 10000) / 100,\n };\n}\n","import * as image from '../image';\nimport type { McpTool } from './index';\n\nexport const imageTools: McpTool[] = [\n {\n name: 'agent_tools_image_resize',\n description:\n 'Resize an image to specified dimensions. Supports fit modes: cover, contain, fill, inside, outside. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n width: { type: 'number', description: 'Target width in pixels' },\n height: { type: 'number', description: 'Target height in pixels' },\n fit: {\n type: 'string',\n enum: ['cover', 'contain', 'fill', 'inside', 'outside'],\n description: 'How to fit the image (default: inside)',\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.resize(buffer, {\n width: args.width as number,\n height: args.height as number,\n fit: args.fit as image.ResizeOptions['fit'],\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_image_crop',\n description: 'Crop an image to a specified rectangle. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n left: { type: 'number', description: 'Left offset in pixels' },\n top: { type: 'number', description: 'Top offset in pixels' },\n width: { type: 'number', description: 'Crop width in pixels' },\n height: { type: 'number', description: 'Crop height in pixels' },\n },\n required: ['file', 'left', 'top', 'width', 'height'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.crop(buffer, {\n left: args.left as number,\n top: args.top as number,\n width: args.width as number,\n height: args.height as number,\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_image_convert',\n description:\n 'Convert an image to a different format: png, jpeg, webp, gif, tiff, avif. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n format: {\n type: 'string',\n enum: ['png', 'jpeg', 'webp', 'gif', 'tiff', 'avif'],\n description: 'Target image format',\n },\n quality: {\n type: 'number',\n description: 'Quality for lossy formats 1-100 (default: 80)',\n },\n },\n required: ['file', 'format'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.convert(buffer, {\n format: args.format as image.ImageFormat,\n quality: args.quality as number,\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_image_compress',\n description:\n 'Compress an image to reduce file size. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n quality: {\n type: 'number',\n description: 'Compression quality 1-100 (default: 70)',\n },\n format: {\n type: 'string',\n enum: ['png', 'jpeg', 'webp', 'gif', 'tiff', 'avif'],\n description: 'Output format (default: jpeg)',\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.compress(buffer, {\n quality: args.quality as number,\n format: args.format as image.ImageFormat,\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_image_rotate',\n description: 'Rotate an image by a specified number of degrees. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n degrees: { type: 'number', description: 'Rotation angle in degrees' },\n },\n required: ['file', 'degrees'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.rotate(buffer, {\n degrees: args.degrees as number,\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_image_metadata',\n description:\n 'Get metadata from an image: dimensions, format, channels, color space, DPI, alpha channel. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.getMetadata(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_image_grayscale',\n description: 'Convert an image to grayscale. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded image file' },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await image.grayscale(buffer);\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n];\n","import { marked } from 'marked';\nimport TurndownService from 'turndown';\nimport type { MarkdownConvertOptions } from './types';\n\nexport function convert(\n input: string,\n options: MarkdownConvertOptions\n): string {\n const { from, to } = options;\n\n if (from === to) return input;\n\n if (from === 'markdown' && to === 'html') {\n return markdownToHtml(input, options.gfm);\n }\n\n if (from === 'html' && to === 'markdown') {\n return htmlToMarkdown(input);\n }\n\n if (from === 'markdown' && to === 'text') {\n return markdownToText(input);\n }\n\n if (from === 'html' && to === 'text') {\n return htmlToText(input);\n }\n\n if (from === 'text' && to === 'markdown') {\n return input;\n }\n\n if (from === 'text' && to === 'html') {\n return `<p>${input.split('\\n\\n').join('</p><p>')}</p>`;\n }\n\n throw new Error(`Unsupported conversion: ${from} -> ${to}`);\n}\n\nfunction markdownToHtml(input: string, gfm = true): string {\n marked.setOptions({ gfm });\n return marked.parse(input) as string;\n}\n\nfunction htmlToMarkdown(input: string): string {\n const turndown = new TurndownService({\n headingStyle: 'atx',\n codeBlockStyle: 'fenced',\n bulletListMarker: '-',\n });\n return turndown.turndown(input);\n}\n\nfunction markdownToText(input: string): string {\n const html = markdownToHtml(input);\n return htmlToText(html);\n}\n\nfunction htmlToText(input: string): string {\n return input\n .replace(/<script[^>]*>[\\s\\S]*?<\\/script>/gi, '')\n .replace(/<style[^>]*>[\\s\\S]*?<\\/style>/gi, '')\n .replace(/<[^>]+>/g, '')\n .replace(/ /g, ' ')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n}\n","import type { MarkdownTocEntry } from './types';\n\nexport function generateToc(input: string): MarkdownTocEntry[] {\n const headingRegex = /^(#{1,6})\\s+(.+)$/gm;\n const entries: MarkdownTocEntry[] = [];\n let match;\n\n while ((match = headingRegex.exec(input)) !== null) {\n const level = match[1].length;\n const text = match[2].trim();\n const slug = text\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-');\n\n entries.push({ level, text, slug });\n }\n\n return entries;\n}\n\nexport function renderToc(entries: MarkdownTocEntry[]): string {\n if (entries.length === 0) return '';\n\n const minLevel = Math.min(...entries.map((e) => e.level));\n\n return entries\n .map((entry) => {\n const indent = ' '.repeat(entry.level - minLevel);\n return `${indent}- [${entry.text}](#${entry.slug})`;\n })\n .join('\\n');\n}\n","import type { MarkdownLinkInfo, MarkdownFrontmatter } from './types';\n\nexport function extractLinks(input: string): MarkdownLinkInfo[] {\n const links: MarkdownLinkInfo[] = [];\n const lines = input.split('\\n');\n const linkRegex = /\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\n\n for (let i = 0; i < lines.length; i++) {\n let match;\n while ((match = linkRegex.exec(lines[i])) !== null) {\n links.push({\n text: match[1],\n href: match[2],\n line: i + 1,\n });\n }\n }\n\n return links;\n}\n\nexport function extractFrontmatter(input: string): MarkdownFrontmatter | null {\n const match = input.match(/^---\\s*\\n([\\s\\S]*?)\\n---\\s*\\n/);\n if (!match) return null;\n\n const frontmatter: MarkdownFrontmatter = {};\n const lines = match[1].split('\\n');\n\n for (const line of lines) {\n const colonIndex = line.indexOf(':');\n if (colonIndex === -1) continue;\n\n const key = line.substring(0, colonIndex).trim();\n let value: unknown = line.substring(colonIndex + 1).trim();\n\n if (value === 'true') value = true;\n else if (value === 'false') value = false;\n else if (!isNaN(Number(value)) && value !== '') value = Number(value);\n else if (typeof value === 'string' && value.startsWith('[') && value.endsWith(']')) {\n value = value\n .slice(1, -1)\n .split(',')\n .map((s: string) => s.trim().replace(/^['\"]|['\"]$/g, ''));\n }\n\n frontmatter[key] = value;\n }\n\n return frontmatter;\n}\n\nexport function stripFrontmatter(input: string): string {\n return input.replace(/^---\\s*\\n[\\s\\S]*?\\n---\\s*\\n/, '');\n}\n","import type { MarkdownStats } from './types';\n\nexport function getStats(input: string): MarkdownStats {\n const lines = input.split('\\n');\n const text = input.replace(/```[\\s\\S]*?```/g, '').replace(/`[^`]+`/g, '');\n\n const headings = (text.match(/^#{1,6}\\s+.+$/gm) || []).length;\n const links = (input.match(/\\[([^\\]]*)\\]\\(([^)]+)\\)/g) || []).length;\n const images = (input.match(/!\\[([^\\]]*)\\]\\(([^)]+)\\)/g) || []).length;\n const codeBlocks = (input.match(/```/g) || []).length / 2;\n const lists = (text.match(/^[\\s]*[-*+]\\s+|^[\\s]*\\d+\\.\\s+/gm) || []).length;\n\n const plainText = text\n .replace(/#{1,6}\\s+/g, '')\n .replace(/\\[([^\\]]*)\\]\\([^)]+\\)/g, '$1')\n .replace(/[*_~`]/g, '')\n .trim();\n\n const words = plainText.split(/\\s+/).filter((w) => w.length > 0).length;\n const paragraphs = input.split(/\\n\\s*\\n/).filter((p) => p.trim().length > 0).length;\n\n return {\n words,\n characters: input.length,\n lines: lines.length,\n paragraphs,\n headings,\n links,\n images,\n codeBlocks: Math.floor(codeBlocks),\n lists,\n sizeBytes: Buffer.byteLength(input, 'utf8'),\n };\n}\n","import * as markdown from '../markdown';\nimport type { McpTool } from './index';\n\nexport const markdownTools: McpTool[] = [\n {\n name: 'agent_tools_markdown_convert',\n description:\n 'Convert between Markdown, HTML, and plain text formats. Supports GitHub Flavored Markdown.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Input text to convert' },\n from: {\n type: 'string',\n enum: ['markdown', 'html', 'text'],\n description: 'Source format',\n },\n to: {\n type: 'string',\n enum: ['markdown', 'html', 'text'],\n description: 'Target format',\n },\n gfm: {\n type: 'boolean',\n description: 'Enable GitHub Flavored Markdown (default: true)',\n },\n },\n required: ['input', 'from', 'to'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = markdown.convert(args.input as string, {\n from: args.from as markdown.MarkdownConvertFormat,\n to: args.to as markdown.MarkdownConvertFormat,\n gfm: args.gfm as boolean,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_markdown_toc',\n description:\n 'Generate a table of contents from a Markdown document. Returns structured heading entries with levels and slugs.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Markdown text' },\n render: {\n type: 'boolean',\n description: 'Return rendered Markdown TOC instead of JSON (default: false)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const entries = markdown.generateToc(args.input as string);\n if (args.render) {\n const rendered = markdown.renderToc(entries);\n return { content: [{ type: 'text' as const, text: rendered }] };\n }\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(entries, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_markdown_links',\n description:\n 'Extract all links from a Markdown document. Returns link text, URL, and line number for each link.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Markdown text' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = markdown.extractLinks(args.input as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_markdown_frontmatter',\n description:\n 'Extract YAML frontmatter from a Markdown document. Parses key-value pairs from the --- delimited header.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Markdown text with frontmatter' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = markdown.extractFrontmatter(args.input as string);\n return {\n content: [\n {\n type: 'text' as const,\n text: result ? JSON.stringify(result, null, 2) : 'No frontmatter found',\n },\n ],\n };\n },\n },\n {\n name: 'agent_tools_markdown_stats',\n description:\n 'Get statistics about a Markdown document: word count, headings, links, images, code blocks, lists, and more.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Markdown text to analyze' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = markdown.getStats(args.input as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import archiver from 'archiver';\nimport { PassThrough } from 'stream';\nimport type { ArchiveCreateOptions, ArchiveFile } from './types';\n\nexport async function create(\n files: ArchiveFile[],\n options: ArchiveCreateOptions = {}\n): Promise<Uint8Array> {\n const format = options.format ?? 'zip';\n const level = options.compressionLevel ?? 6;\n\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n const output = new PassThrough();\n\n output.on('data', (chunk: Buffer) => chunks.push(chunk));\n output.on('end', () => resolve(new Uint8Array(Buffer.concat(chunks))));\n output.on('error', reject);\n\n const archiverFormat = format === 'tar.gz' ? 'tar' : format;\n const archiverOptions =\n format === 'tar.gz'\n ? { gzip: true, gzipOptions: { level } }\n : format === 'zip'\n ? { zlib: { level } }\n : {};\n\n const archive = archiver(archiverFormat as 'zip' | 'tar', archiverOptions);\n archive.on('error', reject);\n archive.pipe(output);\n\n for (const file of files) {\n archive.append(file.content, { name: file.path });\n }\n\n archive.finalize();\n });\n}\n","import AdmZip from 'adm-zip';\nimport type { ArchiveFile, ArchiveExtractOptions } from './types';\n\nexport async function extract(\n file: Buffer | Uint8Array,\n options: ArchiveExtractOptions = {}\n): Promise<ArchiveFile[]> {\n const zip = new AdmZip(Buffer.from(file));\n const entries = zip.getEntries();\n const results: ArchiveFile[] = [];\n\n for (const entry of entries) {\n if (entry.isDirectory) continue;\n\n if (options.files && !options.files.includes(entry.entryName)) {\n continue;\n }\n\n results.push({\n path: entry.entryName,\n content: entry.getData(),\n });\n }\n\n return results;\n}\n","import AdmZip from 'adm-zip';\nimport type { ArchiveEntry, ArchiveStats } from './types';\n\nexport async function list(\n file: Buffer | Uint8Array\n): Promise<ArchiveEntry[]> {\n const zip = new AdmZip(Buffer.from(file));\n const entries = zip.getEntries();\n\n return entries.map((entry) => ({\n path: entry.entryName,\n size: entry.header.size,\n compressedSize: entry.header.compressedSize,\n isDirectory: entry.isDirectory,\n modified: entry.header.time ? new Date(entry.header.time).toISOString() : undefined,\n }));\n}\n\nexport async function getStats(\n file: Buffer | Uint8Array\n): Promise<ArchiveStats> {\n const entries = await list(file);\n\n let totalSize = 0;\n let compressedSize = 0;\n let fileCount = 0;\n let directoryCount = 0;\n\n for (const entry of entries) {\n if (entry.isDirectory) {\n directoryCount++;\n } else {\n fileCount++;\n totalSize += entry.size;\n compressedSize += entry.compressedSize ?? entry.size;\n }\n }\n\n return {\n format: 'zip',\n fileCount,\n directoryCount,\n totalSize,\n compressedSize,\n entries,\n };\n}\n","import * as archive from '../archive';\nimport type { McpTool } from './index';\n\nexport const archiveTools: McpTool[] = [\n {\n name: 'agent_tools_archive_create',\n description:\n 'Create a ZIP archive from a list of files. Each file needs a path and base64-encoded content. Returns the archive as base64.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n files: {\n type: 'array',\n description:\n 'Array of files to add. Each item: { path: string, content: string (base64) }',\n items: {\n type: 'object',\n properties: {\n path: { type: 'string', description: 'File path within archive' },\n content: { type: 'string', description: 'Base64-encoded file content' },\n },\n required: ['path', 'content'],\n },\n },\n compressionLevel: {\n type: 'number',\n description: 'Compression level 0-9 (default: 6)',\n },\n },\n required: ['files'],\n },\n handler: async (args: Record<string, unknown>) => {\n const files = (args.files as { path: string; content: string }[]).map((f) => ({\n path: f.path,\n content: Buffer.from(f.content, 'base64'),\n }));\n const result = await archive.create(files, {\n compressionLevel: args.compressionLevel as number,\n });\n return {\n content: [{ type: 'text' as const, text: Buffer.from(result).toString('base64') }],\n };\n },\n },\n {\n name: 'agent_tools_archive_extract',\n description:\n 'Extract files from a ZIP archive. Returns extracted files with paths and base64-encoded content. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded ZIP file' },\n files: {\n type: 'array',\n description: 'Optional list of specific file paths to extract',\n items: { type: 'string' },\n },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await archive.extract(buffer, {\n files: args.files as string[],\n });\n const output = result.map((f) => ({\n path: f.path,\n content: f.content.toString('base64'),\n size: f.content.length,\n }));\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(output, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_archive_list',\n description:\n 'List contents of a ZIP archive without extracting. Returns file paths, sizes, and modification dates. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded ZIP file' },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await archive.list(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_archive_stats',\n description:\n 'Get statistics about a ZIP archive: file count, directory count, total size, compressed size. Input must be base64-encoded.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n file: { type: 'string', description: 'Base64-encoded ZIP file' },\n },\n required: ['file'],\n },\n handler: async (args: Record<string, unknown>) => {\n const buffer = Buffer.from(args.file as string, 'base64');\n const result = await archive.getStats(buffer);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import type { RegexOptions } from './types';\n\nexport function buildFlags(options: RegexOptions): string {\n let flags = options.flags ?? '';\n\n if (options.global && !flags.includes('g')) flags += 'g';\n if (options.caseInsensitive && !flags.includes('i')) flags += 'i';\n if (options.multiline && !flags.includes('m')) flags += 'm';\n\n return flags;\n}\n","import type { RegexTestResult, RegexMatch, RegexOptions } from './types';\nimport { buildFlags } from './utils';\n\nexport function test(\n input: string,\n pattern: string,\n options: RegexOptions = {}\n): RegexTestResult {\n const flags = buildFlags(options);\n const regex = new RegExp(pattern, flags.includes('g') ? flags : flags + 'g');\n const results: RegexMatch[] = [];\n let match;\n\n while ((match = regex.exec(input)) !== null) {\n results.push({\n match: match[0],\n index: match.index,\n groups: match.groups ? { ...match.groups } : {},\n });\n\n if (!flags.includes('g')) break;\n }\n\n return {\n matches: results.length > 0,\n matchCount: results.length,\n results,\n };\n}\n","import type { RegexReplaceResult, RegexOptions } from './types';\nimport { buildFlags } from './utils';\n\nexport function replace(\n input: string,\n pattern: string,\n replacement: string,\n options: RegexOptions = {}\n): RegexReplaceResult {\n const flags = buildFlags({ ...options, global: options.global ?? true });\n const regex = new RegExp(pattern, flags);\n\n let replacements = 0;\n const output = input.replace(regex, (...args) => {\n replacements++;\n const groups = args[args.length - 1];\n let result = replacement;\n\n if (typeof groups === 'object' && groups !== null) {\n for (const [key, value] of Object.entries(groups)) {\n result = result.replace(new RegExp(`\\\\$<${key}>`, 'g'), String(value ?? ''));\n }\n }\n\n for (let i = 1; i < args.length - 2; i++) {\n result = result.replace(new RegExp(`\\\\$${i}`, 'g'), args[i] ?? '');\n }\n\n return result;\n });\n\n return { output, replacements };\n}\n","import type { RegexExtractResult, RegexOptions } from './types';\nimport { buildFlags } from './utils';\n\nexport function extract(\n input: string,\n pattern: string,\n options: RegexOptions = {}\n): RegexExtractResult {\n const flags = buildFlags({ ...options, global: true });\n const regex = new RegExp(pattern, flags);\n const matches: string[] = [];\n const groups: Record<string, string>[] = [];\n let match;\n\n while ((match = regex.exec(input)) !== null) {\n matches.push(match[0]);\n if (match.groups) {\n groups.push({ ...match.groups });\n }\n }\n\n return {\n matches,\n groups,\n count: matches.length,\n };\n}\n","import type { RegexValidationResult } from './types';\n\nexport function validate(pattern: string, flags?: string): RegexValidationResult {\n try {\n new RegExp(pattern, flags);\n return { valid: true };\n } catch (e) {\n return {\n valid: false,\n error: (e as Error).message,\n };\n }\n}\n","import * as regex from '../regex';\nimport type { McpTool } from './index';\n\nexport const regexTools: McpTool[] = [\n {\n name: 'agent_tools_regex_test',\n description:\n 'Test a regex pattern against input text. Returns all matches with positions and named groups.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Text to search' },\n pattern: { type: 'string', description: 'Regular expression pattern' },\n flags: {\n type: 'string',\n description: 'Regex flags (e.g., \"gi\" for global case-insensitive)',\n },\n caseInsensitive: {\n type: 'boolean',\n description: 'Case-insensitive matching (default: false)',\n },\n multiline: {\n type: 'boolean',\n description: 'Multiline mode (default: false)',\n },\n },\n required: ['input', 'pattern'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = regex.test(args.input as string, args.pattern as string, {\n flags: args.flags as string,\n caseInsensitive: args.caseInsensitive as boolean,\n multiline: args.multiline as boolean,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_regex_replace',\n description:\n 'Replace matches of a regex pattern in text. Supports backreferences ($1, $2) and named groups ($<name>).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Text to process' },\n pattern: { type: 'string', description: 'Regular expression pattern' },\n replacement: {\n type: 'string',\n description: 'Replacement string (supports $1, $<name> backreferences)',\n },\n flags: { type: 'string', description: 'Regex flags' },\n global: {\n type: 'boolean',\n description: 'Replace all matches (default: true)',\n },\n },\n required: ['input', 'pattern', 'replacement'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = regex.replace(\n args.input as string,\n args.pattern as string,\n args.replacement as string,\n {\n flags: args.flags as string,\n global: args.global as boolean,\n }\n );\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_regex_extract',\n description:\n 'Extract all matches of a regex pattern from text. Returns matched strings and named groups.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Text to search' },\n pattern: { type: 'string', description: 'Regular expression pattern' },\n flags: { type: 'string', description: 'Regex flags' },\n caseInsensitive: {\n type: 'boolean',\n description: 'Case-insensitive matching',\n },\n },\n required: ['input', 'pattern'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = regex.extract(args.input as string, args.pattern as string, {\n flags: args.flags as string,\n caseInsensitive: args.caseInsensitive as boolean,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_regex_validate',\n description:\n 'Validate a regex pattern for syntax correctness. Returns whether the pattern is valid with error details.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n pattern: { type: 'string', description: 'Regular expression pattern to validate' },\n flags: { type: 'string', description: 'Optional regex flags to validate' },\n },\n required: ['pattern'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = regex.validate(args.pattern as string, args.flags as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import {\n diffLines,\n diffWords,\n diffChars,\n type Change,\n} from 'diff';\nimport type { DiffOptions, DiffResult, DiffChange } from './types';\n\nexport function compare(\n a: string,\n b: string,\n options: DiffOptions = {}\n): DiffResult {\n const type = options.type ?? 'line';\n\n let rawChanges: Change[];\n\n switch (type) {\n case 'word':\n rawChanges = diffWords(a, b, {\n ignoreWhitespace: options.ignoreWhitespace,\n });\n break;\n case 'char':\n rawChanges = diffChars(a, b);\n break;\n case 'line':\n default:\n rawChanges = diffLines(a, b, {\n ignoreWhitespace: options.ignoreWhitespace,\n });\n break;\n }\n\n const changes: DiffChange[] = rawChanges.map((c) => ({\n type: c.added ? 'added' : c.removed ? 'removed' : 'unchanged',\n value: c.value,\n count: c.count ?? 0,\n }));\n\n let additions = 0;\n let deletions = 0;\n let unchanged = 0;\n\n for (const change of changes) {\n switch (change.type) {\n case 'added':\n additions += change.count;\n break;\n case 'removed':\n deletions += change.count;\n break;\n case 'unchanged':\n unchanged += change.count;\n break;\n }\n }\n\n return {\n identical: additions === 0 && deletions === 0,\n changes,\n stats: { additions, deletions, unchanged },\n };\n}\n","import { createTwoFilesPatch, createPatch } from 'diff';\nimport type { UnifiedDiffOptions } from './types';\n\nexport function unifiedDiff(\n a: string,\n b: string,\n options: UnifiedDiffOptions = {}\n): string {\n const fromFile = options.fromFile ?? 'a';\n const toFile = options.toFile ?? 'b';\n const context = options.context ?? 3;\n\n return createTwoFilesPatch(fromFile, toFile, a, b, undefined, undefined, {\n context,\n });\n}\n\nexport function createUnifiedPatch(\n fileName: string,\n original: string,\n modified: string,\n context: number = 3\n): string {\n return createPatch(fileName, original, modified, undefined, undefined, {\n context,\n });\n}\n","import { applyPatch, parsePatch } from 'diff';\nimport type { PatchOptions } from './types';\n\nexport function apply(\n input: string,\n patch: string,\n options: PatchOptions = {}\n): string {\n const result = applyPatch(input, patch, {\n fuzzFactor: options.fuzz ?? 0,\n });\n\n if (result === false) {\n throw new Error('Failed to apply patch: patch does not match the input');\n }\n\n return result;\n}\n\nexport function parsePatchFile(patch: string) {\n return parsePatch(patch);\n}\n","import * as diff from '../diff';\nimport type { McpTool } from './index';\n\nexport const diffTools: McpTool[] = [\n {\n name: 'agent_tools_diff_compare',\n description:\n 'Compare two texts and return their differences. Supports line, word, and character-level diffing.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n a: { type: 'string', description: 'First text (original)' },\n b: { type: 'string', description: 'Second text (modified)' },\n type: {\n type: 'string',\n enum: ['line', 'word', 'char'],\n description: 'Diff granularity (default: line)',\n },\n ignoreWhitespace: {\n type: 'boolean',\n description: 'Ignore whitespace differences (default: false)',\n },\n },\n required: ['a', 'b'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = diff.compare(args.a as string, args.b as string, {\n type: args.type as diff.DiffType,\n ignoreWhitespace: args.ignoreWhitespace as boolean,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_diff_unified',\n description:\n 'Generate a unified diff (patch format) between two texts. Compatible with git diff output.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n a: { type: 'string', description: 'Original text' },\n b: { type: 'string', description: 'Modified text' },\n fromFile: {\n type: 'string',\n description: 'Original file name (default: \"a\")',\n },\n toFile: {\n type: 'string',\n description: 'Modified file name (default: \"b\")',\n },\n context: {\n type: 'number',\n description: 'Number of context lines (default: 3)',\n },\n },\n required: ['a', 'b'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = diff.unifiedDiff(args.a as string, args.b as string, {\n fromFile: args.fromFile as string,\n toFile: args.toFile as string,\n context: args.context as number,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_diff_apply',\n description:\n 'Apply a unified diff patch to a text. Use to transform text using a previously generated patch.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Original text' },\n patch: { type: 'string', description: 'Unified diff patch to apply' },\n fuzz: {\n type: 'number',\n description: 'Fuzz factor for approximate matching (default: 0)',\n },\n },\n required: ['input', 'patch'],\n },\n handler: async (args: Record<string, unknown>) => {\n try {\n const result = diff.apply(args.input as string, args.patch as string, {\n fuzz: args.fuzz as number,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return {\n isError: true,\n content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }],\n };\n }\n },\n },\n];\n","import { format as sqlFormat } from 'sql-formatter';\nimport type { SqlFormatOptions } from './types';\n\nconst dialectMap: Record<string, string> = {\n mysql: 'mysql',\n postgresql: 'postgresql',\n sqlite: 'sqlite',\n transactsql: 'transactsql',\n bigquery: 'bigquery',\n};\n\nexport function format(input: string, options: SqlFormatOptions = {}): string {\n const language = dialectMap[options.dialect ?? 'postgresql'] ?? 'postgresql';\n\n return sqlFormat(input, {\n language: language as 'mysql' | 'postgresql' | 'sqlite' | 'transactsql' | 'bigquery',\n tabWidth: options.indent ?? 2,\n useTabs: false,\n keywordCase: options.uppercase !== false ? 'upper' : 'preserve',\n linesBetweenQueries: options.linesBetweenQueries ?? 2,\n });\n}\n\nexport function minify(input: string): string {\n return input\n .replace(/--.*$/gm, '')\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\s+/g, ' ')\n .replace(/\\s*([,;()=<>+\\-*/])\\s*/g, '$1')\n .trim();\n}\n","import { Parser } from 'node-sql-parser';\nimport type { SqlDialect, SqlParseResult, SqlValidationResult, SqlStats } from './types';\n\nconst parserDialectMap: Record<SqlDialect, string> = {\n mysql: 'MySQL',\n postgresql: 'PostgresQL',\n sqlite: 'SQLite',\n transactsql: 'TransactSQL',\n bigquery: 'BigQuery',\n};\n\nexport function parse(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlParseResult {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n const ast = parser.astify(input, { database: dbType });\n\n const stmts = Array.isArray(ast) ? ast : [ast];\n const tables = new Set<string>();\n const columns = new Set<string>();\n\n for (const stmt of stmts) {\n extractTablesAndColumns(stmt, tables, columns);\n }\n\n return {\n type: stmts[0]?.type ?? 'unknown',\n tables: Array.from(tables),\n columns: Array.from(columns),\n ast,\n };\n}\n\nexport function validate(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlValidationResult {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n\n try {\n const ast = parser.astify(input, { database: dbType });\n return { valid: true, ast };\n } catch (e) {\n return {\n valid: false,\n error: (e as Error).message,\n };\n }\n}\n\nexport function getStats(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlStats {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n\n const ast = parser.astify(input, { database: dbType });\n const stmts = Array.isArray(ast) ? ast : [ast];\n\n const queryTypes: Record<string, number> = {};\n const tables = new Set<string>();\n let joins = 0;\n\n for (const stmt of stmts) {\n const type = (stmt.type ?? 'unknown').toLowerCase();\n queryTypes[type] = (queryTypes[type] || 0) + 1;\n extractTablesAndColumns(stmt, tables, new Set());\n\n const stmtStr = JSON.stringify(stmt);\n const joinMatches = stmtStr.match(/\"join\"/gi);\n if (joinMatches) joins += joinMatches.length;\n }\n\n const subqueryRegex = /\\bSELECT\\b/gi;\n const selectMatches = input.match(subqueryRegex);\n const subqueries = Math.max(0, (selectMatches?.length ?? 0) - stmts.filter((s) => s.type === 'select').length);\n\n return {\n queryCount: stmts.length,\n queryTypes,\n tables: Array.from(tables),\n joins,\n subqueries,\n };\n}\n\nfunction extractTablesAndColumns(\n node: unknown,\n tables: Set<string>,\n columns: Set<string>\n): void {\n if (!node || typeof node !== 'object') return;\n\n const obj = node as Record<string, unknown>;\n\n if (obj.table && typeof obj.table === 'string') {\n tables.add(obj.table);\n }\n\n if (obj.from && Array.isArray(obj.from)) {\n for (const item of obj.from) {\n if (item && typeof item === 'object' && 'table' in item) {\n tables.add(String(item.table));\n }\n }\n }\n\n if (obj.columns && Array.isArray(obj.columns)) {\n for (const col of obj.columns) {\n if (col && typeof col === 'object' && 'expr' in col) {\n const expr = col.expr as Record<string, unknown>;\n if (expr.type === 'column_ref' && typeof expr.column === 'string') {\n columns.add(expr.column);\n }\n }\n }\n }\n\n for (const value of Object.values(obj)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n extractTablesAndColumns(item, tables, columns);\n }\n } else if (typeof value === 'object' && value !== null) {\n extractTablesAndColumns(value, tables, columns);\n }\n }\n}\n","import { Parser } from 'node-sql-parser';\nimport type { SqlConvertOptions, SqlDialect } from './types';\n\nconst parserDialectMap: Record<SqlDialect, string> = {\n mysql: 'MySQL',\n postgresql: 'PostgresQL',\n sqlite: 'SQLite',\n transactsql: 'TransactSQL',\n bigquery: 'BigQuery',\n};\n\nexport function convert(\n input: string,\n options: SqlConvertOptions\n): string {\n const fromDialect = parserDialectMap[options.from ?? 'postgresql'] ?? 'PostgresQL';\n const toDialect = parserDialectMap[options.to] ?? 'PostgresQL';\n\n const parser = new Parser();\n const ast = parser.astify(input, { database: fromDialect });\n return parser.sqlify(ast, { database: toDialect });\n}\n","import * as sql from '../sql';\nimport type { McpTool } from './index';\n\nexport const sqlTools: McpTool[] = [\n {\n name: 'agent_tools_sql_format',\n description:\n 'Format SQL queries with configurable dialect, indentation, and keyword casing. Supports MySQL, PostgreSQL, SQLite, TransactSQL, BigQuery.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL query to format' },\n dialect: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'SQL dialect (default: postgresql)',\n },\n indent: {\n type: 'number',\n description: 'Indentation spaces (default: 2)',\n },\n uppercase: {\n type: 'boolean',\n description: 'Uppercase SQL keywords (default: true)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.format(args.input as string, {\n dialect: args.dialect as sql.SqlDialect,\n indent: args.indent as number,\n uppercase: args.uppercase as boolean,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_sql_minify',\n description: 'Minify SQL by removing comments and excess whitespace.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL query to minify' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.minify(args.input as string);\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_sql_parse',\n description:\n 'Parse a SQL query into an AST. Returns query type, referenced tables, and columns.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL query to parse' },\n dialect: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'SQL dialect (default: postgresql)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.parse(args.input as string, args.dialect as sql.SqlDialect);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_sql_validate',\n description:\n 'Validate SQL syntax. Returns whether the query is syntactically correct with error details.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL query to validate' },\n dialect: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'SQL dialect (default: postgresql)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.validate(args.input as string, args.dialect as sql.SqlDialect);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_sql_convert',\n description:\n 'Convert SQL between dialects (MySQL, PostgreSQL, SQLite, TransactSQL, BigQuery).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL query to convert' },\n from: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'Source dialect',\n },\n to: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'Target dialect',\n },\n },\n required: ['input', 'to'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.convert(args.input as string, {\n from: args.from as sql.SqlDialect,\n to: args.to as sql.SqlDialect,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_sql_stats',\n description:\n 'Analyze SQL queries. Returns query count, types, referenced tables, joins, and subqueries.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'SQL queries to analyze' },\n dialect: {\n type: 'string',\n enum: ['mysql', 'postgresql', 'sqlite', 'transactsql', 'bigquery'],\n description: 'SQL dialect (default: postgresql)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = sql.getStats(args.input as string, args.dialect as sql.SqlDialect);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { createHash, createHmac, randomUUID } from 'crypto';\nimport type { HashAlgorithm, HashResult, HmacOptions, HmacResult, ChecksumResult, UuidResult } from './types';\n\nexport function hash(\n input: string,\n algorithm: HashAlgorithm = 'sha256'\n): HashResult {\n const h = createHash(algorithm).update(input).digest('hex');\n return {\n algorithm,\n hash: h,\n inputLength: input.length,\n };\n}\n\nexport function hmac(\n input: string,\n key: string,\n options: HmacOptions = {}\n): HmacResult {\n const algorithm = options.algorithm ?? 'sha256';\n const h = createHmac(algorithm, key).update(input).digest('hex');\n return {\n algorithm,\n hmac: h,\n };\n}\n\nexport function checksum(\n data: Buffer | Uint8Array | string,\n algorithm: HashAlgorithm = 'sha256'\n): ChecksumResult {\n const buffer = typeof data === 'string' ? Buffer.from(data) : Buffer.from(data);\n const h = createHash(algorithm).update(buffer).digest('hex');\n return {\n algorithm,\n checksum: h,\n sizeBytes: buffer.length,\n };\n}\n\nexport function generateUuid(): UuidResult {\n // Use Web Crypto API in browser, Node.js crypto otherwise\n let uuid: string;\n if (typeof globalThis.crypto?.randomUUID === 'function') {\n uuid = globalThis.crypto.randomUUID();\n } else {\n uuid = randomUUID();\n }\n return {\n uuid,\n version: 4,\n };\n}\n","import type { EncodingFormat } from './types';\n\nexport function encode(input: string, format: EncodingFormat): string {\n switch (format) {\n case 'base64':\n return Buffer.from(input).toString('base64');\n case 'hex':\n return Buffer.from(input).toString('hex');\n case 'url':\n return encodeURIComponent(input);\n case 'html':\n return input\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n default:\n throw new Error(`Unsupported encoding format: ${format}`);\n }\n}\n\nexport function decode(input: string, format: EncodingFormat): string {\n switch (format) {\n case 'base64':\n return Buffer.from(input, 'base64').toString('utf8');\n case 'hex':\n return Buffer.from(input, 'hex').toString('utf8');\n case 'url':\n return decodeURIComponent(input);\n case 'html':\n return input\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace(/>/g, '>')\n .replace(/</g, '<')\n .replace(/&/g, '&');\n default:\n throw new Error(`Unsupported encoding format: ${format}`);\n }\n}\n","import type { JwtPayload } from './types';\n\nfunction base64UrlDecode(str: string): string {\n // Replace base64url characters with standard base64\n let base64 = str.replace(/-/g, '+').replace(/_/g, '/');\n // Add padding if needed\n const padding = base64.length % 4;\n if (padding) {\n base64 += '='.repeat(4 - padding);\n }\n // Use atob for browser, Buffer for Node.js\n if (typeof atob === 'function') {\n return decodeURIComponent(\n atob(base64)\n .split('')\n .map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join('')\n );\n }\n return Buffer.from(base64, 'base64').toString('utf8');\n}\n\nexport function decodeJwt(token: string): JwtPayload {\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw new Error('Invalid JWT: must have 3 parts separated by dots');\n }\n\n const header = JSON.parse(base64UrlDecode(parts[0])) as Record<string, unknown>;\n\n const payload = JSON.parse(base64UrlDecode(parts[1])) as Record<string, unknown>;\n\n const result: JwtPayload = {\n header,\n payload,\n signature: parts[2],\n };\n\n if (typeof payload.exp === 'number') {\n const expDate = new Date(payload.exp * 1000);\n result.expired = expDate < new Date();\n result.expiresAt = expDate.toISOString();\n }\n\n return result;\n}\n","import * as cryptoTools from '../crypto';\nimport type { McpTool } from './index';\n\nexport const cryptoMcpTools: McpTool[] = [\n {\n name: 'agent_tools_crypto_hash',\n description:\n 'Hash a string using MD5, SHA-1, SHA-256, SHA-384, or SHA-512. Returns the hex digest.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'String to hash' },\n algorithm: {\n type: 'string',\n enum: ['md5', 'sha1', 'sha256', 'sha384', 'sha512'],\n description: 'Hash algorithm (default: sha256)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = cryptoTools.hash(\n args.input as string,\n args.algorithm as cryptoTools.HashAlgorithm\n );\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_crypto_hmac',\n description:\n 'Generate an HMAC (Hash-based Message Authentication Code) for a string with a secret key.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Message to authenticate' },\n key: { type: 'string', description: 'Secret key for HMAC' },\n algorithm: {\n type: 'string',\n enum: ['md5', 'sha1', 'sha256', 'sha384', 'sha512'],\n description: 'Hash algorithm (default: sha256)',\n },\n },\n required: ['input', 'key'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = cryptoTools.hmac(args.input as string, args.key as string, {\n algorithm: args.algorithm as cryptoTools.HashAlgorithm,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_crypto_encode',\n description:\n 'Encode a string to Base64, Hex, URL-encoded, or HTML-encoded format.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'String to encode' },\n format: {\n type: 'string',\n enum: ['base64', 'hex', 'url', 'html'],\n description: 'Encoding format',\n },\n },\n required: ['input', 'format'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = cryptoTools.encode(\n args.input as string,\n args.format as cryptoTools.EncodingFormat\n );\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_crypto_decode',\n description:\n 'Decode a string from Base64, Hex, URL-encoded, or HTML-encoded format.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Encoded string to decode' },\n format: {\n type: 'string',\n enum: ['base64', 'hex', 'url', 'html'],\n description: 'Encoding format to decode from',\n },\n },\n required: ['input', 'format'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = cryptoTools.decode(\n args.input as string,\n args.format as cryptoTools.EncodingFormat\n );\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_crypto_jwt_decode',\n description:\n 'Decode a JWT token without verification. Returns header, payload, signature, and expiration status.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n token: { type: 'string', description: 'JWT token to decode' },\n },\n required: ['token'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = cryptoTools.decodeJwt(args.token as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_crypto_uuid',\n description: 'Generate a new UUID v4.',\n inputSchema: {\n type: 'object' as const,\n properties: {},\n required: [],\n },\n handler: async () => {\n const result = cryptoTools.generateUuid();\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_crypto_checksum',\n description:\n 'Calculate the checksum of data. Useful for verifying file integrity. Accepts text or base64-encoded binary.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'Text or base64-encoded data' },\n algorithm: {\n type: 'string',\n enum: ['md5', 'sha1', 'sha256', 'sha384', 'sha512'],\n description: 'Hash algorithm (default: sha256)',\n },\n base64: {\n type: 'boolean',\n description: 'Whether input is base64-encoded binary (default: false)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const data = args.base64\n ? Buffer.from(args.input as string, 'base64')\n : (args.input as string);\n const result = cryptoTools.checksum(data, args.algorithm as cryptoTools.HashAlgorithm);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import { DateTime } from 'luxon';\nimport type { DateTimeInfo, DateTimeFormatOptions } from './types';\n\nexport function parseDate(\n input: string,\n timezone?: string\n): DateTimeInfo {\n let dt: DateTime;\n\n const unixNum = Number(input);\n if (!isNaN(unixNum) && String(unixNum) === input.trim()) {\n dt = unixNum > 1e12\n ? DateTime.fromMillis(unixNum, { zone: timezone ?? 'utc' })\n : DateTime.fromSeconds(unixNum, { zone: timezone ?? 'utc' });\n } else {\n dt = DateTime.fromISO(input, { zone: timezone ?? 'utc' });\n if (!dt.isValid) {\n dt = DateTime.fromRFC2822(input, { zone: timezone ?? 'utc' });\n }\n if (!dt.isValid) {\n dt = DateTime.fromSQL(input, { zone: timezone ?? 'utc' });\n }\n }\n\n if (!dt.isValid) {\n throw new Error(`Unable to parse date: ${input} (${dt.invalidReason})`);\n }\n\n return {\n iso: dt.toISO()!,\n unix: Math.floor(dt.toSeconds()),\n unixMs: dt.toMillis(),\n year: dt.year,\n month: dt.month,\n day: dt.day,\n hour: dt.hour,\n minute: dt.minute,\n second: dt.second,\n dayOfWeek: dt.weekdayLong!,\n dayOfYear: dt.ordinal,\n weekNumber: dt.weekNumber,\n isLeapYear: dt.isInLeapYear,\n timezone: dt.zoneName!,\n offset: dt.toFormat('ZZ'),\n };\n}\n\nexport function formatDate(\n input: string,\n options: DateTimeFormatOptions = {}\n): string {\n const tz = options.timezone ?? 'utc';\n let dt = DateTime.fromISO(input, { zone: tz });\n if (!dt.isValid) {\n dt = DateTime.fromMillis(Number(input), { zone: tz });\n }\n\n if (!dt.isValid) {\n throw new Error(`Unable to parse date: ${input}`);\n }\n\n if (options.format) {\n return dt.toFormat(options.format);\n }\n\n return dt.toISO()!;\n}\n\nexport function now(timezone?: string): DateTimeInfo {\n const dt = DateTime.now().setZone(timezone ?? 'utc');\n return parseDate(dt.toISO()!, timezone);\n}\n","import { DateTime } from 'luxon';\nimport type { DateTimeAddOptions, DateTimeDiffResult } from './types';\n\nexport function add(\n input: string,\n amount: DateTimeAddOptions,\n timezone?: string\n): string {\n const dt = DateTime.fromISO(input, { zone: timezone ?? 'utc' });\n if (!dt.isValid) {\n throw new Error(`Unable to parse date: ${input}`);\n }\n\n const result = dt.plus(amount);\n return result.toISO()!;\n}\n\nexport function subtract(\n input: string,\n amount: DateTimeAddOptions,\n timezone?: string\n): string {\n const dt = DateTime.fromISO(input, { zone: timezone ?? 'utc' });\n if (!dt.isValid) {\n throw new Error(`Unable to parse date: ${input}`);\n }\n\n const result = dt.minus(amount);\n return result.toISO()!;\n}\n\nexport function diff(\n a: string,\n b: string\n): DateTimeDiffResult {\n const dtA = DateTime.fromISO(a, { zone: 'utc' });\n const dtB = DateTime.fromISO(b, { zone: 'utc' });\n\n if (!dtA.isValid || !dtB.isValid) {\n throw new Error('Unable to parse one or both dates');\n }\n\n const duration = dtB.diff(dtA, [\n 'years',\n 'months',\n 'days',\n 'hours',\n 'minutes',\n 'seconds',\n ]);\n\n const totalMs = dtB.toMillis() - dtA.toMillis();\n\n return {\n years: Math.floor(duration.years),\n months: Math.floor(duration.months),\n days: Math.floor(duration.days),\n hours: Math.floor(duration.hours),\n minutes: Math.floor(duration.minutes),\n seconds: Math.floor(duration.seconds),\n totalDays: Math.floor(totalMs / 86400000),\n totalHours: Math.floor(totalMs / 3600000),\n totalMinutes: Math.floor(totalMs / 60000),\n totalSeconds: Math.floor(totalMs / 1000),\n totalMilliseconds: totalMs,\n };\n}\n","import { DateTime } from 'luxon';\nimport type { TimezoneConvertResult } from './types';\n\nexport function convertTimezone(\n input: string,\n fromTimezone: string,\n toTimezone: string\n): TimezoneConvertResult {\n const dtFrom = DateTime.fromISO(input, { zone: fromTimezone });\n if (!dtFrom.isValid) {\n throw new Error(`Unable to parse date: ${input} in timezone ${fromTimezone}`);\n }\n\n const dtTo = dtFrom.setZone(toTimezone);\n if (!dtTo.isValid) {\n throw new Error(`Invalid target timezone: ${toTimezone}`);\n }\n\n const offsetFrom = dtFrom.offset;\n const offsetTo = dtTo.offset;\n const diffMinutes = offsetTo - offsetFrom;\n const sign = diffMinutes >= 0 ? '+' : '-';\n const absMinutes = Math.abs(diffMinutes);\n const hours = Math.floor(absMinutes / 60);\n const minutes = absMinutes % 60;\n\n return {\n input: dtFrom.toISO()!,\n inputTimezone: fromTimezone,\n output: dtTo.toISO()!,\n outputTimezone: toTimezone,\n offsetDifference: `${sign}${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`,\n };\n}\n\nexport function listTimezones(): string[] {\n return Intl.supportedValuesOf('timeZone');\n}\n","import type { CronParseResult } from './types';\n\nconst _FIELD_NAMES = ['minute', 'hour', 'day of month', 'month', 'day of week'];\nconst MONTH_NAMES = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\nconst DAY_NAMES = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport function parseCron(expression: string, count: number = 5): CronParseResult {\n const parts = expression.trim().split(/\\s+/);\n\n if (parts.length !== 5) {\n return {\n valid: false,\n description: '',\n nextRuns: [],\n error: `Expected 5 fields, got ${parts.length}`,\n };\n }\n\n try {\n const description = describeCron(parts);\n const nextRuns = getNextRuns(parts, count);\n\n return {\n valid: true,\n description,\n nextRuns: nextRuns.map((d) => d.toISOString()),\n };\n } catch (e) {\n return {\n valid: false,\n description: '',\n nextRuns: [],\n error: (e as Error).message,\n };\n }\n}\n\nfunction describeCron(parts: string[]): string {\n const [min, hour, dom, month, dow] = parts;\n const segments: string[] = [];\n\n if (min === '*' && hour === '*' && dom === '*' && month === '*' && dow === '*') {\n return 'Every minute';\n }\n\n if (min !== '*') segments.push(`at minute ${min}`);\n if (hour !== '*') segments.push(`at hour ${hour}`);\n if (dom !== '*') segments.push(`on day ${dom} of the month`);\n if (month !== '*') {\n const m = parseInt(month);\n segments.push(`in ${!isNaN(m) && m >= 1 && m <= 12 ? MONTH_NAMES[m] : month}`);\n }\n if (dow !== '*') {\n const d = parseInt(dow);\n segments.push(`on ${!isNaN(d) && d >= 0 && d <= 6 ? DAY_NAMES[d] : dow}`);\n }\n\n return segments.join(', ') || 'Every minute';\n}\n\nfunction getNextRuns(parts: string[], count: number): Date[] {\n const runs: Date[] = [];\n const now = new Date();\n const current = new Date(now);\n current.setSeconds(0, 0);\n current.setMinutes(current.getMinutes() + 1);\n\n const maxIterations = 525600;\n let iterations = 0;\n\n while (runs.length < count && iterations < maxIterations) {\n if (matchesCron(current, parts)) {\n runs.push(new Date(current));\n }\n current.setMinutes(current.getMinutes() + 1);\n iterations++;\n }\n\n return runs;\n}\n\nfunction matchesCron(date: Date, parts: string[]): boolean {\n const [minExpr, hourExpr, domExpr, monthExpr, dowExpr] = parts;\n\n return (\n matchesField(date.getMinutes(), minExpr, 0, 59) &&\n matchesField(date.getHours(), hourExpr, 0, 23) &&\n matchesField(date.getDate(), domExpr, 1, 31) &&\n matchesField(date.getMonth() + 1, monthExpr, 1, 12) &&\n matchesField(date.getDay(), dowExpr, 0, 6)\n );\n}\n\nfunction matchesField(value: number, expr: string, min: number, max: number): boolean {\n if (expr === '*') return true;\n\n for (const part of expr.split(',')) {\n if (part.includes('/')) {\n const [range, stepStr] = part.split('/');\n const step = parseInt(stepStr);\n const start = range === '*' ? min : parseInt(range);\n for (let i = start; i <= max; i += step) {\n if (i === value) return true;\n }\n } else if (part.includes('-')) {\n const [startStr, endStr] = part.split('-');\n const start = parseInt(startStr);\n const end = parseInt(endStr);\n if (value >= start && value <= end) return true;\n } else {\n if (parseInt(part) === value) return true;\n }\n }\n\n return false;\n}\n","import * as datetime from '../datetime';\nimport type { McpTool } from './index';\n\nexport const datetimeTools: McpTool[] = [\n {\n name: 'agent_tools_datetime_parse',\n description:\n 'Parse a date string (ISO, Unix timestamp, RFC 2822, SQL) into a structured object with year, month, day, timezone, and more.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'Date string or Unix timestamp to parse',\n },\n timezone: {\n type: 'string',\n description: 'Timezone to interpret the date in (default: utc)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.parseDate(args.input as string, args.timezone as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_datetime_format',\n description:\n 'Format a date string using a Luxon format pattern. Supports timezone conversion.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'ISO date string to format' },\n format: {\n type: 'string',\n description: 'Luxon format pattern (e.g., \"yyyy-MM-dd HH:mm:ss\")',\n },\n timezone: {\n type: 'string',\n description: 'Target timezone (default: utc)',\n },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.formatDate(args.input as string, {\n format: args.format as string,\n timezone: args.timezone as string,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_datetime_now',\n description: 'Get the current date and time with full details in a specified timezone.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n timezone: {\n type: 'string',\n description: 'Timezone (default: utc)',\n },\n },\n required: [],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.now(args.timezone as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_datetime_add',\n description:\n 'Add time to a date. Specify years, months, weeks, days, hours, minutes, and/or seconds to add.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'ISO date string' },\n years: { type: 'number', description: 'Years to add' },\n months: { type: 'number', description: 'Months to add' },\n weeks: { type: 'number', description: 'Weeks to add' },\n days: { type: 'number', description: 'Days to add' },\n hours: { type: 'number', description: 'Hours to add' },\n minutes: { type: 'number', description: 'Minutes to add' },\n seconds: { type: 'number', description: 'Seconds to add' },\n timezone: { type: 'string', description: 'Timezone' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.add(\n args.input as string,\n {\n years: args.years as number,\n months: args.months as number,\n weeks: args.weeks as number,\n days: args.days as number,\n hours: args.hours as number,\n minutes: args.minutes as number,\n seconds: args.seconds as number,\n },\n args.timezone as string\n );\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_datetime_subtract',\n description:\n 'Subtract time from a date. Specify years, months, weeks, days, hours, minutes, and/or seconds to subtract.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'ISO date string' },\n years: { type: 'number', description: 'Years to subtract' },\n months: { type: 'number', description: 'Months to subtract' },\n weeks: { type: 'number', description: 'Weeks to subtract' },\n days: { type: 'number', description: 'Days to subtract' },\n hours: { type: 'number', description: 'Hours to subtract' },\n minutes: { type: 'number', description: 'Minutes to subtract' },\n seconds: { type: 'number', description: 'Seconds to subtract' },\n timezone: { type: 'string', description: 'Timezone' },\n },\n required: ['input'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.subtract(\n args.input as string,\n {\n years: args.years as number,\n months: args.months as number,\n weeks: args.weeks as number,\n days: args.days as number,\n hours: args.hours as number,\n minutes: args.minutes as number,\n seconds: args.seconds as number,\n },\n args.timezone as string\n );\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_datetime_diff',\n description:\n 'Calculate the difference between two dates. Returns years, months, days, hours, minutes, seconds and totals.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n a: { type: 'string', description: 'First date (ISO string)' },\n b: { type: 'string', description: 'Second date (ISO string)' },\n },\n required: ['a', 'b'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.diff(args.a as string, args.b as string);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_datetime_timezone_convert',\n description:\n 'Convert a date from one timezone to another. Returns the converted date with offset information.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: { type: 'string', description: 'ISO date string' },\n from: { type: 'string', description: 'Source timezone (e.g., \"America/New_York\")' },\n to: { type: 'string', description: 'Target timezone (e.g., \"Asia/Tokyo\")' },\n },\n required: ['input', 'from', 'to'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.convertTimezone(\n args.input as string,\n args.from as string,\n args.to as string\n );\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_datetime_cron',\n description:\n 'Parse a cron expression. Returns a human-readable description and the next scheduled run times.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n expression: {\n type: 'string',\n description: 'Cron expression (5 fields: min hour dom month dow)',\n },\n count: {\n type: 'number',\n description: 'Number of next run times to return (default: 5)',\n },\n },\n required: ['expression'],\n },\n handler: async (args: Record<string, unknown>) => {\n const result = datetime.parseCron(\n args.expression as string,\n args.count as number\n );\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_datetime_timezones',\n description: 'List all available IANA timezone names.',\n inputSchema: {\n type: 'object' as const,\n properties: {},\n required: [],\n },\n handler: async () => {\n const result = datetime.listTimezones();\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import type { CaseType } from './types';\n\nfunction splitWords(input: string): string[] {\n // Split by camelCase boundaries, spaces, hyphens, underscores\n return input\n // Insert separator before uppercase letters that follow lowercase letters (camelCase boundary)\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n // Insert separator before uppercase letters followed by lowercase (e.g. \"HTMLParser\" -> \"HTML Parser\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n // Replace hyphens and underscores with spaces\n .replace(/[-_]/g, ' ')\n // Split on whitespace\n .split(/\\s+/)\n // Filter out empty strings\n .filter((word) => word.length > 0);\n}\n\nfunction capitalize(word: string): string {\n return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n}\n\nexport function convertCase(input: string, to: CaseType): string {\n const words = splitWords(input);\n\n if (words.length === 0) {\n return '';\n }\n\n switch (to) {\n case 'camel':\n return words\n .map((word, index) => (index === 0 ? word.toLowerCase() : capitalize(word)))\n .join('');\n\n case 'pascal':\n return words.map((word) => capitalize(word)).join('');\n\n case 'snake':\n return words.map((word) => word.toLowerCase()).join('_');\n\n case 'kebab':\n return words.map((word) => word.toLowerCase()).join('-');\n\n case 'constant':\n return words.map((word) => word.toUpperCase()).join('_');\n\n case 'title':\n return words.map((word) => capitalize(word)).join(' ');\n\n case 'sentence':\n return words\n .map((word, index) => (index === 0 ? capitalize(word) : word.toLowerCase()))\n .join(' ');\n\n case 'upper':\n return words.map((word) => word.toUpperCase()).join(' ');\n\n case 'lower':\n return words.map((word) => word.toLowerCase()).join(' ');\n }\n}\n","export function slugify(input: string, separator: string = '-'): string {\n return input\n // Convert to lowercase\n .toLowerCase()\n // Replace non-alphanumeric chars with separator\n .replace(/[^a-z0-9]+/g, separator)\n // Collapse multiple separators\n .replace(new RegExp(`${escapeRegExp(separator)}+`, 'g'), separator)\n // Trim separators from ends\n .replace(new RegExp(`^${escapeRegExp(separator)}|${escapeRegExp(separator)}$`, 'g'), '');\n}\n\nfunction escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","import type { TextStats } from './types';\n\nexport function getTextStats(input: string): TextStats {\n const characters = input.length;\n\n const words = input\n .split(/\\s+/)\n .filter((word) => word.length > 0);\n\n const sentences = input\n .split(/[.!?](?:\\s|$)/)\n .filter((sentence) => sentence.trim().length > 0);\n\n const paragraphs = input\n .split(/\\n\\n+/)\n .filter((paragraph) => paragraph.trim().length > 0);\n\n const lines = input.split(/\\n/);\n\n // 200 words per minute average reading speed\n const readingTimeMs = (words.length / 200) * 60 * 1000;\n\n return {\n characters,\n words: words.length,\n sentences: sentences.length,\n paragraphs: paragraphs.length,\n lines: lines.length,\n readingTimeMs,\n };\n}\n","import type { TruncateOptions } from './types';\n\nexport function truncate(input: string, options: TruncateOptions): string {\n const { length, boundary = 'word', suffix = '...' } = options;\n\n if (input.length <= length) {\n return input;\n }\n\n const maxContentLength = length - suffix.length;\n\n if (maxContentLength <= 0) {\n return suffix.slice(0, length);\n }\n\n if (boundary === 'character') {\n return input.slice(0, maxContentLength) + suffix;\n }\n\n // Word boundary: find last space before maxContentLength\n const truncated = input.slice(0, maxContentLength);\n const lastSpaceIndex = truncated.lastIndexOf(' ');\n\n if (lastSpaceIndex === -1) {\n // No space found, fall back to character boundary\n return truncated + suffix;\n }\n\n return input.slice(0, lastSpaceIndex) + suffix;\n}\n","const LOREM_WORDS = [\n 'lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipiscing', 'elit',\n 'sed', 'do', 'eiusmod', 'tempor', 'incididunt', 'ut', 'labore', 'et', 'dolore',\n 'magna', 'aliqua', 'enim', 'ad', 'minim', 'veniam', 'quis', 'nostrud',\n 'exercitation', 'ullamco', 'laboris', 'nisi', 'aliquip', 'ex', 'ea', 'commodo',\n 'consequat', 'duis', 'aute', 'irure', 'in', 'reprehenderit', 'voluptate',\n 'velit', 'esse', 'cillum', 'fugiat', 'nulla', 'pariatur', 'excepteur', 'sint',\n 'occaecat', 'cupidatat',\n];\n\nfunction getWord(index: number): string {\n return LOREM_WORDS[index % LOREM_WORDS.length];\n}\n\nfunction generateSentence(wordOffset: number): { sentence: string; nextOffset: number } {\n // Generate a sentence with 8-15 words\n const wordCount = 8 + (wordOffset % 8); // Deterministic 8-15 range\n const words: string[] = [];\n\n for (let i = 0; i < wordCount; i++) {\n words.push(getWord(wordOffset + i));\n }\n\n // Capitalize first word\n words[0] = words[0].charAt(0).toUpperCase() + words[0].slice(1);\n\n return {\n sentence: words.join(' ') + '.',\n nextOffset: wordOffset + wordCount,\n };\n}\n\nexport function generateLorem(\n count: number,\n unit: 'words' | 'sentences' | 'paragraphs' = 'words',\n): string {\n if (count <= 0) {\n return '';\n }\n\n if (unit === 'words') {\n const words: string[] = [];\n for (let i = 0; i < count; i++) {\n words.push(getWord(i));\n }\n return words.join(' ');\n }\n\n if (unit === 'sentences') {\n const sentences: string[] = [];\n let offset = 0;\n for (let i = 0; i < count; i++) {\n const { sentence, nextOffset } = generateSentence(offset);\n sentences.push(sentence);\n offset = nextOffset;\n }\n return sentences.join(' ');\n }\n\n // paragraphs\n const paragraphs: string[] = [];\n let offset = 0;\n\n for (let i = 0; i < count; i++) {\n const sentenceCount = 3 + (i % 4); // Deterministic 3-6 range\n const sentences: string[] = [];\n\n for (let j = 0; j < sentenceCount; j++) {\n const { sentence, nextOffset } = generateSentence(offset);\n sentences.push(sentence);\n offset = nextOffset;\n }\n\n paragraphs.push(sentences.join(' '));\n }\n\n return paragraphs.join('\\n\\n');\n}\n","import type { SimilarityResult } from './types';\n\nexport function similarity(a: string, b: string): SimilarityResult {\n // Handle edge cases\n if (a === b) {\n return { distance: 0, similarity: 1.0 };\n }\n\n if (a.length === 0) {\n return { distance: b.length, similarity: 0 };\n }\n\n if (b.length === 0) {\n return { distance: a.length, similarity: 0 };\n }\n\n // Wagner-Fischer algorithm for Levenshtein distance\n const m = a.length;\n const n = b.length;\n\n // Create a 2D matrix (m+1) x (n+1)\n const dp: number[][] = [];\n\n for (let i = 0; i <= m; i++) {\n dp[i] = new Array(n + 1);\n dp[i][0] = i;\n }\n\n for (let j = 0; j <= n; j++) {\n dp[0][j] = j;\n }\n\n for (let i = 1; i <= m; i++) {\n for (let j = 1; j <= n; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n dp[i][j] = Math.min(\n dp[i - 1][j] + 1, // deletion\n dp[i][j - 1] + 1, // insertion\n dp[i - 1][j - 1] + cost, // substitution\n );\n }\n }\n\n const distance = dp[m][n];\n const maxLength = Math.max(m, n);\n const sim = 1 - distance / maxLength;\n\n return { distance, similarity: sim };\n}\n","import type { TemplateResult } from './types';\n\nexport function interpolate(\n template: string,\n variables: Record<string, string>,\n): TemplateResult {\n const missingKeys: string[] = [];\n\n const result = template.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (match, key: string) => {\n if (key in variables) {\n return variables[key];\n }\n missingKeys.push(key);\n return match;\n });\n\n // Deduplicate missing keys while preserving order\n const uniqueMissingKeys = [...new Set(missingKeys)];\n\n return { result, missingKeys: uniqueMissingKeys };\n}\n","import * as text from '../text';\n\nexport const textTools = [\n {\n name: 'agent_tools_text_case',\n description:\n 'Convert text between case formats: camel, snake, kebab, pascal, title, sentence, upper, lower, constant.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The text to convert',\n },\n to: {\n type: 'string',\n enum: ['camel', 'snake', 'kebab', 'pascal', 'title', 'sentence', 'upper', 'lower', 'constant'],\n description: 'Target case format',\n },\n },\n required: ['input', 'to'],\n },\n handler: async (args: { input: string; to: string }) => {\n try {\n const result = text.convertCase(args.input, args.to as text.CaseType);\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_text_slugify',\n description:\n 'Convert text to a URL-friendly slug.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The text to slugify',\n },\n separator: {\n type: 'string',\n description: 'Separator character (default: \"-\")',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string; separator?: string }) => {\n try {\n const result = text.slugify(args.input, args.separator);\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_text_stats',\n description:\n 'Get text statistics: character count, word count, sentence count, paragraph count, lines, and reading time.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The text to analyze',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n const result = text.getTextStats(args.input);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_text_truncate',\n description:\n 'Truncate text to a specified length with word or character boundary.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The text to truncate',\n },\n length: {\n type: 'number',\n description: 'Maximum length',\n },\n boundary: {\n type: 'string',\n enum: ['character', 'word'],\n description: 'Truncation boundary (default: \"word\")',\n },\n suffix: {\n type: 'string',\n description: 'Suffix to append (default: \"...\")',\n },\n },\n required: ['input', 'length'],\n },\n handler: async (args: { input: string; length: number; boundary?: string; suffix?: string }) => {\n try {\n const result = text.truncate(args.input, {\n length: args.length,\n boundary: args.boundary as 'character' | 'word',\n suffix: args.suffix,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_text_lorem',\n description:\n 'Generate Lorem Ipsum placeholder text.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n count: {\n type: 'number',\n description: 'Number of units to generate',\n },\n unit: {\n type: 'string',\n enum: ['words', 'sentences', 'paragraphs'],\n description: 'Unit type (default: \"words\")',\n },\n },\n required: ['count'],\n },\n handler: async (args: { count: number; unit?: string }) => {\n const result = text.generateLorem(args.count, args.unit as 'words' | 'sentences' | 'paragraphs');\n return { content: [{ type: 'text' as const, text: result }] };\n },\n },\n {\n name: 'agent_tools_text_similarity',\n description:\n 'Compare two strings and return Levenshtein distance and similarity ratio (0-1).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n a: {\n type: 'string',\n description: 'First string',\n },\n b: {\n type: 'string',\n description: 'Second string',\n },\n },\n required: ['a', 'b'],\n },\n handler: async (args: { a: string; b: string }) => {\n const result = text.similarity(args.a, args.b);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n {\n name: 'agent_tools_text_template',\n description:\n 'Interpolate variables into a template string using {{key}} syntax. Reports missing keys.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n template: {\n type: 'string',\n description: 'Template string with {{key}} placeholders',\n },\n variables: {\n type: 'object',\n description: 'Key-value pairs for interpolation',\n },\n },\n required: ['template', 'variables'],\n },\n handler: async (args: { template: string; variables: Record<string, string> }) => {\n const result = text.interpolate(args.template, args.variables);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n },\n },\n];\n","import type { UnitCategory, UnitConversionResult } from './types';\n\nconst lengthFactors: Record<string, number> = {\n mm: 0.001,\n cm: 0.01,\n m: 1,\n km: 1000,\n in: 0.0254,\n ft: 0.3048,\n yd: 0.9144,\n mi: 1609.344,\n};\n\nconst weightFactors: Record<string, number> = {\n mg: 0.001,\n g: 1,\n kg: 1000,\n oz: 28.3495,\n lb: 453.592,\n ton: 907185,\n};\n\nconst dataFactors: Record<string, number> = {\n b: 1,\n kb: 1024,\n mb: Math.pow(1024, 2),\n gb: Math.pow(1024, 3),\n tb: Math.pow(1024, 4),\n};\n\nconst temperatureUnits = new Set(['celsius', 'fahrenheit', 'kelvin']);\n\nfunction convertTemperature(value: number, from: string, to: string): number {\n if (from === to) return value;\n\n // Convert to Celsius first\n let celsius: number;\n switch (from) {\n case 'celsius':\n celsius = value;\n break;\n case 'fahrenheit':\n celsius = (value - 32) * 5 / 9;\n break;\n case 'kelvin':\n celsius = value - 273.15;\n break;\n default:\n throw new Error(`Unknown temperature unit: ${from}`);\n }\n\n // Convert from Celsius to target\n switch (to) {\n case 'celsius':\n return celsius;\n case 'fahrenheit':\n return celsius * 9 / 5 + 32;\n case 'kelvin':\n return celsius + 273.15;\n default:\n throw new Error(`Unknown temperature unit: ${to}`);\n }\n}\n\nfunction getFactors(category: UnitCategory): Record<string, number> {\n switch (category) {\n case 'length':\n return lengthFactors;\n case 'weight':\n return weightFactors;\n case 'data':\n return dataFactors;\n default:\n throw new Error(`No conversion factors for category: ${category}`);\n }\n}\n\nexport function convertUnit(\n value: number,\n from: string,\n to: string,\n category: UnitCategory\n): UnitConversionResult {\n const fromLower = from.toLowerCase();\n const toLower = to.toLowerCase();\n\n if (category === 'temperature') {\n if (!temperatureUnits.has(fromLower)) {\n throw new Error(`Unit '${from}' does not belong to category 'temperature'`);\n }\n if (!temperatureUnits.has(toLower)) {\n throw new Error(`Unit '${to}' does not belong to category 'temperature'`);\n }\n const result = convertTemperature(value, fromLower, toLower);\n return { value, from: fromLower, to: toLower, result };\n }\n\n const factors = getFactors(category);\n\n if (!(fromLower in factors)) {\n throw new Error(`Unit '${from}' does not belong to category '${category}'`);\n }\n if (!(toLower in factors)) {\n throw new Error(`Unit '${to}' does not belong to category '${category}'`);\n }\n\n // Convert to base unit, then to target unit\n const baseValue = value * factors[fromLower];\n const result = baseValue / factors[toLower];\n\n return { value, from: fromLower, to: toLower, result };\n}\n","import type { BaseConversionResult, NumberBase } from './types';\n\nconst radixMap: Record<NumberBase, number> = {\n binary: 2,\n octal: 8,\n decimal: 10,\n hex: 16,\n};\n\nexport function convertBase(input: string, fromBase: NumberBase): BaseConversionResult {\n const radix = radixMap[fromBase];\n if (radix === undefined) {\n throw new Error(`Unknown base: ${fromBase}`);\n }\n\n // Strip common prefixes before parsing\n let cleanInput = input.trim();\n if (fromBase === 'binary' && cleanInput.startsWith('0b')) {\n cleanInput = cleanInput.slice(2);\n } else if (fromBase === 'octal' && cleanInput.startsWith('0o')) {\n cleanInput = cleanInput.slice(2);\n } else if (fromBase === 'hex' && cleanInput.startsWith('0x')) {\n cleanInput = cleanInput.slice(2);\n }\n\n const decimalValue = parseInt(cleanInput, radix);\n if (isNaN(decimalValue)) {\n throw new Error(`Invalid input '${input}' for base '${fromBase}'`);\n }\n\n return {\n input,\n fromBase,\n binary: '0b' + decimalValue.toString(2),\n octal: '0o' + decimalValue.toString(8),\n decimal: decimalValue.toString(10),\n hex: '0x' + decimalValue.toString(16),\n };\n}\n","import type { StatisticsResult } from './types';\n\nfunction getPercentile(sorted: number[], p: number): number {\n if (sorted.length === 1) return sorted[0];\n\n const index = (p / 100) * (sorted.length - 1);\n const lower = Math.floor(index);\n const upper = Math.ceil(index);\n\n if (lower === upper) return sorted[lower];\n\n const fraction = index - lower;\n return sorted[lower] + fraction * (sorted[upper] - sorted[lower]);\n}\n\nexport function calculateStats(numbers: number[]): StatisticsResult {\n if (numbers.length === 0) {\n throw new Error('Cannot calculate statistics for an empty array');\n }\n\n const count = numbers.length;\n const sum = numbers.reduce((acc, n) => acc + n, 0);\n const mean = sum / count;\n\n const sorted = [...numbers].sort((a, b) => a - b);\n\n // Median\n let median: number;\n const mid = Math.floor(sorted.length / 2);\n if (sorted.length % 2 === 0) {\n median = (sorted[mid - 1] + sorted[mid]) / 2;\n } else {\n median = sorted[mid];\n }\n\n // Mode\n const frequencyMap = new Map<number, number>();\n for (const n of numbers) {\n frequencyMap.set(n, (frequencyMap.get(n) || 0) + 1);\n }\n let maxFrequency = 0;\n for (const freq of frequencyMap.values()) {\n if (freq > maxFrequency) maxFrequency = freq;\n }\n const mode: number[] = [];\n for (const [value, freq] of frequencyMap.entries()) {\n if (freq === maxFrequency) mode.push(value);\n }\n mode.sort((a, b) => a - b);\n\n const min = sorted[0];\n const max = sorted[sorted.length - 1];\n const range = max - min;\n\n // Variance (population variance)\n const variance = numbers.reduce((acc, n) => acc + Math.pow(n - mean, 2), 0) / count;\n const standardDeviation = Math.sqrt(variance);\n\n // Percentiles using linear interpolation\n const percentiles = {\n p25: getPercentile(sorted, 25),\n p50: getPercentile(sorted, 50),\n p75: getPercentile(sorted, 75),\n p90: getPercentile(sorted, 90),\n p99: getPercentile(sorted, 99),\n };\n\n return {\n count,\n sum,\n mean,\n median,\n mode,\n min,\n max,\n range,\n standardDeviation,\n variance,\n percentiles,\n };\n}\n","import type { NumberFormatOptions } from './types';\n\nexport function formatNumber(value: number, options?: NumberFormatOptions): string {\n const locale = options?.locale ?? 'en-US';\n\n const formatOptions: Intl.NumberFormatOptions = {};\n\n if (options?.style) {\n formatOptions.style = options.style;\n }\n\n if (options?.currency) {\n formatOptions.currency = options.currency;\n }\n\n if (options?.minimumFractionDigits !== undefined) {\n formatOptions.minimumFractionDigits = options.minimumFractionDigits;\n }\n\n if (options?.maximumFractionDigits !== undefined) {\n formatOptions.maximumFractionDigits = options.maximumFractionDigits;\n }\n\n return new Intl.NumberFormat(locale, formatOptions).format(value);\n}\n","import type { PercentageResult, PercentageChangeResult } from './types';\n\nexport function percentage(value: number, total: number): PercentageResult {\n if (total === 0) {\n throw new Error('Total cannot be zero');\n }\n\n const pct = (value / total) * 100;\n\n return {\n value,\n total,\n percentage: pct,\n formatted: `${pct}%`,\n };\n}\n\nexport function percentageChange(from: number, to: number): PercentageChangeResult {\n if (from === 0) {\n throw new Error('Cannot calculate percentage change from zero');\n }\n\n const change = ((to - from) / Math.abs(from)) * 100;\n const sign = change >= 0 ? '+' : '';\n const formatted = `${sign}${change}%`;\n\n return {\n from,\n to,\n change,\n formatted,\n };\n}\n","import * as math from '../math';\n\nexport const mathTools = [\n {\n name: 'agent_tools_math_convert',\n description:\n 'Convert between units of measurement (length, weight, temperature, data).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n value: {\n type: 'number',\n description: 'The numeric value to convert',\n },\n from: {\n type: 'string',\n description: 'Source unit (e.g., \"km\", \"lb\", \"celsius\", \"gb\")',\n },\n to: {\n type: 'string',\n description: 'Target unit (e.g., \"mi\", \"kg\", \"fahrenheit\", \"mb\")',\n },\n category: {\n type: 'string',\n enum: ['length', 'weight', 'temperature', 'data'],\n description: 'Unit category',\n },\n },\n required: ['value', 'from', 'to', 'category'],\n },\n handler: async (args: { value: number; from: string; to: string; category: string }) => {\n try {\n const result = math.convertUnit(args.value, args.from, args.to, args.category as math.UnitCategory);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_math_base',\n description:\n 'Convert numbers between binary, octal, decimal, and hexadecimal bases.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'The number string to convert',\n },\n fromBase: {\n type: 'string',\n enum: ['binary', 'octal', 'decimal', 'hex'],\n description: 'Source number base',\n },\n },\n required: ['input', 'fromBase'],\n },\n handler: async (args: { input: string; fromBase: string }) => {\n try {\n const result = math.convertBase(args.input, args.fromBase as math.NumberBase);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_math_statistics',\n description:\n 'Calculate statistics for a set of numbers: mean, median, mode, std deviation, percentiles.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n numbers: {\n type: 'array',\n items: { type: 'number' },\n description: 'Array of numbers to analyze',\n },\n },\n required: ['numbers'],\n },\n handler: async (args: { numbers: number[] }) => {\n try {\n const result = math.calculateStats(args.numbers);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_math_format',\n description:\n 'Format a number with locale-aware formatting, currency, or percentage display.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n value: {\n type: 'number',\n description: 'The number to format',\n },\n locale: {\n type: 'string',\n description: 'Locale string (default: \"en-US\")',\n },\n style: {\n type: 'string',\n enum: ['decimal', 'currency', 'percent'],\n description: 'Format style (default: \"decimal\")',\n },\n currency: {\n type: 'string',\n description: 'Currency code when style is \"currency\" (e.g., \"USD\")',\n },\n minimumFractionDigits: {\n type: 'number',\n description: 'Minimum decimal places',\n },\n maximumFractionDigits: {\n type: 'number',\n description: 'Maximum decimal places',\n },\n },\n required: ['value'],\n },\n handler: async (args: { value: number; locale?: string; style?: string; currency?: string; minimumFractionDigits?: number; maximumFractionDigits?: number }) => {\n try {\n const result = math.formatNumber(args.value, {\n locale: args.locale,\n style: args.style as 'decimal' | 'currency' | 'percent',\n currency: args.currency,\n minimumFractionDigits: args.minimumFractionDigits,\n maximumFractionDigits: args.maximumFractionDigits,\n });\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_math_percentage',\n description:\n 'Calculate percentages: what percentage a value is of a total, or percentage change between two values.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n action: {\n type: 'string',\n enum: ['of', 'change'],\n description: '\"of\" for value/total percentage, \"change\" for percentage change from/to',\n },\n value: {\n type: 'number',\n description: 'The value (or \"from\" value for change)',\n },\n total: {\n type: 'number',\n description: 'The total (or \"to\" value for change)',\n },\n },\n required: ['action', 'value', 'total'],\n },\n handler: async (args: { action: string; value: number; total: number }) => {\n try {\n if (args.action === 'change') {\n const result = math.percentageChange(args.value, args.total);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n }\n const result = math.percentage(args.value, args.total);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n];\n","import type { RGB, HSL, ColorConversionResult } from './types';\n\nexport function hexToRgb(hex: string): RGB {\n let h = hex.replace(/^#/, '');\n if (h.length === 3) {\n h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];\n }\n if (h.length !== 6) {\n throw new Error(`Invalid hex color: ${hex}`);\n }\n const num = parseInt(h, 16);\n if (isNaN(num)) {\n throw new Error(`Invalid hex color: ${hex}`);\n }\n return {\n r: (num >> 16) & 255,\n g: (num >> 8) & 255,\n b: num & 255,\n };\n}\n\nexport function hslToRgb(h: number, s: number, l: number): RGB {\n const sNorm = s / 100;\n const lNorm = l / 100;\n\n const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm;\n const hPrime = h / 60;\n const x = c * (1 - Math.abs((hPrime % 2) - 1));\n const m = lNorm - c / 2;\n\n let r1 = 0;\n let g1 = 0;\n let b1 = 0;\n\n if (hPrime >= 0 && hPrime < 1) {\n r1 = c; g1 = x; b1 = 0;\n } else if (hPrime >= 1 && hPrime < 2) {\n r1 = x; g1 = c; b1 = 0;\n } else if (hPrime >= 2 && hPrime < 3) {\n r1 = 0; g1 = c; b1 = x;\n } else if (hPrime >= 3 && hPrime < 4) {\n r1 = 0; g1 = x; b1 = c;\n } else if (hPrime >= 4 && hPrime < 5) {\n r1 = x; g1 = 0; b1 = c;\n } else if (hPrime >= 5 && hPrime < 6) {\n r1 = c; g1 = 0; b1 = x;\n }\n\n return {\n r: Math.round((r1 + m) * 255),\n g: Math.round((g1 + m) * 255),\n b: Math.round((b1 + m) * 255),\n };\n}\n\nexport function rgbToHsl(r: number, g: number, b: number): HSL {\n const rNorm = r / 255;\n const gNorm = g / 255;\n const bNorm = b / 255;\n\n const max = Math.max(rNorm, gNorm, bNorm);\n const min = Math.min(rNorm, gNorm, bNorm);\n const delta = max - min;\n\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (delta !== 0) {\n s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n if (max === rNorm) {\n h = ((gNorm - bNorm) / delta + (gNorm < bNorm ? 6 : 0)) * 60;\n } else if (max === gNorm) {\n h = ((bNorm - rNorm) / delta + 2) * 60;\n } else {\n h = ((rNorm - gNorm) / delta + 4) * 60;\n }\n }\n\n return {\n h: Math.round(h),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\nexport function rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number): string => {\n const hex = Math.max(0, Math.min(255, c)).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n return '#' + toHex(r) + toHex(g) + toHex(b);\n}\n\nexport function parseColor(input: string): ColorConversionResult {\n const trimmed = input.trim().toLowerCase();\n\n let rgb: RGB;\n\n // Try hex format\n const hexMatch = trimmed.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/);\n if (hexMatch) {\n rgb = hexToRgb(trimmed);\n }\n // Try rgb() format\n else {\n const rgbMatch = trimmed.match(/^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/);\n if (rgbMatch) {\n rgb = {\n r: Math.min(255, parseInt(rgbMatch[1], 10)),\n g: Math.min(255, parseInt(rgbMatch[2], 10)),\n b: Math.min(255, parseInt(rgbMatch[3], 10)),\n };\n }\n // Try hsl() format\n else {\n const hslMatch = trimmed.match(/^hsl\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*\\)$/);\n if (hslMatch) {\n const h = Math.min(360, parseInt(hslMatch[1], 10));\n const s = Math.min(100, parseInt(hslMatch[2], 10));\n const l = Math.min(100, parseInt(hslMatch[3], 10));\n rgb = hslToRgb(h, s, l);\n } else {\n throw new Error(`Unsupported color format: ${input}`);\n }\n }\n }\n\n const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n const hex = rgbToHex(rgb.r, rgb.g, rgb.b);\n\n return {\n hex,\n rgb: `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,\n hsl: `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`,\n values: {\n rgb,\n hsl,\n },\n };\n}\n","import type { ColorFormat } from './types';\nimport { parseColor } from './parse';\n\nexport function convertColor(input: string, to: ColorFormat): string {\n const result = parseColor(input);\n\n switch (to) {\n case 'hex':\n return result.hex;\n case 'rgb':\n return result.rgb;\n case 'hsl':\n return result.hsl;\n default:\n throw new Error(`Unsupported target format: ${to}`);\n }\n}\n","import type { ContrastResult } from './types';\nimport { parseColor } from './parse';\n\nfunction srgbChannel(c: number): number {\n const normalized = c / 255;\n return normalized <= 0.03928\n ? normalized / 12.92\n : Math.pow((normalized + 0.055) / 1.055, 2.4);\n}\n\nfunction relativeLuminance(r: number, g: number, b: number): number {\n return 0.2126 * srgbChannel(r) + 0.7152 * srgbChannel(g) + 0.0722 * srgbChannel(b);\n}\n\nexport function contrastRatio(color1: string, color2: string): ContrastResult {\n const c1 = parseColor(color1);\n const c2 = parseColor(color2);\n\n const l1 = relativeLuminance(c1.values.rgb.r, c1.values.rgb.g, c1.values.rgb.b);\n const l2 = relativeLuminance(c2.values.rgb.r, c2.values.rgb.g, c2.values.rgb.b);\n\n const lighter = Math.max(l1, l2);\n const darker = Math.min(l1, l2);\n\n const ratio = (lighter + 0.05) / (darker + 0.05);\n const roundedRatio = Math.round(ratio * 100) / 100;\n\n return {\n ratio: roundedRatio,\n formatted: `${roundedRatio.toFixed(2)}:1`,\n aa: {\n normal: roundedRatio >= 4.5,\n large: roundedRatio >= 3,\n },\n aaa: {\n normal: roundedRatio >= 7,\n large: roundedRatio >= 4.5,\n },\n };\n}\n","import type { PaletteOptions, ColorConversionResult } from './types';\nimport { parseColor, hslToRgb, rgbToHsl, rgbToHex } from './parse';\n\nfunction hslToConversionResult(h: number, s: number, l: number): ColorConversionResult {\n const normalizedH = ((h % 360) + 360) % 360;\n const rgb = hslToRgb(normalizedH, s, l);\n const hex = rgbToHex(rgb.r, rgb.g, rgb.b);\n const hslRecalc = rgbToHsl(rgb.r, rgb.g, rgb.b);\n\n return {\n hex,\n rgb: `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,\n hsl: `hsl(${hslRecalc.h}, ${hslRecalc.s}%, ${hslRecalc.l}%)`,\n values: {\n rgb,\n hsl: hslRecalc,\n },\n };\n}\n\nexport function generatePalette(base: string, options: PaletteOptions): ColorConversionResult[] {\n const parsed = parseColor(base);\n const { h, s, l } = parsed.values.hsl;\n const count = options.count ?? 5;\n\n switch (options.type) {\n case 'complementary': {\n return [\n hslToConversionResult(h, s, l),\n hslToConversionResult(h + 180, s, l),\n ];\n }\n\n case 'analogous': {\n const results: ColorConversionResult[] = [];\n const spread = 30;\n const step = (spread * 2) / (count - 1);\n for (let i = 0; i < count; i++) {\n const hue = h - spread + step * i;\n results.push(hslToConversionResult(hue, s, l));\n }\n return results;\n }\n\n case 'triadic': {\n return [\n hslToConversionResult(h, s, l),\n hslToConversionResult(h + 120, s, l),\n hslToConversionResult(h + 240, s, l),\n ];\n }\n\n case 'shades': {\n const results: ColorConversionResult[] = [];\n const minL = 10;\n const step = (l - minL) / (count - 1);\n for (let i = 0; i < count; i++) {\n const lightness = Math.round(l - step * i);\n results.push(hslToConversionResult(h, s, lightness));\n }\n return results;\n }\n\n case 'tints': {\n const results: ColorConversionResult[] = [];\n const maxL = 95;\n const step = (maxL - l) / (count - 1);\n for (let i = 0; i < count; i++) {\n const lightness = Math.round(l + step * i);\n results.push(hslToConversionResult(h, s, lightness));\n }\n return results;\n }\n\n default:\n throw new Error(`Unsupported palette type: ${options.type}`);\n }\n}\n","import type { BlendResult } from './types';\nimport { parseColor, rgbToHex, rgbToHsl } from './parse';\n\nexport function blendColors(color1: string, color2: string, ratio: number = 0.5): BlendResult {\n if (ratio < 0 || ratio > 1) {\n throw new Error(`Ratio must be between 0 and 1, got: ${ratio}`);\n }\n\n const c1 = parseColor(color1);\n const c2 = parseColor(color2);\n\n const r = Math.round(c1.values.rgb.r * (1 - ratio) + c2.values.rgb.r * ratio);\n const g = Math.round(c1.values.rgb.g * (1 - ratio) + c2.values.rgb.g * ratio);\n const b = Math.round(c1.values.rgb.b * (1 - ratio) + c2.values.rgb.b * ratio);\n\n const hex = rgbToHex(r, g, b);\n const hsl = rgbToHsl(r, g, b);\n\n return {\n color: {\n hex,\n rgb: `rgb(${r}, ${g}, ${b})`,\n hsl: `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`,\n values: {\n rgb: { r, g, b },\n hsl,\n },\n },\n ratio,\n };\n}\n","import type { ColorNameResult } from './types';\nimport { parseColor, hexToRgb } from './parse';\n\nconst NAMED_COLORS: Record<string, string> = {\n black: '#000000',\n white: '#FFFFFF',\n red: '#FF0000',\n green: '#008000',\n blue: '#0000FF',\n yellow: '#FFFF00',\n cyan: '#00FFFF',\n magenta: '#FF00FF',\n orange: '#FFA500',\n purple: '#800080',\n pink: '#FFC0CB',\n brown: '#A52A2A',\n gray: '#808080',\n silver: '#C0C0C0',\n maroon: '#800000',\n navy: '#000080',\n teal: '#008080',\n olive: '#808000',\n lime: '#00FF00',\n aqua: '#00FFFF',\n coral: '#FF7F50',\n salmon: '#FA8072',\n gold: '#FFD700',\n khaki: '#F0E68C',\n plum: '#DDA0DD',\n violet: '#EE82EE',\n indigo: '#4B0082',\n beige: '#F5F5DC',\n ivory: '#FFFFF0',\n lavender: '#E6E6FA',\n};\n\nfunction euclideanDistance(r1: number, g1: number, b1: number, r2: number, g2: number, b2: number): number {\n return Math.sqrt(\n Math.pow(r1 - r2, 2) +\n Math.pow(g1 - g2, 2) +\n Math.pow(b1 - b2, 2)\n );\n}\n\nexport function colorName(input: string): ColorNameResult {\n const parsed = parseColor(input);\n const { r, g, b } = parsed.values.rgb;\n\n let closestName = '';\n let closestHex = '';\n let closestDistance = Infinity;\n\n for (const [name, hex] of Object.entries(NAMED_COLORS)) {\n const namedRgb = hexToRgb(hex);\n const distance = euclideanDistance(r, g, b, namedRgb.r, namedRgb.g, namedRgb.b);\n\n if (distance < closestDistance) {\n closestDistance = distance;\n closestName = name;\n closestHex = hex.toLowerCase();\n }\n }\n\n return {\n name: closestName,\n exact: closestDistance === 0,\n hex: closestHex,\n };\n}\n","import * as color from '../color';\n\nexport const colorTools = [\n {\n name: 'agent_tools_color_parse',\n description:\n 'Parse a color string (hex, rgb(), hsl()) and return all format representations.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'Color string to parse (e.g., \"#FF5733\", \"rgb(255,87,51)\", \"hsl(9,100%,60%)\")',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n try {\n const result = color.parseColor(args.input);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_color_convert',\n description:\n 'Convert a color to a specific format (hex, rgb, hsl).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'Color string to convert',\n },\n to: {\n type: 'string',\n enum: ['hex', 'rgb', 'hsl'],\n description: 'Target color format',\n },\n },\n required: ['input', 'to'],\n },\n handler: async (args: { input: string; to: string }) => {\n try {\n const result = color.convertColor(args.input, args.to as color.ColorFormat);\n return { content: [{ type: 'text' as const, text: result }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_color_contrast',\n description:\n 'Calculate WCAG 2.1 contrast ratio between two colors with AA/AAA pass/fail results.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n color1: {\n type: 'string',\n description: 'First color',\n },\n color2: {\n type: 'string',\n description: 'Second color',\n },\n },\n required: ['color1', 'color2'],\n },\n handler: async (args: { color1: string; color2: string }) => {\n try {\n const result = color.contrastRatio(args.color1, args.color2);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_color_palette',\n description:\n 'Generate a color palette from a base color: complementary, analogous, triadic, shades, or tints.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n base: {\n type: 'string',\n description: 'Base color string',\n },\n type: {\n type: 'string',\n enum: ['complementary', 'analogous', 'triadic', 'shades', 'tints'],\n description: 'Palette generation strategy',\n },\n count: {\n type: 'number',\n description: 'Number of colors to generate (default: 5, ignored for complementary/triadic)',\n },\n },\n required: ['base', 'type'],\n },\n handler: async (args: { base: string; type: string; count?: number }) => {\n try {\n const result = color.generatePalette(args.base, {\n type: args.type as color.PaletteType,\n count: args.count,\n });\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_color_blend',\n description:\n 'Blend two colors together at a given ratio.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n color1: {\n type: 'string',\n description: 'First color',\n },\n color2: {\n type: 'string',\n description: 'Second color',\n },\n ratio: {\n type: 'number',\n description: 'Blend ratio 0-1 (0 = all color1, 1 = all color2, default: 0.5)',\n },\n },\n required: ['color1', 'color2'],\n },\n handler: async (args: { color1: string; color2: string; ratio?: number }) => {\n try {\n const result = color.blendColors(args.color1, args.color2, args.ratio);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_color_name',\n description:\n 'Find the nearest CSS named color for a given color input.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n input: {\n type: 'string',\n description: 'Color string to identify',\n },\n },\n required: ['input'],\n },\n handler: async (args: { input: string }) => {\n try {\n const result = color.colorName(args.input);\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n];\n","import type { PhysicalConstant } from './types';\n\nconst CONSTANTS: Record<string, PhysicalConstant> = {\n c: { name: 'Speed of Light', symbol: 'c', value: 299792458, unit: 'm/s', category: 'universal' },\n G: { name: 'Gravitational Constant', symbol: 'G', value: 6.67430e-11, unit: 'N·m²/kg²', category: 'universal' },\n h: { name: 'Planck Constant', symbol: 'h', value: 6.62607015e-34, unit: 'J·s', category: 'quantum' },\n hbar: { name: 'Reduced Planck Constant', symbol: 'ℏ', value: 1.054571817e-34, unit: 'J·s', category: 'quantum' },\n k_B: { name: 'Boltzmann Constant', symbol: 'k_B', value: 1.380649e-23, unit: 'J/K', category: 'thermodynamics' },\n N_A: { name: 'Avogadro Number', symbol: 'N_A', value: 6.02214076e23, unit: '1/mol', category: 'chemistry' },\n R: { name: 'Gas Constant', symbol: 'R', value: 8.314462618, unit: 'J/(mol·K)', category: 'thermodynamics' },\n e: { name: 'Elementary Charge', symbol: 'e', value: 1.602176634e-19, unit: 'C', category: 'electromagnetic' },\n epsilon_0: { name: 'Vacuum Permittivity', symbol: 'ε₀', value: 8.8541878128e-12, unit: 'F/m', category: 'electromagnetic' },\n mu_0: { name: 'Vacuum Permeability', symbol: 'μ₀', value: 1.25663706212e-6, unit: 'N/A²', category: 'electromagnetic' },\n m_e: { name: 'Electron Mass', symbol: 'm_e', value: 9.1093837015e-31, unit: 'kg', category: 'atomic' },\n m_p: { name: 'Proton Mass', symbol: 'm_p', value: 1.67262192369e-27, unit: 'kg', category: 'atomic' },\n sigma: { name: 'Stefan-Boltzmann Constant', symbol: 'σ', value: 5.670374419e-8, unit: 'W/(m²·K⁴)', category: 'thermodynamics' },\n g: { name: 'Standard Gravity', symbol: 'g', value: 9.80665, unit: 'm/s²', category: 'mechanics' },\n atm: { name: 'Standard Atmosphere', symbol: 'atm', value: 101325, unit: 'Pa', category: 'mechanics' },\n k_e: { name: 'Coulomb Constant', symbol: 'k_e', value: 8.9875517923e9, unit: 'N·m²/C²', category: 'electromagnetic' },\n};\n\nexport function getConstant(key: string): PhysicalConstant {\n const c = CONSTANTS[key];\n if (!c) {\n throw new Error(`Unknown constant: ${key}. Available: ${Object.keys(CONSTANTS).join(', ')}`);\n }\n return { ...c };\n}\n\nexport function listConstants(category?: string): PhysicalConstant[] {\n const all = Object.values(CONSTANTS).map((c) => ({ ...c }));\n if (category) {\n return all.filter((c) => c.category === category);\n }\n return all;\n}\n","import type { KinematicsResult, ProjectileResult } from './types';\n\nexport function solveKinematics(params: {\n displacement?: number;\n initialVelocity?: number;\n finalVelocity?: number;\n acceleration?: number;\n time?: number;\n}): KinematicsResult {\n const known = Object.entries(params).filter(([, v]) => v !== undefined);\n if (known.length < 3) {\n throw new Error('Need at least 3 of: displacement, initialVelocity, finalVelocity, acceleration, time');\n }\n\n let { displacement, initialVelocity, finalVelocity, acceleration, time } = params;\n\n // Solve for initialVelocity first (before displacement) so that\n // cases like (v, a, t) can derive u, then use u to find s.\n if (initialVelocity === undefined) {\n if (finalVelocity !== undefined && acceleration !== undefined && time !== undefined) {\n initialVelocity = finalVelocity - acceleration * time;\n } else if (displacement !== undefined && time !== undefined && acceleration !== undefined) {\n initialVelocity = (displacement - 0.5 * acceleration * time * time) / time;\n } else if (finalVelocity !== undefined && acceleration !== undefined && displacement !== undefined) {\n initialVelocity = Math.sqrt(finalVelocity * finalVelocity - 2 * acceleration * displacement);\n }\n // If still undefined, displacement section may resolve it later\n }\n\n if (displacement === undefined) {\n if (initialVelocity !== undefined && time !== undefined && acceleration !== undefined) {\n displacement = initialVelocity * time + 0.5 * acceleration * time * time;\n } else if (initialVelocity !== undefined && finalVelocity !== undefined && time !== undefined) {\n displacement = ((initialVelocity + finalVelocity) / 2) * time;\n } else if (finalVelocity !== undefined && initialVelocity !== undefined && acceleration !== undefined) {\n displacement = (finalVelocity * finalVelocity - initialVelocity * initialVelocity) / (2 * acceleration);\n } else {\n throw new Error('Cannot solve for displacement with the given parameters');\n }\n }\n\n // Re-check initialVelocity now that displacement may be known\n if (initialVelocity === undefined) {\n if (displacement !== undefined && time !== undefined && acceleration !== undefined) {\n initialVelocity = (displacement - 0.5 * acceleration * time * time) / time;\n } else if (finalVelocity !== undefined && acceleration !== undefined && displacement !== undefined) {\n initialVelocity = Math.sqrt(finalVelocity * finalVelocity - 2 * acceleration * displacement);\n } else {\n throw new Error('Cannot solve for initialVelocity with the given parameters');\n }\n }\n\n if (finalVelocity === undefined) {\n if (initialVelocity !== undefined && acceleration !== undefined && time !== undefined) {\n finalVelocity = initialVelocity + acceleration * time;\n } else if (initialVelocity !== undefined && acceleration !== undefined && displacement !== undefined) {\n finalVelocity = Math.sqrt(initialVelocity * initialVelocity + 2 * acceleration * displacement);\n } else {\n throw new Error('Cannot solve for finalVelocity with the given parameters');\n }\n }\n\n if (acceleration === undefined) {\n if (initialVelocity !== undefined && finalVelocity !== undefined && time !== undefined) {\n acceleration = (finalVelocity - initialVelocity) / time;\n } else if (initialVelocity !== undefined && finalVelocity !== undefined && displacement !== undefined) {\n acceleration = (finalVelocity * finalVelocity - initialVelocity * initialVelocity) / (2 * displacement);\n } else {\n throw new Error('Cannot solve for acceleration with the given parameters');\n }\n }\n\n if (time === undefined) {\n if (initialVelocity !== undefined && finalVelocity !== undefined && acceleration !== undefined && acceleration !== 0) {\n time = (finalVelocity - initialVelocity) / acceleration;\n } else if (displacement !== undefined && initialVelocity !== undefined && acceleration !== undefined) {\n const a = 0.5 * acceleration;\n const b = initialVelocity;\n const c = -displacement;\n const discriminant = b * b - 4 * a * c;\n if (discriminant < 0) throw new Error('No real solution for time');\n time = (-b + Math.sqrt(discriminant)) / (2 * a);\n if (time < 0) time = (-b - Math.sqrt(discriminant)) / (2 * a);\n } else {\n throw new Error('Cannot solve for time with the given parameters');\n }\n }\n\n return {\n displacement: displacement!,\n initialVelocity: initialVelocity!,\n finalVelocity: finalVelocity!,\n acceleration: acceleration!,\n time: time!,\n };\n}\n\nexport function projectileMotion(\n initialVelocity: number,\n angleDegrees: number,\n gravity: number = 9.80665\n): ProjectileResult {\n if (initialVelocity < 0) throw new Error('Initial velocity must be non-negative');\n if (angleDegrees < 0 || angleDegrees > 90) throw new Error('Angle must be between 0 and 90 degrees');\n\n const angleRad = (angleDegrees * Math.PI) / 180;\n const sin = Math.sin(angleRad);\n const cos = Math.cos(angleRad);\n const sin2 = Math.sin(2 * angleRad);\n\n const range = (initialVelocity * initialVelocity * sin2) / gravity;\n const maxHeight = (initialVelocity * initialVelocity * sin * sin) / (2 * gravity);\n const flightTime = (2 * initialVelocity * sin) / gravity;\n const velocityAtPeak = initialVelocity * cos;\n\n return { range, maxHeight, flightTime, initialVelocity, angle: angleDegrees, velocityAtPeak };\n}\n\nexport function freeFall(\n height: number,\n gravity: number = 9.80665\n): { height: number; time: number; finalVelocity: number } {\n if (height < 0) throw new Error('Height must be non-negative');\n const time = Math.sqrt((2 * height) / gravity);\n const finalVelocity = gravity * time;\n return { height, time, finalVelocity };\n}\n","import type { ForceResult, EnergyResult, GravitationalForceResult, MomentumResult, OrbitalVelocityResult } from './types';\n\nconst G = 6.67430e-11;\n\nexport function calculateForce(mass: number, acceleration: number): ForceResult {\n if (mass < 0) throw new Error('Mass must be non-negative');\n return { force: mass * acceleration, mass, acceleration, unit: 'N' };\n}\n\nexport function calculateEnergy(\n mass: number,\n velocity: number,\n height: number = 0,\n gravity: number = 9.80665\n): EnergyResult {\n if (mass < 0) throw new Error('Mass must be non-negative');\n const kineticEnergy = 0.5 * mass * velocity * velocity;\n const potentialEnergy = mass * gravity * height;\n return { kineticEnergy, potentialEnergy, totalEnergy: kineticEnergy + potentialEnergy, unit: 'J' };\n}\n\nexport function gravitationalForce(mass1: number, mass2: number, distance: number): GravitationalForceResult {\n if (distance <= 0) throw new Error('Distance must be positive');\n if (mass1 < 0 || mass2 < 0) throw new Error('Mass must be non-negative');\n const force = (G * mass1 * mass2) / (distance * distance);\n return { force, mass1, mass2, distance, unit: 'N' };\n}\n\nexport function calculateMomentum(mass: number, velocity: number): MomentumResult {\n if (mass < 0) throw new Error('Mass must be non-negative');\n return { momentum: mass * velocity, mass, velocity, unit: 'kg·m/s' };\n}\n\nexport function orbitalMechanics(mass: number, radius: number): OrbitalVelocityResult {\n if (mass < 0) throw new Error('Mass must be non-negative');\n if (radius <= 0) throw new Error('Radius must be positive');\n const orbitalVelocity = Math.sqrt((G * mass) / radius);\n const escapeVelocity = Math.sqrt((2 * G * mass) / radius);\n return { orbitalVelocity, escapeVelocity, mass, radius, unit: 'm/s' };\n}\n\nexport function calculateWork(\n force: number,\n distance: number,\n angleDegrees: number = 0\n): { work: number; force: number; distance: number; angle: number; unit: string } {\n const angleRad = (angleDegrees * Math.PI) / 180;\n const work = force * distance * Math.cos(angleRad);\n return { work, force, distance, angle: angleDegrees, unit: 'J' };\n}\n","import type { OhmsLawResult, ResistorResult, CoulombResult, CapacitorResult, RCCircuitResult } from './types';\n\nconst K_E = 8.9875517923e9;\n\nexport function ohmsLaw(params: { voltage?: number; current?: number; resistance?: number }): OhmsLawResult {\n const known = Object.entries(params).filter(([, v]) => v !== undefined);\n if (known.length < 2) {\n throw new Error('Need at least 2 of: voltage, current, resistance');\n }\n\n let { voltage, current, resistance } = params;\n\n if (voltage === undefined) {\n voltage = current! * resistance!;\n } else if (current === undefined) {\n if (resistance === 0) throw new Error('Resistance cannot be zero when solving for current');\n current = voltage / resistance!;\n } else if (resistance === undefined) {\n if (current === 0) throw new Error('Current cannot be zero when solving for resistance');\n resistance = voltage / current;\n }\n\n const power = voltage! * current!;\n return { voltage: voltage!, current: current!, resistance: resistance!, power };\n}\n\nexport function resistors(values: number[], configuration: 'series' | 'parallel'): ResistorResult {\n if (values.length === 0) throw new Error('Need at least one resistor value');\n if (values.some((v) => v < 0)) throw new Error('Resistor values must be non-negative');\n\n let totalResistance: number;\n if (configuration === 'series') {\n totalResistance = values.reduce((sum, r) => sum + r, 0);\n } else {\n if (values.some((v) => v === 0)) throw new Error('Parallel resistors cannot have zero resistance');\n totalResistance = 1 / values.reduce((sum, r) => sum + 1 / r, 0);\n }\n\n return { configuration, resistors: values, totalResistance, unit: 'Ω' };\n}\n\nexport function coulombsLaw(charge1: number, charge2: number, distance: number): CoulombResult {\n if (distance <= 0) throw new Error('Distance must be positive');\n const force = (K_E * Math.abs(charge1 * charge2)) / (distance * distance);\n const isAttractive = (charge1 > 0 && charge2 < 0) || (charge1 < 0 && charge2 > 0);\n return { force, charge1, charge2, distance, isAttractive, unit: 'N' };\n}\n\nexport function capacitors(values: number[], configuration: 'series' | 'parallel'): CapacitorResult {\n if (values.length === 0) throw new Error('Need at least one capacitor value');\n if (values.some((v) => v <= 0)) throw new Error('Capacitor values must be positive');\n\n let totalCapacitance: number;\n if (configuration === 'parallel') {\n totalCapacitance = values.reduce((sum, c) => sum + c, 0);\n } else {\n totalCapacitance = 1 / values.reduce((sum, c) => sum + 1 / c, 0);\n }\n\n return { configuration, capacitors: values, totalCapacitance, unit: 'F' };\n}\n\nexport function rcCircuit(resistance: number, capacitance: number): RCCircuitResult {\n if (resistance <= 0) throw new Error('Resistance must be positive');\n if (capacitance <= 0) throw new Error('Capacitance must be positive');\n const timeConstant = resistance * capacitance;\n const halfLife = timeConstant * Math.LN2;\n return { resistance, capacitance, timeConstant, halfLife, unit: 's' };\n}\n","import type { WaveResult, DopplerResult, SnellResult, LensResult, DecibelResult } from './types';\n\nexport function waveEquation(params: { frequency?: number; wavelength?: number; speed?: number }): WaveResult {\n const known = Object.entries(params).filter(([, v]) => v !== undefined);\n if (known.length < 2) {\n throw new Error('Need at least 2 of: frequency, wavelength, speed');\n }\n\n let { frequency, wavelength, speed } = params;\n\n if (speed === undefined) {\n speed = frequency! * wavelength!;\n } else if (frequency === undefined) {\n if (wavelength === 0) throw new Error('Wavelength cannot be zero');\n frequency = speed / wavelength!;\n } else if (wavelength === undefined) {\n if (frequency === 0) throw new Error('Frequency cannot be zero');\n wavelength = speed / frequency;\n }\n\n return { frequency: frequency!, wavelength: wavelength!, speed: speed!, period: 1 / frequency! };\n}\n\nexport function dopplerEffect(\n sourceFrequency: number,\n sourceVelocity: number,\n observerVelocity: number,\n mediumSpeed: number = 343,\n approaching: boolean = true\n): DopplerResult {\n if (sourceFrequency <= 0) throw new Error('Source frequency must be positive');\n if (Math.abs(sourceVelocity) >= mediumSpeed) throw new Error('Source velocity must be less than medium speed');\n\n let observedFrequency: number;\n if (approaching) {\n observedFrequency = sourceFrequency * ((mediumSpeed + observerVelocity) / (mediumSpeed - sourceVelocity));\n } else {\n observedFrequency = sourceFrequency * ((mediumSpeed - observerVelocity) / (mediumSpeed + sourceVelocity));\n }\n\n return { observedFrequency, sourceFrequency, sourceVelocity, observerVelocity, mediumSpeed, approaching };\n}\n\nexport function snellsLaw(n1: number, n2: number, angle1Degrees: number): SnellResult {\n if (n1 <= 0 || n2 <= 0) throw new Error('Refractive indices must be positive');\n if (angle1Degrees < 0 || angle1Degrees >= 90) throw new Error('Angle must be between 0 and 90 degrees');\n\n const angle1Rad = (angle1Degrees * Math.PI) / 180;\n const sinAngle2 = (n1 * Math.sin(angle1Rad)) / n2;\n\n let criticalAngle: number | null = null;\n if (n1 > n2) {\n criticalAngle = (Math.asin(n2 / n1) * 180) / Math.PI;\n }\n\n if (Math.abs(sinAngle2) > 1) {\n return { n1, n2, angle1: angle1Degrees, angle2: NaN, totalInternalReflection: true, criticalAngle };\n }\n\n const angle2Degrees = (Math.asin(sinAngle2) * 180) / Math.PI;\n return { n1, n2, angle1: angle1Degrees, angle2: angle2Degrees, totalInternalReflection: false, criticalAngle };\n}\n\nexport function thinLens(params: { focalLength?: number; objectDistance?: number; imageDistance?: number }): LensResult {\n const known = Object.entries(params).filter(([, v]) => v !== undefined);\n if (known.length < 2) {\n throw new Error('Need at least 2 of: focalLength, objectDistance, imageDistance');\n }\n\n let { focalLength, objectDistance, imageDistance } = params;\n\n if (focalLength === undefined) {\n focalLength = 1 / (1 / objectDistance! + 1 / imageDistance!);\n } else if (objectDistance === undefined) {\n objectDistance = 1 / (1 / focalLength - 1 / imageDistance!);\n } else if (imageDistance === undefined) {\n imageDistance = 1 / (1 / focalLength - 1 / objectDistance);\n }\n\n const magnification = -imageDistance! / objectDistance!;\n const imageType = imageDistance! > 0 ? 'real' : 'virtual';\n\n return { focalLength: focalLength!, objectDistance: objectDistance!, imageDistance: imageDistance!, magnification, imageType };\n}\n\nexport function decibelConversion(intensity1: number, intensity2: number): DecibelResult {\n if (intensity1 <= 0 || intensity2 <= 0) throw new Error('Intensities must be positive');\n const decibels = 10 * Math.log10(intensity2 / intensity1);\n return { intensity1, intensity2, decibels };\n}\n","import type { IdealGasResult, HeatTransferResult, ThermalExpansionResult, CarnotResult } from './types';\n\nconst R = 8.314462618;\n\nexport function idealGasLaw(params: {\n pressure?: number;\n volume?: number;\n moles?: number;\n temperature?: number;\n}): IdealGasResult {\n const known = Object.entries(params).filter(([, v]) => v !== undefined);\n if (known.length < 3) {\n throw new Error('Need at least 3 of: pressure (Pa), volume (m³), moles (mol), temperature (K)');\n }\n\n let { pressure, volume, moles, temperature } = params;\n\n if (pressure === undefined) {\n pressure = (moles! * R * temperature!) / volume!;\n } else if (volume === undefined) {\n volume = (moles! * R * temperature!) / pressure;\n } else if (moles === undefined) {\n moles = (pressure * volume!) / (R * temperature!);\n } else if (temperature === undefined) {\n temperature = (pressure * volume!) / (moles * R);\n }\n\n return { pressure: pressure!, volume: volume!, moles: moles!, temperature: temperature!, unit: 'SI (Pa, m³, mol, K)' };\n}\n\nexport function heatTransfer(mass: number, specificHeat: number, temperatureChange: number): HeatTransferResult {\n if (mass < 0) throw new Error('Mass must be non-negative');\n if (specificHeat <= 0) throw new Error('Specific heat must be positive');\n const heat = mass * specificHeat * temperatureChange;\n return { heat, mass, specificHeat, temperatureChange, unit: 'J' };\n}\n\nexport function thermalExpansion(\n originalLength: number,\n coefficient: number,\n temperatureChange: number\n): ThermalExpansionResult {\n if (originalLength < 0) throw new Error('Original length must be non-negative');\n const expansion = originalLength * coefficient * temperatureChange;\n const finalLength = originalLength + expansion;\n return { originalLength, coefficient, temperatureChange, expansion, finalLength };\n}\n\nexport function carnotEfficiency(hotTemperature: number, coldTemperature: number): CarnotResult {\n if (hotTemperature <= 0 || coldTemperature <= 0) throw new Error('Temperatures must be positive (in Kelvin)');\n if (coldTemperature >= hotTemperature) throw new Error('Hot temperature must be greater than cold temperature');\n const efficiency = 1 - coldTemperature / hotTemperature;\n return { hotTemperature, coldTemperature, efficiency, efficiencyPercent: `${(efficiency * 100).toFixed(2)}%` };\n}\n","import type { LorentzResult, TimeDilationResult, LengthContractionResult, MassEnergyResult } from './types';\n\nconst C = 299792458;\n\nexport function lorentzFactor(velocity: number): LorentzResult {\n if (Math.abs(velocity) >= C) throw new Error('Velocity must be less than the speed of light');\n const beta = velocity / C;\n const gamma = 1 / Math.sqrt(1 - beta * beta);\n return { velocity, speedOfLight: C, beta, gamma };\n}\n\nexport function timeDilation(properTime: number, velocity: number): TimeDilationResult {\n if (properTime < 0) throw new Error('Proper time must be non-negative');\n const { gamma } = lorentzFactor(velocity);\n const dilatedTime = properTime * gamma;\n return { properTime, dilatedTime, velocity, gamma };\n}\n\nexport function lengthContraction(properLength: number, velocity: number): LengthContractionResult {\n if (properLength < 0) throw new Error('Proper length must be non-negative');\n const { gamma } = lorentzFactor(velocity);\n const contractedLength = properLength / gamma;\n return { properLength, contractedLength, velocity, gamma };\n}\n\nexport function massEnergy(mass: number): MassEnergyResult {\n if (mass < 0) throw new Error('Mass must be non-negative');\n const energy = mass * C * C;\n return { mass, energy, unit: 'J' };\n}\n\nexport function energyToMass(energy: number): MassEnergyResult {\n if (energy < 0) throw new Error('Energy must be non-negative');\n const mass = energy / (C * C);\n return { mass, energy, unit: 'kg' };\n}\n","import type { PhysicsUnitCategory, PhysicsUnitResult } from './types';\n\nconst forceFactors: Record<string, number> = {\n n: 1, kn: 1000, dyn: 1e-5, lbf: 4.44822, kgf: 9.80665,\n};\n\nconst energyFactors: Record<string, number> = {\n j: 1, kj: 1000, cal: 4.184, kcal: 4184, ev: 1.602176634e-19, kwh: 3.6e6, btu: 1055.06, erg: 1e-7,\n};\n\nconst powerFactors: Record<string, number> = {\n w: 1, kw: 1000, mw: 1e6, hp: 745.7, 'btu/h': 0.293071,\n};\n\nconst pressureFactors: Record<string, number> = {\n pa: 1, kpa: 1000, mpa: 1e6, atm: 101325, bar: 100000, psi: 6894.76, torr: 133.322, mmhg: 133.322,\n};\n\nconst speedFactors: Record<string, number> = {\n 'm/s': 1, 'km/h': 1 / 3.6, mph: 0.44704, knots: 0.514444, 'ft/s': 0.3048,\n};\n\nfunction getFactors(category: PhysicsUnitCategory): Record<string, number> {\n switch (category) {\n case 'force': return forceFactors;\n case 'energy': return energyFactors;\n case 'power': return powerFactors;\n case 'pressure': return pressureFactors;\n case 'speed': return speedFactors;\n default: throw new Error(`Unknown physics unit category: ${category}`);\n }\n}\n\nexport function convertPhysicsUnit(\n value: number,\n from: string,\n to: string,\n category: PhysicsUnitCategory\n): PhysicsUnitResult {\n const factors = getFactors(category);\n const fromLower = from.toLowerCase();\n const toLower = to.toLowerCase();\n\n if (!(fromLower in factors)) {\n throw new Error(`Unknown ${category} unit: ${from}. Available: ${Object.keys(factors).join(', ')}`);\n }\n if (!(toLower in factors)) {\n throw new Error(`Unknown ${category} unit: ${to}. Available: ${Object.keys(factors).join(', ')}`);\n }\n\n const baseValue = value * factors[fromLower];\n const result = baseValue / factors[toLower];\n\n return { value, from: fromLower, to: toLower, result, category };\n}\n","import * as physics from '../physics';\n\nexport const physicsTools = [\n {\n name: 'agent_tools_physics_constants',\n description: 'Look up physical constants (speed of light, Planck, Boltzmann, etc.) or list all constants by category.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n key: { type: 'string', description: 'Constant key (c, G, h, hbar, k_B, N_A, R, e, epsilon_0, mu_0, m_e, m_p, sigma, g, atm, k_e)' },\n category: { type: 'string', description: 'Filter by category: universal, electromagnetic, thermodynamics, quantum, atomic, mechanics, chemistry' },\n },\n required: [] as string[],\n },\n handler: async (args: { key?: string; category?: string }) => {\n try {\n if (args.key) {\n const result = physics.getConstant(args.key);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n }\n const result = physics.listConstants(args.category);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_kinematics',\n description: 'Solve kinematics equations of motion. Provide at least 3 known values to solve for the remaining.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n displacement: { type: 'number', description: 'Displacement in meters' },\n initialVelocity: { type: 'number', description: 'Initial velocity in m/s' },\n finalVelocity: { type: 'number', description: 'Final velocity in m/s' },\n acceleration: { type: 'number', description: 'Acceleration in m/s²' },\n time: { type: 'number', description: 'Time in seconds' },\n },\n required: [] as string[],\n },\n handler: async (args: { displacement?: number; initialVelocity?: number; finalVelocity?: number; acceleration?: number; time?: number }) => {\n try {\n const result = physics.solveKinematics(args);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_projectile',\n description: 'Calculate projectile motion: range, max height, flight time, and velocity at peak.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n initialVelocity: { type: 'number', description: 'Initial velocity in m/s' },\n angle: { type: 'number', description: 'Launch angle in degrees (0-90)' },\n gravity: { type: 'number', description: 'Gravity in m/s² (default: 9.80665)' },\n },\n required: ['initialVelocity', 'angle'],\n },\n handler: async (args: { initialVelocity: number; angle: number; gravity?: number }) => {\n try {\n const result = physics.projectileMotion(args.initialVelocity, args.angle, args.gravity);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_force',\n description: 'Calculate force using Newton\\'s second law (F = ma).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n mass: { type: 'number', description: 'Mass in kg' },\n acceleration: { type: 'number', description: 'Acceleration in m/s²' },\n },\n required: ['mass', 'acceleration'],\n },\n handler: async (args: { mass: number; acceleration: number }) => {\n try {\n const result = physics.calculateForce(args.mass, args.acceleration);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_energy',\n description: 'Calculate kinetic energy, potential energy, and total mechanical energy.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n mass: { type: 'number', description: 'Mass in kg' },\n velocity: { type: 'number', description: 'Velocity in m/s' },\n height: { type: 'number', description: 'Height in meters (default: 0)' },\n gravity: { type: 'number', description: 'Gravity in m/s² (default: 9.80665)' },\n },\n required: ['mass', 'velocity'],\n },\n handler: async (args: { mass: number; velocity: number; height?: number; gravity?: number }) => {\n try {\n const result = physics.calculateEnergy(args.mass, args.velocity, args.height, args.gravity);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_gravity',\n description: 'Calculate gravitational force between two masses using Newton\\'s law of universal gravitation.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n mass1: { type: 'number', description: 'First mass in kg' },\n mass2: { type: 'number', description: 'Second mass in kg' },\n distance: { type: 'number', description: 'Distance between centers in meters' },\n },\n required: ['mass1', 'mass2', 'distance'],\n },\n handler: async (args: { mass1: number; mass2: number; distance: number }) => {\n try {\n const result = physics.gravitationalForce(args.mass1, args.mass2, args.distance);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_orbital',\n description: 'Calculate orbital velocity and escape velocity for a body orbiting a central mass.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n mass: { type: 'number', description: 'Central body mass in kg' },\n radius: { type: 'number', description: 'Orbital radius in meters' },\n },\n required: ['mass', 'radius'],\n },\n handler: async (args: { mass: number; radius: number }) => {\n try {\n const result = physics.orbitalMechanics(args.mass, args.radius);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_ohms_law',\n description: 'Apply Ohm\\'s law. Provide at least 2 of voltage, current, resistance to solve for the third and power.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n voltage: { type: 'number', description: 'Voltage in volts' },\n current: { type: 'number', description: 'Current in amperes' },\n resistance: { type: 'number', description: 'Resistance in ohms' },\n },\n required: [] as string[],\n },\n handler: async (args: { voltage?: number; current?: number; resistance?: number }) => {\n try {\n const result = physics.ohmsLaw(args);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_resistors',\n description: 'Calculate total resistance for resistors in series or parallel.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n values: { type: 'array', items: { type: 'number' }, description: 'Resistor values in ohms' },\n configuration: { type: 'string', enum: ['series', 'parallel'], description: 'Circuit configuration' },\n },\n required: ['values', 'configuration'],\n },\n handler: async (args: { values: number[]; configuration: 'series' | 'parallel' }) => {\n try {\n const result = physics.resistors(args.values, args.configuration);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_wave',\n description: 'Solve wave equation (v = fλ). Provide at least 2 of frequency, wavelength, speed.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n frequency: { type: 'number', description: 'Frequency in Hz' },\n wavelength: { type: 'number', description: 'Wavelength in meters' },\n speed: { type: 'number', description: 'Wave speed in m/s' },\n },\n required: [] as string[],\n },\n handler: async (args: { frequency?: number; wavelength?: number; speed?: number }) => {\n try {\n const result = physics.waveEquation(args);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_snell',\n description: 'Apply Snell\\'s law for light refraction. Calculates refraction angle and detects total internal reflection.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n n1: { type: 'number', description: 'Refractive index of medium 1' },\n n2: { type: 'number', description: 'Refractive index of medium 2' },\n angle: { type: 'number', description: 'Incident angle in degrees' },\n },\n required: ['n1', 'n2', 'angle'],\n },\n handler: async (args: { n1: number; n2: number; angle: number }) => {\n try {\n const result = physics.snellsLaw(args.n1, args.n2, args.angle);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_ideal_gas',\n description: 'Solve the ideal gas law (PV = nRT). Provide at least 3 of pressure, volume, moles, temperature.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n pressure: { type: 'number', description: 'Pressure in Pa' },\n volume: { type: 'number', description: 'Volume in m³' },\n moles: { type: 'number', description: 'Amount in mol' },\n temperature: { type: 'number', description: 'Temperature in K' },\n },\n required: [] as string[],\n },\n handler: async (args: { pressure?: number; volume?: number; moles?: number; temperature?: number }) => {\n try {\n const result = physics.idealGasLaw(args);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_carnot',\n description: 'Calculate Carnot efficiency for a heat engine given hot and cold reservoir temperatures.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n hotTemperature: { type: 'number', description: 'Hot reservoir temperature in Kelvin' },\n coldTemperature: { type: 'number', description: 'Cold reservoir temperature in Kelvin' },\n },\n required: ['hotTemperature', 'coldTemperature'],\n },\n handler: async (args: { hotTemperature: number; coldTemperature: number }) => {\n try {\n const result = physics.carnotEfficiency(args.hotTemperature, args.coldTemperature);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_lorentz',\n description: 'Calculate the Lorentz factor (gamma) for special relativity given a velocity.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n velocity: { type: 'number', description: 'Velocity in m/s' },\n },\n required: ['velocity'],\n },\n handler: async (args: { velocity: number }) => {\n try {\n const result = physics.lorentzFactor(args.velocity);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_time_dilation',\n description: 'Calculate relativistic time dilation for a moving object.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n properTime: { type: 'number', description: 'Proper time in seconds' },\n velocity: { type: 'number', description: 'Velocity in m/s' },\n },\n required: ['properTime', 'velocity'],\n },\n handler: async (args: { properTime: number; velocity: number }) => {\n try {\n const result = physics.timeDilation(args.properTime, args.velocity);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_mass_energy',\n description: 'Calculate mass-energy equivalence (E = mc²). Convert mass to energy or energy to mass.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n mass: { type: 'number', description: 'Mass in kg (for mass→energy)' },\n energy: { type: 'number', description: 'Energy in joules (for energy→mass)' },\n },\n required: [] as string[],\n },\n handler: async (args: { mass?: number; energy?: number }) => {\n try {\n const result = args.mass !== undefined ? physics.massEnergy(args.mass) : physics.energyToMass(args.energy!);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_physics_unit_convert',\n description: 'Convert between physics units: force (N, lbf, kgf), energy (J, cal, eV, kWh, BTU), power (W, hp), pressure (Pa, atm, bar, psi), speed (m/s, km/h, mph).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n value: { type: 'number', description: 'Value to convert' },\n from: { type: 'string', description: 'Source unit' },\n to: { type: 'string', description: 'Target unit' },\n category: { type: 'string', enum: ['force', 'energy', 'power', 'pressure', 'speed'], description: 'Unit category' },\n },\n required: ['value', 'from', 'to', 'category'],\n },\n handler: async (args: { value: number; from: string; to: string; category: string }) => {\n try {\n const result = physics.convertPhysicsUnit(args.value, args.from, args.to, args.category as physics.PhysicsUnitCategory);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n];\n","import type {\n NormalStressResult,\n ShearStressResult,\n StrainResult,\n YoungsModulusResult,\n FactorOfSafetyResult,\n HoopStressResult,\n} from './types';\n\n/**\n * Normal stress: σ = F / A\n */\nexport function normalStress(force: number, area: number): NormalStressResult {\n if (area <= 0) throw new Error('Area must be positive');\n const stress = force / area;\n return { force, area, stress, unit: 'Pa' };\n}\n\n/**\n * Shear stress: τ = V / A\n */\nexport function shearStress(force: number, area: number): ShearStressResult {\n if (area <= 0) throw new Error('Area must be positive');\n const stress = force / area;\n return { force, area, stress, unit: 'Pa' };\n}\n\n/**\n * Strain: ε = ΔL / L\n */\nexport function strain(deltaLength: number, originalLength: number): StrainResult {\n if (originalLength <= 0) throw new Error('Original length must be positive');\n const s = deltaLength / originalLength;\n return { deltaLength, originalLength, strain: s, unit: 'dimensionless' };\n}\n\n/**\n * Young's modulus: E = σ / ε\n */\nexport function youngsModulus(stress: number, strainVal: number): YoungsModulusResult {\n if (strainVal === 0) throw new Error('Strain must be non-zero');\n const E = stress / strainVal;\n return { stress, strain: strainVal, youngsModulus: E, unit: 'Pa' };\n}\n\n/**\n * Factor of safety: FoS = σ_ultimate / σ_working\n */\nexport function factorOfSafety(ultimateStress: number, workingStress: number): FactorOfSafetyResult {\n if (workingStress === 0) throw new Error('Working stress must be non-zero');\n if (ultimateStress < 0) throw new Error('Ultimate stress must be non-negative');\n if (workingStress < 0) throw new Error('Working stress must be positive');\n const fos = ultimateStress / workingStress;\n return { ultimateStress, workingStress, factorOfSafety: fos };\n}\n\n/**\n * Hoop stress for thin-walled pressure vessels:\n * σ_hoop = pR / t\n * σ_longitudinal = pR / (2t)\n */\nexport function hoopStress(pressure: number, radius: number, thickness: number): HoopStressResult {\n if (pressure < 0) throw new Error('Pressure must be non-negative');\n if (radius <= 0) throw new Error('Radius must be positive');\n if (thickness <= 0) throw new Error('Thickness must be positive');\n const hoop = (pressure * radius) / thickness;\n const longitudinal = (pressure * radius) / (2 * thickness);\n return { pressure, radius, thickness, hoopStress: hoop, longitudinalStress: longitudinal, unit: 'Pa' };\n}\n","import type { BeamResult, CantileverResult, BeamLoadType, CantileverLoadType } from './types';\n\n/**\n * Simply supported beam analysis.\n * Returns reactions, max moment, max shear, and max deflection (if E and I provided).\n */\nexport function simplySupported(\n length: number,\n load: number,\n loadType: BeamLoadType,\n E?: number,\n I?: number,\n loadPosition?: number\n): BeamResult {\n if (length <= 0) throw new Error('Length must be positive');\n if (load < 0) throw new Error('Load must be non-negative');\n\n let reactionLeft: number;\n let reactionRight: number;\n let maxMoment: number;\n let maxShear: number;\n let maxDeflection: number | null = null;\n\n const L = length;\n const P = load;\n\n switch (loadType) {\n case 'point-center': {\n reactionLeft = P / 2;\n reactionRight = P / 2;\n maxMoment = (P * L) / 4;\n maxShear = P / 2;\n if (E && I) {\n maxDeflection = (P * L * L * L) / (48 * E * I);\n }\n break;\n }\n case 'point-custom': {\n const a = loadPosition ?? L / 2;\n if (a < 0 || a > L) throw new Error('Load position must be between 0 and length');\n const b = L - a;\n reactionLeft = (P * b) / L;\n reactionRight = (P * a) / L;\n maxMoment = (P * a * b) / L;\n maxShear = Math.max(reactionLeft, reactionRight);\n if (E && I) {\n // Approximate max deflection for off-center load\n maxDeflection = (P * a * b * (a + 2 * b) * Math.sqrt(3 * a * (a + 2 * b))) / (27 * E * I * L);\n }\n break;\n }\n case 'uniform': {\n // w = total load / length (UDL intensity)\n const w = P / L;\n reactionLeft = P / 2;\n reactionRight = P / 2;\n maxMoment = (w * L * L) / 8;\n maxShear = P / 2;\n if (E && I) {\n maxDeflection = (5 * w * L * L * L * L) / (384 * E * I);\n }\n break;\n }\n case 'triangular': {\n // Triangular load from 0 at left to w_max at right, total load = w_max * L / 2 = P\n const wMax = (2 * P) / L;\n reactionLeft = P / 3;\n reactionRight = (2 * P) / 3;\n // Max moment occurs at x = L/√3 from left\n const xMax = L / Math.sqrt(3);\n maxMoment = (wMax * xMax * xMax * xMax) / (6 * L) + reactionLeft * xMax - (wMax * xMax * xMax) / (6 * L);\n // Simplified: M_max = wL²/9√3\n maxMoment = (wMax * L * L) / (9 * Math.sqrt(3));\n maxShear = (2 * P) / 3;\n if (E && I) {\n maxDeflection = (P * L * L * L) / (60 * E * I);\n }\n break;\n }\n default:\n throw new Error(`Unknown load type: ${loadType}. Use: point-center, point-custom, uniform, triangular`);\n }\n\n return {\n length,\n load,\n loadType,\n reactionLeft,\n reactionRight,\n maxMoment,\n maxShear,\n maxDeflection,\n momentUnit: 'N·m',\n shearUnit: 'N',\n deflectionUnit: maxDeflection !== null ? 'm' : null,\n };\n}\n\n/**\n * Cantilever beam analysis.\n * Returns reaction force, reaction moment, max moment, max shear, and max deflection (if E and I provided).\n */\nexport function cantilever(\n length: number,\n load: number,\n loadType: CantileverLoadType,\n E?: number,\n I?: number,\n loadPosition?: number\n): CantileverResult {\n if (length <= 0) throw new Error('Length must be positive');\n if (load < 0) throw new Error('Load must be non-negative');\n\n let reactionForce: number;\n let reactionMoment: number;\n let maxMoment: number;\n let maxShear: number;\n let maxDeflection: number | null = null;\n\n const L = length;\n const P = load;\n\n switch (loadType) {\n case 'point-end': {\n reactionForce = P;\n reactionMoment = P * L;\n maxMoment = P * L;\n maxShear = P;\n if (E && I) {\n maxDeflection = (P * L * L * L) / (3 * E * I);\n }\n break;\n }\n case 'point-custom': {\n const a = loadPosition ?? L;\n if (a < 0 || a > L) throw new Error('Load position must be between 0 and length');\n reactionForce = P;\n reactionMoment = P * a;\n maxMoment = P * a;\n maxShear = P;\n if (E && I) {\n maxDeflection = (P * a * a * (3 * L - a)) / (6 * E * I);\n }\n break;\n }\n case 'uniform': {\n const w = P / L;\n reactionForce = P;\n reactionMoment = (w * L * L) / 2;\n maxMoment = (w * L * L) / 2;\n maxShear = P;\n if (E && I) {\n maxDeflection = (w * L * L * L * L) / (8 * E * I);\n }\n break;\n }\n default:\n throw new Error(`Unknown load type: ${loadType}. Use: point-end, point-custom, uniform`);\n }\n\n return {\n length,\n load,\n loadType,\n reactionForce,\n reactionMoment,\n maxMoment,\n maxShear,\n maxDeflection,\n momentUnit: 'N·m',\n shearUnit: 'N',\n deflectionUnit: maxDeflection !== null ? 'm' : null,\n };\n}\n","import type { EndCondition, EulerBucklingResult, SlendernessRatioResult, ColumnClassification } from './types';\n\nconst K_FACTORS: Record<EndCondition, number> = {\n 'pinned-pinned': 1.0,\n 'fixed-free': 2.0,\n 'fixed-pinned': 0.7,\n 'fixed-fixed': 0.5,\n};\n\n/**\n * Euler's critical buckling load: Pcr = π²EI / Le²\n * Le = K * L (effective length)\n */\nexport function eulerBuckling(\n E: number,\n I: number,\n length: number,\n endCondition: EndCondition\n): EulerBucklingResult {\n if (E <= 0) throw new Error('Elastic modulus must be positive');\n if (I <= 0) throw new Error('Moment of inertia must be positive');\n if (length <= 0) throw new Error('Length must be positive');\n\n const K = K_FACTORS[endCondition];\n if (K === undefined) {\n throw new Error(`Unknown end condition: ${endCondition}. Use: pinned-pinned, fixed-free, fixed-pinned, fixed-fixed`);\n }\n\n const Le = K * length;\n const Pcr = (Math.PI * Math.PI * E * I) / (Le * Le);\n\n return {\n elasticModulus: E,\n momentOfInertia: I,\n length,\n endCondition,\n effectiveLengthFactor: K,\n effectiveLength: Le,\n criticalLoad: Pcr,\n unit: 'N',\n };\n}\n\n/**\n * Slenderness ratio: λ = Le / r\n * Classification: short (< 30), intermediate (30-120), long (> 120)\n */\nexport function slendernessRatio(\n effectiveLength: number,\n radiusOfGyration: number\n): SlendernessRatioResult {\n if (effectiveLength <= 0) throw new Error('Effective length must be positive');\n if (radiusOfGyration <= 0) throw new Error('Radius of gyration must be positive');\n\n const ratio = effectiveLength / radiusOfGyration;\n\n let classification: ColumnClassification;\n if (ratio < 30) {\n classification = 'short';\n } else if (ratio <= 120) {\n classification = 'intermediate';\n } else {\n classification = 'long';\n }\n\n return {\n effectiveLength,\n radiusOfGyration,\n slendernessRatio: ratio,\n classification,\n };\n}\n","import type {\n RectangleSectionResult,\n CircularSectionResult,\n HollowCircularSectionResult,\n IBeamSectionResult,\n} from './types';\n\n/**\n * Rectangular cross-section properties.\n * Ixx = bh³/12, Iyy = hb³/12\n */\nexport function rectangleSection(width: number, height: number): RectangleSectionResult {\n if (width <= 0) throw new Error('Width must be positive');\n if (height <= 0) throw new Error('Height must be positive');\n\n const area = width * height;\n const Ixx = (width * height * height * height) / 12;\n const Iyy = (height * width * width * width) / 12;\n const Sx = (width * height * height) / 6;\n const Sy = (height * width * width) / 6;\n const rx = height / Math.sqrt(12);\n const ry = width / Math.sqrt(12);\n\n return { width, height, area, Ixx, Iyy, Sx, Sy, rx, ry };\n}\n\n/**\n * Solid circular cross-section properties.\n * I = πd⁴/64\n */\nexport function circularSection(diameter: number): CircularSectionResult {\n if (diameter <= 0) throw new Error('Diameter must be positive');\n\n const r2 = diameter / 2;\n const area = Math.PI * r2 * r2;\n const I = (Math.PI * diameter * diameter * diameter * diameter) / 64;\n const S = (Math.PI * diameter * diameter * diameter) / 32;\n const r = diameter / 4;\n\n return { diameter, area, I, S, r };\n}\n\n/**\n * Hollow circular cross-section properties.\n * I = π(D⁴ - d⁴)/64\n */\nexport function hollowCircularSection(outerDiameter: number, innerDiameter: number): HollowCircularSectionResult {\n if (outerDiameter <= 0) throw new Error('Outer diameter must be positive');\n if (innerDiameter < 0) throw new Error('Inner diameter must be non-negative');\n if (innerDiameter >= outerDiameter) throw new Error('Inner diameter must be less than outer diameter');\n\n const D = outerDiameter;\n const d = innerDiameter;\n const area = (Math.PI / 4) * (D * D - d * d);\n const I = (Math.PI / 64) * (D * D * D * D - d * d * d * d);\n const S = (Math.PI / (32 * D)) * (D * D * D * D - d * d * d * d);\n const r = Math.sqrt(I / area);\n\n return { outerDiameter, innerDiameter, area, I, S, r };\n}\n\n/**\n * I-beam (wide flange) cross-section properties.\n * Uses parallel axis theorem for Ixx.\n */\nexport function iBeamSection(\n flangeWidth: number,\n flangeThickness: number,\n webHeight: number,\n webThickness: number\n): IBeamSectionResult {\n if (flangeWidth <= 0) throw new Error('Flange width must be positive');\n if (flangeThickness <= 0) throw new Error('Flange thickness must be positive');\n if (webHeight <= 0) throw new Error('Web height must be positive');\n if (webThickness <= 0) throw new Error('Web thickness must be positive');\n\n const totalHeight = webHeight + 2 * flangeThickness;\n\n // Areas\n const flangeArea = flangeWidth * flangeThickness;\n const webArea = webHeight * webThickness;\n const area = 2 * flangeArea + webArea;\n\n // Ixx using parallel axis theorem\n // Web contribution: bh³/12 (centroidal)\n const IxxWeb = (webThickness * webHeight * webHeight * webHeight) / 12;\n // Flange contribution: bh³/12 + Ad² for each flange\n const IxxFlangeSelf = (flangeWidth * flangeThickness * flangeThickness * flangeThickness) / 12;\n const flangeCenterDist = (webHeight + flangeThickness) / 2;\n const IxxFlangeParallel = flangeArea * flangeCenterDist * flangeCenterDist;\n const Ixx = IxxWeb + 2 * (IxxFlangeSelf + IxxFlangeParallel);\n\n // Iyy\n const IyyFlanges = 2 * (flangeThickness * flangeWidth * flangeWidth * flangeWidth) / 12;\n const IyyWeb = (webHeight * webThickness * webThickness * webThickness) / 12;\n const Iyy = IyyFlanges + IyyWeb;\n\n // Section moduli\n const Sx = (2 * Ixx) / totalHeight;\n const Sy = (2 * Iyy) / flangeWidth;\n\n // Radii of gyration\n const rx = Math.sqrt(Ixx / area);\n const ry = Math.sqrt(Iyy / area);\n\n return {\n flangeWidth,\n flangeThickness,\n webHeight,\n webThickness,\n totalHeight,\n area,\n Ixx,\n Iyy,\n Sx,\n Sy,\n rx,\n ry,\n };\n}\n","import type {\n TerzaghiBearingResult,\n LateralEarthPressureResult,\n SettlementResult,\n FoundationType,\n EarthPressureType,\n} from './types';\n\n/**\n * General bearing capacity factors (Meyerhof/Reissner/Vesic formulation).\n * Nq from Reissner (1924), Nc from Prandtl (1921), Nγ from Vesic (1973).\n * These are the most widely used factors in modern geotechnical practice.\n */\nfunction bearingCapacityFactors(frictionAngleDeg: number): { Nc: number; Nq: number; Ngamma: number } {\n const phi = (frictionAngleDeg * Math.PI) / 180;\n\n // Nq = tan²(45 + φ/2) · e^(π·tanφ) (Reissner, 1924)\n const tan45half = Math.tan(Math.PI / 4 + phi / 2);\n const Nq = tan45half * tan45half * Math.exp(Math.PI * Math.tan(phi));\n\n // Nc = (Nq - 1) · cot(φ) (Prandtl, 1921; for φ > 0)\n let Nc: number;\n if (frictionAngleDeg === 0) {\n Nc = 5.14; // Prandtl's exact value: (2 + π)\n } else {\n Nc = (Nq - 1) / Math.tan(phi);\n }\n\n // Nγ = 2(Nq + 1)·tan(φ) (Vesic, 1973 approximation)\n const Ngamma = 2 * (Nq + 1) * Math.tan(phi);\n\n return { Nc, Nq, Ngamma };\n}\n\n/**\n * Bearing capacity for shallow foundations using Terzaghi's equation form\n * with Meyerhof/Vesic bearing capacity factors.\n * q_ult = c·Nc·sc + γ·D·Nq + 0.5·γ·B·Nγ·sγ\n * Shape factors: strip (1, 1), square (1.3, 0.8), circular (1.3, 0.6)\n */\nexport function terzaghiBearing(\n cohesion: number,\n depth: number,\n unitWeight: number,\n frictionAngle: number,\n foundationType: FoundationType\n): TerzaghiBearingResult {\n if (cohesion < 0) throw new Error('Cohesion must be non-negative');\n if (depth < 0) throw new Error('Depth must be non-negative');\n if (unitWeight <= 0) throw new Error('Unit weight must be positive');\n if (frictionAngle < 0 || frictionAngle > 50) throw new Error('Friction angle must be between 0 and 50 degrees');\n\n const { Nc, Nq, Ngamma } = bearingCapacityFactors(frictionAngle);\n\n let sc: number;\n let sgamma: number;\n switch (foundationType) {\n case 'strip':\n sc = 1.0;\n sgamma = 1.0;\n break;\n case 'square':\n sc = 1.3;\n sgamma = 0.8;\n break;\n case 'circular':\n sc = 1.3;\n sgamma = 0.6;\n break;\n default:\n throw new Error(`Unknown foundation type: ${foundationType}. Use: strip, square, circular`);\n }\n\n // q_ult = c·Nc·sc + γ·D·Nq + 0.5·γ·B·Nγ·sγ\n // For general formula, B is treated as unit width\n const bearingCapacity = cohesion * Nc * sc + unitWeight * depth * Nq + 0.5 * unitWeight * 1.0 * Ngamma * sgamma;\n\n return {\n cohesion,\n depth,\n unitWeight,\n frictionAngle,\n foundationType,\n bearingCapacity,\n Nc,\n Nq,\n Ngamma,\n unit: 'Pa',\n };\n}\n\n/**\n * Rankine lateral earth pressure.\n * Active: Ka = tan²(45° - φ/2)\n * Passive: Kp = tan²(45° + φ/2)\n * At-rest: K0 = 1 - sin(φ) (Jaky's formula)\n */\nexport function lateralEarthPressure(\n unitWeight: number,\n height: number,\n frictionAngle: number,\n pressureType: EarthPressureType\n): LateralEarthPressureResult {\n if (unitWeight <= 0) throw new Error('Unit weight must be positive');\n if (height <= 0) throw new Error('Height must be positive');\n if (frictionAngle < 0 || frictionAngle > 50) throw new Error('Friction angle must be between 0 and 50 degrees');\n\n const phi = (frictionAngle * Math.PI) / 180;\n let coefficient: number;\n\n switch (pressureType) {\n case 'active':\n coefficient = Math.pow(Math.tan(Math.PI / 4 - phi / 2), 2);\n break;\n case 'passive':\n coefficient = Math.pow(Math.tan(Math.PI / 4 + phi / 2), 2);\n break;\n case 'at-rest':\n coefficient = 1 - Math.sin(phi);\n break;\n default:\n throw new Error(`Unknown pressure type: ${pressureType}. Use: active, passive, at-rest`);\n }\n\n const pressureAtBase = coefficient * unitWeight * height;\n const totalForce = 0.5 * pressureAtBase * height;\n\n return {\n unitWeight,\n height,\n frictionAngle,\n pressureType,\n coefficient,\n pressureAtBase,\n totalForce,\n pressureUnit: 'Pa',\n forceUnit: 'N/m',\n };\n}\n\n/**\n * Elastic settlement: δ = (q · H) / E\n * where q = P / A is the applied stress.\n */\nexport function settlement(\n load: number,\n area: number,\n elasticModulus: number,\n thickness: number\n): SettlementResult {\n if (load < 0) throw new Error('Load must be non-negative');\n if (area <= 0) throw new Error('Area must be positive');\n if (elasticModulus <= 0) throw new Error('Elastic modulus must be positive');\n if (thickness <= 0) throw new Error('Thickness must be positive');\n\n const stress = load / area;\n const settl = (stress * thickness) / elasticModulus;\n\n return {\n load,\n area,\n elasticModulus,\n thickness,\n stress,\n settlement: settl,\n unit: 'm',\n };\n}\n","import type { MaterialProperties } from './types';\n\nconst MATERIALS: MaterialProperties[] = [\n {\n name: 'ASTM A36 Steel',\n category: 'steel',\n E: 200e9,\n fy: 250e6,\n fu: 400e6,\n density: 7850,\n poissonsRatio: 0.26,\n thermalExpansion: 12e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'ASTM A992 Steel',\n category: 'steel',\n E: 200e9,\n fy: 345e6,\n fu: 450e6,\n density: 7850,\n poissonsRatio: 0.26,\n thermalExpansion: 12e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Stainless Steel 304',\n category: 'steel',\n E: 193e9,\n fy: 215e6,\n fu: 515e6,\n density: 7930,\n poissonsRatio: 0.29,\n thermalExpansion: 17.3e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Aluminum 6061-T6',\n category: 'aluminum',\n E: 68.9e9,\n fy: 276e6,\n fu: 310e6,\n density: 2700,\n poissonsRatio: 0.33,\n thermalExpansion: 23.6e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Aluminum 2024-T3',\n category: 'aluminum',\n E: 73.1e9,\n fy: 345e6,\n fu: 483e6,\n density: 2780,\n poissonsRatio: 0.33,\n thermalExpansion: 23.2e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Concrete C20/25',\n category: 'concrete',\n E: 30e9,\n fy: 20e6,\n fu: 25e6,\n density: 2400,\n poissonsRatio: 0.2,\n thermalExpansion: 10e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Concrete C30/37',\n category: 'concrete',\n E: 33e9,\n fy: 30e6,\n fu: 37e6,\n density: 2400,\n poissonsRatio: 0.2,\n thermalExpansion: 10e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Concrete C40/50',\n category: 'concrete',\n E: 35e9,\n fy: 40e6,\n fu: 50e6,\n density: 2400,\n poissonsRatio: 0.2,\n thermalExpansion: 10e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Douglas Fir',\n category: 'timber',\n E: 12.4e9,\n fy: 36e6,\n fu: 52e6,\n density: 530,\n poissonsRatio: 0.29,\n thermalExpansion: 3.6e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Southern Pine',\n category: 'timber',\n E: 13.7e9,\n fy: 41e6,\n fu: 59e6,\n density: 560,\n poissonsRatio: 0.33,\n thermalExpansion: 3.6e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n {\n name: 'Copper C11000',\n category: 'other',\n E: 130e9,\n fy: 69e6,\n fu: 220e6,\n density: 8940,\n poissonsRatio: 0.33,\n thermalExpansion: 17.3e-6,\n Eunit: 'Pa',\n fyUnit: 'Pa',\n fuUnit: 'Pa',\n densityUnit: 'kg/m³',\n thermalExpansionUnit: '1/°C',\n },\n];\n\n/**\n * Get material properties by name (case-insensitive partial match).\n */\nexport function getMaterial(name: string): MaterialProperties {\n const lower = name.toLowerCase();\n const found = MATERIALS.find((m) => m.name.toLowerCase().includes(lower));\n if (!found) {\n const available = MATERIALS.map((m) => m.name).join(', ');\n throw new Error(`Material \"${name}\" not found. Available: ${available}`);\n }\n return { ...found };\n}\n\n/**\n * List materials, optionally filtered by category.\n */\nexport function listMaterials(category?: string): MaterialProperties[] {\n if (!category) return MATERIALS.map((m) => ({ ...m }));\n const lower = category.toLowerCase();\n const filtered = MATERIALS.filter((m) => m.category.toLowerCase() === lower);\n if (filtered.length === 0) {\n const categories = [...new Set(MATERIALS.map((m) => m.category))].join(', ');\n throw new Error(`No materials found in category \"${category}\". Available categories: ${categories}`);\n }\n return filtered.map((m) => ({ ...m }));\n}\n","import * as structural from '../structural';\n\nexport const structuralTools = [\n // --- Stress & Strain ---\n {\n name: 'agent_tools_structural_normal_stress',\n description: 'Calculate normal stress (σ = F/A) given force and cross-sectional area.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n force: { type: 'number', description: 'Axial force in Newtons' },\n area: { type: 'number', description: 'Cross-sectional area in m²' },\n },\n required: ['force', 'area'],\n },\n handler: async (args: { force: number; area: number }) => {\n try {\n const result = structural.normalStress(args.force, args.area);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_shear_stress',\n description: 'Calculate shear stress (τ = V/A) given shear force and area.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n force: { type: 'number', description: 'Shear force in Newtons' },\n area: { type: 'number', description: 'Cross-sectional area in m²' },\n },\n required: ['force', 'area'],\n },\n handler: async (args: { force: number; area: number }) => {\n try {\n const result = structural.shearStress(args.force, args.area);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_strain',\n description: 'Calculate strain (ε = ΔL/L) given change in length and original length.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n deltaLength: { type: 'number', description: 'Change in length in meters' },\n originalLength: { type: 'number', description: 'Original length in meters' },\n },\n required: ['deltaLength', 'originalLength'],\n },\n handler: async (args: { deltaLength: number; originalLength: number }) => {\n try {\n const result = structural.strain(args.deltaLength, args.originalLength);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_youngs_modulus',\n description: \"Calculate Young's modulus (E = σ/ε) from stress and strain values.\",\n inputSchema: {\n type: 'object' as const,\n properties: {\n stress: { type: 'number', description: 'Stress in Pa' },\n strain: { type: 'number', description: 'Strain (dimensionless)' },\n },\n required: ['stress', 'strain'],\n },\n handler: async (args: { stress: number; strain: number }) => {\n try {\n const result = structural.youngsModulus(args.stress, args.strain);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_factor_of_safety',\n description: 'Calculate factor of safety (FoS = σ_ultimate / σ_working).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n ultimateStress: { type: 'number', description: 'Ultimate stress in Pa' },\n workingStress: { type: 'number', description: 'Working/allowable stress in Pa' },\n },\n required: ['ultimateStress', 'workingStress'],\n },\n handler: async (args: { ultimateStress: number; workingStress: number }) => {\n try {\n const result = structural.factorOfSafety(args.ultimateStress, args.workingStress);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_hoop_stress',\n description: 'Calculate hoop and longitudinal stress in thin-walled pressure vessels (σ = pR/t).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n pressure: { type: 'number', description: 'Internal pressure in Pa' },\n radius: { type: 'number', description: 'Vessel radius in meters' },\n thickness: { type: 'number', description: 'Wall thickness in meters' },\n },\n required: ['pressure', 'radius', 'thickness'],\n },\n handler: async (args: { pressure: number; radius: number; thickness: number }) => {\n try {\n const result = structural.hoopStress(args.pressure, args.radius, args.thickness);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n\n // --- Beams ---\n {\n name: 'agent_tools_structural_simply_supported_beam',\n description: 'Analyze a simply supported beam: reactions, max moment, max shear, and deflection. Load types: point-center, point-custom, uniform, triangular.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n length: { type: 'number', description: 'Beam length in meters' },\n load: { type: 'number', description: 'Total load in Newtons' },\n loadType: { type: 'string', enum: ['point-center', 'point-custom', 'uniform', 'triangular'], description: 'Type of loading' },\n E: { type: 'number', description: 'Elastic modulus in Pa (optional, for deflection)' },\n I: { type: 'number', description: 'Moment of inertia in m⁴ (optional, for deflection)' },\n loadPosition: { type: 'number', description: 'Load position from left end in meters (for point-custom)' },\n },\n required: ['length', 'load', 'loadType'],\n },\n handler: async (args: { length: number; load: number; loadType: string; E?: number; I?: number; loadPosition?: number }) => {\n try {\n const result = structural.simplySupported(args.length, args.load, args.loadType as structural.BeamLoadType, args.E, args.I, args.loadPosition);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_cantilever_beam',\n description: 'Analyze a cantilever beam: reactions, max moment, max shear, and deflection. Load types: point-end, point-custom, uniform.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n length: { type: 'number', description: 'Beam length in meters' },\n load: { type: 'number', description: 'Total load in Newtons' },\n loadType: { type: 'string', enum: ['point-end', 'point-custom', 'uniform'], description: 'Type of loading' },\n E: { type: 'number', description: 'Elastic modulus in Pa (optional, for deflection)' },\n I: { type: 'number', description: 'Moment of inertia in m⁴ (optional, for deflection)' },\n loadPosition: { type: 'number', description: 'Load position from fixed end in meters (for point-custom)' },\n },\n required: ['length', 'load', 'loadType'],\n },\n handler: async (args: { length: number; load: number; loadType: string; E?: number; I?: number; loadPosition?: number }) => {\n try {\n const result = structural.cantilever(args.length, args.load, args.loadType as structural.CantileverLoadType, args.E, args.I, args.loadPosition);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n\n // --- Columns ---\n {\n name: 'agent_tools_structural_euler_buckling',\n description: \"Calculate Euler's critical buckling load (Pcr = π²EI/Le²) for columns with various end conditions.\",\n inputSchema: {\n type: 'object' as const,\n properties: {\n E: { type: 'number', description: 'Elastic modulus in Pa' },\n I: { type: 'number', description: 'Moment of inertia in m⁴' },\n length: { type: 'number', description: 'Column length in meters' },\n endCondition: { type: 'string', enum: ['pinned-pinned', 'fixed-free', 'fixed-pinned', 'fixed-fixed'], description: 'End support conditions' },\n },\n required: ['E', 'I', 'length', 'endCondition'],\n },\n handler: async (args: { E: number; I: number; length: number; endCondition: string }) => {\n try {\n const result = structural.eulerBuckling(args.E, args.I, args.length, args.endCondition as structural.EndCondition);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_slenderness_ratio',\n description: 'Calculate slenderness ratio (λ = Le/r) and classify column as short, intermediate, or long.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n effectiveLength: { type: 'number', description: 'Effective length in meters' },\n radiusOfGyration: { type: 'number', description: 'Radius of gyration in meters' },\n },\n required: ['effectiveLength', 'radiusOfGyration'],\n },\n handler: async (args: { effectiveLength: number; radiusOfGyration: number }) => {\n try {\n const result = structural.slendernessRatio(args.effectiveLength, args.radiusOfGyration);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n\n // --- Sections ---\n {\n name: 'agent_tools_structural_rectangle_section',\n description: 'Calculate properties of a rectangular cross-section: area, Ixx, Iyy, Sx, Sy, rx, ry.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n width: { type: 'number', description: 'Width in meters' },\n height: { type: 'number', description: 'Height in meters' },\n },\n required: ['width', 'height'],\n },\n handler: async (args: { width: number; height: number }) => {\n try {\n const result = structural.rectangleSection(args.width, args.height);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_circular_section',\n description: 'Calculate properties of a solid circular cross-section: area, I, S, r.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n diameter: { type: 'number', description: 'Diameter in meters' },\n },\n required: ['diameter'],\n },\n handler: async (args: { diameter: number }) => {\n try {\n const result = structural.circularSection(args.diameter);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_hollow_circular_section',\n description: 'Calculate properties of a hollow circular (tube) cross-section: area, I, S, r.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n outerDiameter: { type: 'number', description: 'Outer diameter in meters' },\n innerDiameter: { type: 'number', description: 'Inner diameter in meters' },\n },\n required: ['outerDiameter', 'innerDiameter'],\n },\n handler: async (args: { outerDiameter: number; innerDiameter: number }) => {\n try {\n const result = structural.hollowCircularSection(args.outerDiameter, args.innerDiameter);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_i_beam_section',\n description: 'Calculate properties of an I-beam (wide flange) cross-section: area, Ixx, Iyy, Sx, Sy, rx, ry.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n flangeWidth: { type: 'number', description: 'Flange width in meters' },\n flangeThickness: { type: 'number', description: 'Flange thickness in meters' },\n webHeight: { type: 'number', description: 'Web height (between flanges) in meters' },\n webThickness: { type: 'number', description: 'Web thickness in meters' },\n },\n required: ['flangeWidth', 'flangeThickness', 'webHeight', 'webThickness'],\n },\n handler: async (args: { flangeWidth: number; flangeThickness: number; webHeight: number; webThickness: number }) => {\n try {\n const result = structural.iBeamSection(args.flangeWidth, args.flangeThickness, args.webHeight, args.webThickness);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n\n // --- Soils ---\n {\n name: 'agent_tools_structural_terzaghi_bearing',\n description: \"Calculate Terzaghi's bearing capacity for shallow foundations (strip, square, circular).\",\n inputSchema: {\n type: 'object' as const,\n properties: {\n cohesion: { type: 'number', description: 'Soil cohesion in Pa' },\n depth: { type: 'number', description: 'Foundation depth in meters' },\n unitWeight: { type: 'number', description: 'Soil unit weight in N/m³' },\n frictionAngle: { type: 'number', description: 'Soil friction angle in degrees' },\n foundationType: { type: 'string', enum: ['strip', 'square', 'circular'], description: 'Foundation shape' },\n },\n required: ['cohesion', 'depth', 'unitWeight', 'frictionAngle', 'foundationType'],\n },\n handler: async (args: { cohesion: number; depth: number; unitWeight: number; frictionAngle: number; foundationType: string }) => {\n try {\n const result = structural.terzaghiBearing(args.cohesion, args.depth, args.unitWeight, args.frictionAngle, args.foundationType as structural.FoundationType);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_lateral_earth_pressure',\n description: 'Calculate Rankine lateral earth pressure coefficients and forces (active, passive, at-rest).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n unitWeight: { type: 'number', description: 'Soil unit weight in N/m³' },\n height: { type: 'number', description: 'Wall/excavation height in meters' },\n frictionAngle: { type: 'number', description: 'Soil friction angle in degrees' },\n pressureType: { type: 'string', enum: ['active', 'passive', 'at-rest'], description: 'Type of earth pressure' },\n },\n required: ['unitWeight', 'height', 'frictionAngle', 'pressureType'],\n },\n handler: async (args: { unitWeight: number; height: number; frictionAngle: number; pressureType: string }) => {\n try {\n const result = structural.lateralEarthPressure(args.unitWeight, args.height, args.frictionAngle, args.pressureType as structural.EarthPressureType);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_settlement',\n description: 'Calculate elastic settlement (δ = qH/E) for foundations.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n load: { type: 'number', description: 'Applied load in Newtons' },\n area: { type: 'number', description: 'Foundation area in m²' },\n elasticModulus: { type: 'number', description: 'Soil elastic modulus in Pa' },\n thickness: { type: 'number', description: 'Compressible layer thickness in meters' },\n },\n required: ['load', 'area', 'elasticModulus', 'thickness'],\n },\n handler: async (args: { load: number; area: number; elasticModulus: number; thickness: number }) => {\n try {\n const result = structural.settlement(args.load, args.area, args.elasticModulus, args.thickness);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n\n // --- Materials ---\n {\n name: 'agent_tools_structural_get_material',\n description: 'Look up structural material properties (E, fy, fu, density, Poisson ratio, thermal expansion) by name.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n name: { type: 'string', description: 'Material name (e.g., A36, A992, 304, 6061, C30, Douglas Fir)' },\n },\n required: ['name'],\n },\n handler: async (args: { name: string }) => {\n try {\n const result = structural.getMaterial(args.name);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n {\n name: 'agent_tools_structural_list_materials',\n description: 'List structural materials, optionally filtered by category (steel, aluminum, concrete, timber, other).',\n inputSchema: {\n type: 'object' as const,\n properties: {\n category: { type: 'string', description: 'Filter by category: steel, aluminum, concrete, timber, other' },\n },\n required: [] as string[],\n },\n handler: async (args: { category?: string }) => {\n try {\n const result = structural.listMaterials(args.category);\n return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }] };\n } catch (e) {\n return { isError: true, content: [{ type: 'text' as const, text: `Error: ${(e as Error).message}` }] };\n }\n },\n },\n];\n","import { jsonTools } from './json';\nimport { csvTools } from './csv';\nimport { pdfTools } from './pdf';\nimport { xmlTools } from './xml';\nimport { excelTools } from './excel';\nimport { imageTools } from './image';\nimport { markdownTools } from './markdown';\nimport { archiveTools } from './archive';\nimport { regexTools } from './regex';\nimport { diffTools } from './diff';\nimport { sqlTools } from './sql';\nimport { cryptoMcpTools } from './crypto';\nimport { datetimeTools } from './datetime';\nimport { textTools } from './text';\nimport { mathTools } from './math';\nimport { colorTools } from './color';\nimport { physicsTools } from './physics';\nimport { structuralTools } from './structural';\n\nexport interface McpTool {\n name: string;\n description: string;\n inputSchema: {\n type: 'object';\n properties: Record<string, unknown>;\n required: string[];\n };\n handler: (args: Record<string, unknown>) => Promise<{\n content: { type: 'text'; text: string }[];\n isError?: boolean;\n }>;\n}\n\nexport const allTools = [\n ...jsonTools,\n ...csvTools,\n ...pdfTools,\n ...xmlTools,\n ...excelTools,\n ...imageTools,\n ...markdownTools,\n ...archiveTools,\n ...regexTools,\n ...diffTools,\n ...sqlTools,\n ...cryptoMcpTools,\n ...datetimeTools,\n ...textTools,\n ...mathTools,\n ...colorTools,\n ...physicsTools,\n ...structuralTools,\n] as unknown as McpTool[];\n\nexport { jsonTools, csvTools, pdfTools };\nexport { xmlTools, excelTools, imageTools, markdownTools, archiveTools };\nexport { regexTools, diffTools, sqlTools, cryptoMcpTools, datetimeTools };\nexport { textTools, mathTools, colorTools, physicsTools };\nexport { structuralTools };\n","import { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\nimport { settingsService } from './settings';\nimport type { ToolCategory } from './settings';\nimport { allTools } from './tools';\n\nfunction getToolCategory(toolName: string): ToolCategory | null {\n const match = toolName.match(/^agent_tools_([a-z]+)_/);\n return match ? (match[1] as ToolCategory) : null;\n}\n\nexport function createServer() {\n const server = new Server(\n {\n name: 'agent-tools',\n version: '1.0.0',\n },\n {\n capabilities: {\n tools: {},\n },\n }\n );\n\n server.setRequestHandler(ListToolsRequestSchema, async () => {\n const settings = await settingsService.getSettings();\n const enabledTools = allTools.filter((tool) => {\n const category = getToolCategory(tool.name);\n return !category || settings.enabled[category] !== false;\n });\n\n return {\n tools: enabledTools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n })),\n };\n });\n\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params;\n\n const category = getToolCategory(name);\n if (category) {\n const enabled = await settingsService.isToolEnabled(category);\n if (!enabled) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error: The \"${category}\" tool category is currently disabled. Enable it in Settings.`,\n },\n ],\n isError: true,\n };\n }\n }\n\n const tool = allTools.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Unknown tool: ${name}`);\n }\n\n try {\n const result = await tool.handler(args as never);\n return result;\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Error: ${(error as Error).message}`,\n },\n ],\n isError: true,\n };\n }\n });\n\n return server;\n}\n\nexport async function runStdioServer() {\n const server = createServer();\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n","import express, { Request, Response } from 'express';\nimport { allTools } from '../tools';\n\ninterface JsonRpcRequest {\n jsonrpc: '2.0';\n id: string | number;\n method: string;\n params?: Record<string, unknown>;\n}\n\ninterface JsonRpcResponse {\n jsonrpc: '2.0';\n id: string | number;\n result?: unknown;\n error?: {\n code: number;\n message: string;\n data?: unknown;\n };\n}\n\nexport function createHttpServer(port: number = 3001) {\n const app = express();\n\n app.use(express.json({ limit: '50mb' }));\n\n app.use((_req, res, next) => {\n res.header('Access-Control-Allow-Origin', '*');\n res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');\n res.header('Access-Control-Allow-Headers', 'Content-Type');\n next();\n });\n\n app.options('*', (_req, res) => {\n res.sendStatus(200);\n });\n\n app.get('/health', (_req, res) => {\n res.json({ status: 'ok', server: 'agent-tools-mcp', version: '1.0.0' });\n });\n\n app.post('/mcp', async (req: Request, res: Response) => {\n const request = req.body as JsonRpcRequest;\n\n if (request.jsonrpc !== '2.0') {\n return res.status(400).json({\n jsonrpc: '2.0',\n id: request.id,\n error: { code: -32600, message: 'Invalid Request' },\n });\n }\n\n try {\n const result = await handleRequest(request);\n res.json(result);\n } catch (error) {\n res.json({\n jsonrpc: '2.0',\n id: request.id,\n error: {\n code: -32603,\n message: (error as Error).message,\n },\n } as JsonRpcResponse);\n }\n });\n\n app.post('/mcp/stream', async (req: Request, res: Response) => {\n const request = req.body as JsonRpcRequest;\n\n res.setHeader('Content-Type', 'text/event-stream');\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('Connection', 'keep-alive');\n\n try {\n res.write(`event: start\\n`);\n res.write(`data: ${JSON.stringify({ id: request.id })}\\n\\n`);\n\n const result = await handleRequest(request);\n\n res.write(`event: result\\n`);\n res.write(`data: ${JSON.stringify(result)}\\n\\n`);\n\n res.write(`event: end\\n`);\n res.write(`data: {}\\n\\n`);\n\n res.end();\n } catch (error) {\n res.write(`event: error\\n`);\n res.write(\n `data: ${JSON.stringify({ error: (error as Error).message })}\\n\\n`\n );\n res.end();\n }\n });\n\n app.get('/tools', (_req, res) => {\n res.json({\n tools: allTools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n })),\n });\n });\n\n return app.listen(port, () => {\n console.log(`Agent Tools MCP HTTP server running on port ${port}`);\n console.log(`Endpoints:`);\n console.log(` POST /mcp - JSON-RPC endpoint`);\n console.log(` POST /mcp/stream - Streaming endpoint`);\n console.log(` GET /tools - List available tools`);\n console.log(` GET /health - Health check`);\n });\n}\n\nasync function handleRequest(request: JsonRpcRequest): Promise<JsonRpcResponse> {\n const { method, params, id } = request;\n\n switch (method) {\n case 'tools/list':\n return {\n jsonrpc: '2.0',\n id,\n result: {\n tools: allTools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n })),\n },\n };\n\n case 'tools/call': {\n const { name, arguments: args } = params as {\n name: string;\n arguments: Record<string, unknown>;\n };\n\n const tool = allTools.find((t) => t.name === name);\n if (!tool) {\n return {\n jsonrpc: '2.0',\n id,\n error: { code: -32601, message: `Unknown tool: ${name}` },\n };\n }\n\n try {\n const result = await tool.handler(args as never);\n return { jsonrpc: '2.0', id, result };\n } catch (error) {\n return {\n jsonrpc: '2.0',\n id,\n error: { code: -32603, message: (error as Error).message },\n };\n }\n }\n\n case 'initialize':\n return {\n jsonrpc: '2.0',\n id,\n result: {\n protocolVersion: '2024-11-05',\n serverInfo: {\n name: 'agent-tools',\n version: '1.0.0',\n },\n capabilities: {\n tools: {},\n },\n },\n };\n\n default:\n return {\n jsonrpc: '2.0',\n id,\n error: { code: -32601, message: `Method not found: ${method}` },\n };\n }\n}\n","import express, { Request, Response } from 'express';\nimport { allTools } from '../tools';\n\ninterface Client {\n id: string;\n res: Response;\n}\n\nconst clients: Map<string, Client> = new Map();\n\nexport function createSSEServer(port: number = 3001) {\n const app = express();\n\n app.use(express.json({ limit: '50mb' }));\n\n app.use((_req, res, next) => {\n res.header('Access-Control-Allow-Origin', '*');\n res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');\n res.header('Access-Control-Allow-Headers', 'Content-Type');\n next();\n });\n\n app.get('/health', (_req, res) => {\n res.json({ status: 'ok', server: 'agent-tools-mcp-sse', version: '1.0.0' });\n });\n\n app.get('/sse', (req: Request, res: Response) => {\n const clientId = Math.random().toString(36).substring(7);\n\n res.setHeader('Content-Type', 'text/event-stream');\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('Connection', 'keep-alive');\n\n res.write(`event: connected\\n`);\n res.write(`data: ${JSON.stringify({ clientId })}\\n\\n`);\n\n res.write(`event: endpoint\\n`);\n res.write(`data: ${JSON.stringify({ endpoint: `/message?clientId=${clientId}` })}\\n\\n`);\n\n clients.set(clientId, { id: clientId, res });\n\n req.on('close', () => {\n clients.delete(clientId);\n });\n });\n\n app.post('/message', async (req: Request, res: Response) => {\n const clientId = req.query.clientId as string;\n const client = clients.get(clientId);\n\n if (!client) {\n return res.status(404).json({ error: 'Client not found' });\n }\n\n const { method, params, id } = req.body;\n\n try {\n let result: unknown;\n\n switch (method) {\n case 'tools/list':\n result = {\n tools: allTools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n })),\n };\n break;\n\n case 'tools/call': {\n const { name, arguments: args } = params;\n const tool = allTools.find((t) => t.name === name);\n\n if (!tool) {\n throw new Error(`Unknown tool: ${name}`);\n }\n\n result = await tool.handler(args);\n break;\n }\n\n case 'initialize':\n result = {\n protocolVersion: '2024-11-05',\n serverInfo: {\n name: 'agent-tools',\n version: '1.0.0',\n },\n capabilities: {\n tools: {},\n },\n };\n break;\n\n default:\n throw new Error(`Unknown method: ${method}`);\n }\n\n client.res.write(`event: message\\n`);\n client.res.write(\n `data: ${JSON.stringify({ jsonrpc: '2.0', id, result })}\\n\\n`\n );\n\n res.json({ status: 'sent' });\n } catch (error) {\n client.res.write(`event: message\\n`);\n client.res.write(\n `data: ${JSON.stringify({\n jsonrpc: '2.0',\n id,\n error: { code: -32603, message: (error as Error).message },\n })}\\n\\n`\n );\n\n res.json({ status: 'error', error: (error as Error).message });\n }\n });\n\n app.get('/tools', (_req, res) => {\n res.json({\n tools: allTools.map((tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: tool.inputSchema,\n })),\n });\n });\n\n return app.listen(port, () => {\n console.log(`Agent Tools MCP SSE server running on port ${port}`);\n console.log(`Endpoints:`);\n console.log(` GET /sse - SSE connection`);\n console.log(` POST /message - Send message (requires clientId)`);\n console.log(` GET /tools - List available tools`);\n console.log(` GET /health - Health check`);\n });\n}\n","import { Command } from 'commander';\nimport { runStdioServer } from './server';\nimport { createHttpServer, createSSEServer } from './transports';\n\nconst program = new Command();\n\nprogram\n .name('agent-tools-mcp')\n .description('Agent Tools MCP Server - Deterministic data transformation tools')\n .version('1.0.0');\n\nprogram\n .option('-t, --transport <type>', 'Transport type: stdio, sse, http', 'stdio')\n .option('-p, --port <number>', 'Port for HTTP/SSE transport', '3001')\n .action(async (options) => {\n const { transport, port } = options;\n\n console.log(`Starting Agent Tools MCP server...`);\n console.log(`Transport: ${transport}`);\n\n switch (transport) {\n case 'stdio':\n await runStdioServer();\n break;\n\n case 'http':\n createHttpServer(parseInt(port, 10));\n break;\n\n case 'sse':\n createSSEServer(parseInt(port, 10));\n break;\n\n default:\n console.error(`Unknown transport: ${transport}`);\n process.exit(1);\n }\n });\n\nprogram.parse();\n"]}
|