├── translation ├── README.md ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json └── index.ts ├── .DS_Store ├── vOCR ├── src │ ├── lib │ │ └── index.ts │ ├── tools.ts │ └── index.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json ├── README.md └── .gitignore ├── embedding ├── src │ ├── lib │ │ └── index.ts │ ├── tools.ts │ └── index.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json └── .gitignore ├── sentiment ├── src │ ├── lib │ │ └── index.ts │ ├── tools.ts │ └── index.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json ├── README.md └── .gitignore ├── ai-web-search ├── src │ ├── lib │ │ └── index.ts │ ├── tools.ts │ └── index.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json ├── README.md └── .gitignore ├── speechtotext ├── src │ ├── lib │ │ └── index.ts │ ├── tools.ts │ └── index.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json ├── README.md └── .gitignore ├── texttospeech ├── src │ ├── lib │ │ └── index.ts │ ├── tools.ts │ └── index.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json ├── README.md └── .gitignore ├── objectdetection ├── src │ ├── lib │ │ └── index.ts │ ├── tools.ts │ └── index.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json ├── README.md └── .gitignore ├── nsfw ├── src │ ├── lib │ │ └── index.ts │ ├── tools.ts │ └── index.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json ├── README.md ├── .gitignore └── yarn.lock ├── deepresearch ├── src │ ├── lib │ │ └── index.ts │ ├── tools.ts │ └── index.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json ├── README.md └── .gitignore ├── ai-web-scraper ├── src │ ├── lib │ │ └── index.ts │ ├── index.ts │ └── tools.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json ├── README.md └── .gitignore ├── image-generation ├── src │ ├── lib │ │ └── index.ts │ ├── tools.ts │ └── index.ts ├── tsconfig.json ├── Dockerfile ├── smithery.yaml ├── biome.json ├── package.json ├── README.md └── .gitignore └── README.md /translation/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JigsawStack/jigsawstack-mcp-server/HEAD/.DS_Store -------------------------------------------------------------------------------- /vOCR/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | 3 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 4 | 5 | if (!JIGSAWSTACK_API_KEY) { 6 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 7 | } 8 | 9 | const jigsawStackClient = JigsawStack({ 10 | apiKey: JIGSAWSTACK_API_KEY, 11 | }); 12 | 13 | export default jigsawStackClient; -------------------------------------------------------------------------------- /embedding/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | 3 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 4 | 5 | if (!JIGSAWSTACK_API_KEY) { 6 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 7 | } 8 | 9 | const jigsawStackClient = JigsawStack({ 10 | apiKey: JIGSAWSTACK_API_KEY, 11 | }); 12 | 13 | export default jigsawStackClient; -------------------------------------------------------------------------------- /sentiment/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | 3 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 4 | 5 | if (!JIGSAWSTACK_API_KEY) { 6 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 7 | } 8 | 9 | const jigsawStackClient = JigsawStack({ 10 | apiKey: JIGSAWSTACK_API_KEY, 11 | }); 12 | 13 | export default jigsawStackClient; -------------------------------------------------------------------------------- /ai-web-search/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | 3 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 4 | 5 | if (!JIGSAWSTACK_API_KEY) { 6 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 7 | } 8 | 9 | const jigsawStackClient = JigsawStack({ 10 | apiKey: JIGSAWSTACK_API_KEY, 11 | }); 12 | 13 | export default jigsawStackClient; -------------------------------------------------------------------------------- /speechtotext/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | 3 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 4 | 5 | if (!JIGSAWSTACK_API_KEY) { 6 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 7 | } 8 | 9 | const jigsawStackClient = JigsawStack({ 10 | apiKey: JIGSAWSTACK_API_KEY, 11 | }); 12 | 13 | export default jigsawStackClient; -------------------------------------------------------------------------------- /texttospeech/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | 3 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 4 | 5 | if (!JIGSAWSTACK_API_KEY) { 6 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 7 | } 8 | 9 | const jigsawStackClient = JigsawStack({ 10 | apiKey: JIGSAWSTACK_API_KEY, 11 | }); 12 | 13 | export default jigsawStackClient; -------------------------------------------------------------------------------- /objectdetection/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | 3 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 4 | 5 | if (!JIGSAWSTACK_API_KEY) { 6 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 7 | } 8 | 9 | const jigsawStackClient = JigsawStack({ 10 | apiKey: JIGSAWSTACK_API_KEY, 11 | }); 12 | 13 | export default jigsawStackClient; -------------------------------------------------------------------------------- /nsfw/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | import dotenv from "dotenv"; 3 | 4 | dotenv.config(); 5 | 6 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 7 | 8 | if (!JIGSAWSTACK_API_KEY) { 9 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 10 | } 11 | 12 | const jigsawStackClient = JigsawStack({ 13 | apiKey: JIGSAWSTACK_API_KEY, 14 | }); 15 | 16 | export default jigsawStackClient; -------------------------------------------------------------------------------- /deepresearch/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | import dotenv from "dotenv"; 3 | 4 | dotenv.config(); 5 | 6 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 7 | 8 | if (!JIGSAWSTACK_API_KEY) { 9 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 10 | } 11 | 12 | const jigsawStackClient = JigsawStack({ 13 | apiKey: JIGSAWSTACK_API_KEY, 14 | }); 15 | 16 | export default jigsawStackClient; -------------------------------------------------------------------------------- /ai-web-scraper/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | import dotenv from "dotenv"; 3 | 4 | dotenv.config(); 5 | 6 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 7 | 8 | if (!JIGSAWSTACK_API_KEY) { 9 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 10 | } 11 | 12 | const jigsawStackClient = JigsawStack({ 13 | apiKey: JIGSAWSTACK_API_KEY, 14 | }); 15 | 16 | export default jigsawStackClient; -------------------------------------------------------------------------------- /image-generation/src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | import dotenv from "dotenv"; 3 | 4 | dotenv.config(); 5 | 6 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 7 | 8 | // if (!JIGSAWSTACK_API_KEY) { 9 | // throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 10 | // } 11 | 12 | const jigsawStackClient = JigsawStack({ 13 | apiKey: JIGSAWSTACK_API_KEY, 14 | }); 15 | 16 | export default jigsawStackClient; -------------------------------------------------------------------------------- /nsfw/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /translation/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": ".", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /vOCR/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /embedding/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /sentiment/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /ai-web-scraper/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /ai-web-search/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /deepresearch/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /speechtotext/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /texttospeech/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /image-generation/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /objectdetection/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "./dist", 7 | "rootDir": "./src", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true, 11 | "forceConsistentCasingInFileNames": true 12 | }, 13 | "include": ["src/**/*", "test/**/*", "types/**/*", "scripts/**/*", "src/index.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /sentiment/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | export const SENTIMENT: Tool = { 4 | name: "sentiment", 5 | description: "Analyze the sentiment of your text with AI, powered by JigsawStack", 6 | inputSchema: { 7 | type: "object", 8 | properties: { 9 | text: { 10 | type: "string", 11 | description: "The text to analyze", 12 | }, 13 | }, 14 | required: ["text"], 15 | }, 16 | }; 17 | 18 | 19 | const tools = [SENTIMENT]; 20 | 21 | export default tools; -------------------------------------------------------------------------------- /nsfw/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | const NSFW: Tool = { 4 | name: "nsfw", 5 | description: "Validate if an image is NSFW", 6 | inputSchema: { 7 | type: "object", 8 | properties: { 9 | url: { type: "string", description: "URL for the image input." }, 10 | file_store_key: { type: "string", description: "Optional file store key." }, 11 | }, 12 | required: ["url"], 13 | }, 14 | }; 15 | 16 | const tools = [NSFW]; 17 | 18 | export default tools; -------------------------------------------------------------------------------- /nsfw/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /vOCR/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /embedding/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /sentiment/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /ai-web-scraper/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /ai-web-search/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /deepresearch/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /nsfw/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /objectdetection/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /speechtotext/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /texttospeech/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /translation/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /vOCR/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /deepresearch/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /embedding/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /image-generation/Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by https://smithery.ai. See: https://smithery.ai/docs/config#dockerfile 2 | FROM node:lts-alpine 3 | 4 | WORKDIR /app 5 | 6 | # Install dependencies 7 | COPY package*.json ./ 8 | RUN npm install --ignore-scripts 9 | 10 | # Copy the rest of the application source code 11 | COPY . . 12 | 13 | # Build the project 14 | RUN npm run build 15 | 16 | # Expose port if needed (update if your server uses another port) 17 | # EXPOSE 3000 18 | 19 | ENV JIGSAWSTACK_API_KEY= 20 | 21 | # Command will be provided by smithery.yaml 22 | CMD ["node", "dist/index.js"] 23 | -------------------------------------------------------------------------------- /sentiment/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /speechtotext/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /texttospeech/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /translation/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /ai-web-scraper/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /ai-web-search/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /objectdetection/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | 3 | startCommand: 4 | type: stdio 5 | configSchema: 6 | type: object 7 | required: 8 | - jigsawstackApiKey 9 | properties: 10 | jigsawstackApiKey: 11 | type: string 12 | commandFunction: 13 | |- 14 | (config) => ({ 15 | command: 'node', 16 | args: ['dist/index.js'], 17 | env: { 18 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 19 | } 20 | }) 21 | exampleConfig: 22 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 23 | -------------------------------------------------------------------------------- /texttospeech/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | 4 | 5 | 6 | const TEXT_TO_SPEECH: Tool = { 7 | name: "text-to-speech", 8 | description: "Convert text to speech", 9 | inputSchema: { 10 | type: "object", 11 | properties: { 12 | text: { type: "string", description: "The text to convert to speech." }, 13 | accent: { type: "string", description: "Accent for the speech (SupportedAccents)." }, 14 | voice_clone_id: { type: "string", description: "Voice clone ID to use for speech synthesis." }, 15 | }, 16 | required: ["text"], 17 | }, 18 | }; 19 | 20 | 21 | const tools = [TEXT_TO_SPEECH]; 22 | 23 | export default tools; -------------------------------------------------------------------------------- /image-generation/smithery.yaml: -------------------------------------------------------------------------------- 1 | # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml 2 | runtime: "container" 3 | build: 4 | dockerfile: "Dockerfile" 5 | dockerBuildPath: "." 6 | startCommand: 7 | type: stdio 8 | configSchema: 9 | type: object 10 | required: 11 | - jigsawstackApiKey 12 | properties: 13 | jigsawstackApiKey: 14 | type: string 15 | commandFunction: 16 | |- 17 | (config) => ({ 18 | command: 'node', 19 | args: ['dist/index.js'], 20 | env: { 21 | JIGSAWSTACK_API_KEY: config.jigsawstackApiKey 22 | } 23 | }) 24 | exampleConfig: 25 | jigsawstackApiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxx" 26 | -------------------------------------------------------------------------------- /embedding/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | 4 | export const EMBEDDINGS: Tool = { 5 | name: "embeddings", 6 | description: "Generate embeddings for a given text, pdf or image", 7 | inputSchema: { 8 | type: "object", 9 | properties: { 10 | text: { 11 | type: "string", 12 | description: "The text to generate embeddings for", 13 | }, 14 | type: { 15 | type: "string", 16 | description: "The type of content to generate embeddings for", 17 | enum: ["text", "image", "audio", "text-other", "pdf"], 18 | }, 19 | token_overflow_mode: { 20 | type: "string", 21 | description: "The mode to handle token overflow", 22 | enum: ["truncate", "error"], 23 | }, 24 | }, 25 | required: ["text", "type", "token_overflow_mode"], 26 | }, 27 | }; 28 | 29 | const tools = [ EMBEDDINGS ] 30 | 31 | export default tools; -------------------------------------------------------------------------------- /objectdetection/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | 4 | const OBJECT_DETECTION: Tool = { 5 | name: "object-detection", 6 | description: "Detect objects in an image", 7 | inputSchema: { 8 | type: "object", 9 | properties: { 10 | url: { type: "string", description: "URL for the image input." }, 11 | file_store_key: { type: "string", description: "Optional file store key." }, 12 | prompts: { 13 | type: "array", 14 | items: { type: "string" }, 15 | description: "Prompts to guide object detection.", 16 | }, 17 | features: { 18 | type: "array", 19 | items: { 20 | type: "string", 21 | enum: ["object_detection", "gui"], 22 | }, 23 | description: "Features to enable for detection.", 24 | }, 25 | annotated_image: { type: "boolean", description: "Whether to return an annotated image." }, 26 | }, 27 | }, 28 | }; 29 | const tools = [OBJECT_DETECTION]; 30 | 31 | export default tools; -------------------------------------------------------------------------------- /vOCR/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | const VOCR: Tool = { 4 | name: "vocr", 5 | description: "Extract text from an image", 6 | inputSchema: { 7 | type: "object", 8 | properties: { 9 | prompt: { 10 | oneOf: [ 11 | { type: "string", description: "Prompt for OCR extraction." }, 12 | { 13 | type: "array", 14 | items: { type: "string" }, 15 | description: "Array of prompts for OCR extraction.", 16 | }, 17 | ], 18 | description: "Prompt(s) for OCR extraction.", 19 | }, 20 | url: { type: "string", description: "URL for the image input." }, 21 | file_store_key: { type: "string", description: "Optional file store key." }, 22 | page_range: { 23 | type: "array", 24 | items: { type: "number" }, 25 | description: "Page range to extract from (for multi-page files).", 26 | }, 27 | }, 28 | required: ["prompt"], 29 | }, 30 | }; 31 | 32 | const tools = [VOCR]; 33 | 34 | export default tools; -------------------------------------------------------------------------------- /nsfw/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vOCR/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /deepresearch/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /embedding/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /sentiment/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /speechtotext/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /texttospeech/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /translation/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vOCR/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jigsawstack-vocr", 3 | "version": "0.0.1", 4 | "description": "Visual OCR with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ai-web-scraper/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ai-web-search/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /image-generation/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /objectdetection/biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /speechtotext/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | const SPEECH_TO_TEXT: Tool = { 4 | name: "speech-to-text", 5 | description: "Convert speech to text, powered by JigsawStack", 6 | inputSchema: { 7 | type: "object", 8 | properties: { 9 | url: { type: "string", description: "URL for the audio input." }, 10 | file_store_key: { type: "string", description: "Optional file store key." }, 11 | language: { type: "string", description: "Language of the audio." }, 12 | translate: { type: "boolean", description: "Whether to translate the recognized text." }, 13 | by_speaker: { type: "boolean", description: "Whether to separate text by speaker." }, 14 | webhook_url: { type: "string", description: "Webhook URL for asynchronous results." }, 15 | batch_size: { type: "number", description: "Batch size for processing." }, 16 | chunk_duration: { type: "number", description: "Duration of each audio chunk in seconds." }, 17 | }, 18 | }, 19 | }; 20 | 21 | 22 | const tools = [SPEECH_TO_TEXT]; 23 | 24 | export default tools; -------------------------------------------------------------------------------- /nsfw/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jigsawstack-nsfw", 3 | "version": "0.0.1", 4 | "description": "NSFW content detection with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ai-web-scraper/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jigsawstack-aiscrape", 3 | "version": "0.0.1", 4 | "description": "AI Scrape with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ai-web-search/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jigsawstack-websearch", 3 | "version": "0.0.1", 4 | "description": "Web search with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /deepresearch/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jigsawstack-deepresearch", 3 | "version": "0.0.1", 4 | "description": "Deep Research with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /embedding/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sentiment", 3 | "version": "0.1.1", 4 | "description": "Analyze the sentiment of your text with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /image-generation/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jigsawstack-imagegen", 3 | "version": "0.0.1", 4 | "description": "Generate images with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /speechtotext/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jigsawstack-speectotext", 3 | "version": "0.0.1", 4 | "description": "Speech to text with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /texttospeech/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jigsawstack-texttospeech", 3 | "version": "0.0.1", 4 | "description": "Text to speech with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /objectdetection/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jigsawstack-objectdetection", 3 | "version": "0.0.1", 4 | "description": "Object detection with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /translation/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ai-translation", 3 | "version": "0.1.0", 4 | "description": "Let AI translate your text, in 180+ language pairs! From JigsawStack.", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.4", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /sentiment/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jigsawstack-sentiment", 3 | "version": "0.0.1", 4 | "description": "Analyze the sentiment of your text with AI, powered by JigsawStack", 5 | "type": "module", 6 | "bin": { 7 | "jigsawstack-mcp-server": "dist/index.js" 8 | }, 9 | "files": ["dist"], 10 | "scripts": { 11 | "build": "tsc", 12 | "watch": "tsc --watch", 13 | "start": "node dist/index.js", 14 | "dev": "NODE_OPTIONS=\"--loader ts-node/esm\" node index.ts", 15 | "inspector": "npx @modelcontextprotocol/inspector npm run dev", 16 | "format": "biome check --write ." 17 | }, 18 | "devDependencies": { 19 | "@types/node": "^16.11.7", 20 | "shx": "^0.3.4", 21 | "typescript": "^4.5.4" 22 | }, 23 | "keywords": ["web", "mcp", "server", "jigsawstack", "small", "fast", "models", "automation", "tasks", "specialized", "finetuning"], 24 | "author": "JigsawStack", 25 | "license": "ISC", 26 | "dependencies": { 27 | "@modelcontextprotocol/sdk": "^1.6.0", 28 | "dotenv": "^16.4.7", 29 | "jigsawstack": "^0.2.10", 30 | "ts-node": "^10.9.2", 31 | "zod": "3.24.2" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ai-web-search/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | const WEB_SEARCH: Tool = { 4 | name: "web-search", 5 | description: "Search the web", 6 | inputSchema: { 7 | type: "object", 8 | properties: { 9 | query: { type: "string", description: "The search query." }, 10 | spell_check: { type: "boolean", description: "Enable spell check for the query." }, 11 | safe_search: { 12 | type: "string", 13 | enum: ["strict", "moderate", "off"], 14 | description: "Safe search mode.", 15 | }, 16 | ai_overview: { type: "boolean", description: "Enable AI overview in results." }, 17 | byo_urls: { 18 | type: "array", 19 | items: { type: "string" }, 20 | description: "Bring your own URLs to search within.", 21 | }, 22 | country_code: { type: "string", description: "Country code for localized search." }, 23 | auto_scrape: { type: "boolean", description: "Automatically scrape results." }, 24 | }, 25 | required: ["query"], 26 | }, 27 | }; 28 | 29 | 30 | const tools = [WEB_SEARCH]; 31 | 32 | export default tools; -------------------------------------------------------------------------------- /deepresearch/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | const DEEP_RESEARCH: Tool = { 4 | name: "deep-research", 5 | description: "Perform deep research on a given topic", 6 | inputSchema: { 7 | type: "object", 8 | properties: { 9 | query: { type: "string", description: "The research query." }, 10 | spell_check: { type: "boolean", description: "Enable spell check for the query." }, 11 | safe_search: { 12 | type: "string", 13 | enum: ["strict", "moderate", "off"], 14 | description: "Safe search mode.", 15 | }, 16 | ai_overview: { type: "boolean", description: "Enable AI overview in results." }, 17 | byo_urls: { 18 | type: "array", 19 | items: { type: "string" }, 20 | description: "Bring your own URLs to research within.", 21 | }, 22 | country_code: { type: "string", description: "Country code for localized research." }, 23 | auto_scrape: { type: "boolean", description: "Automatically scrape results." }, 24 | deep_research_config: { 25 | type: "object", 26 | properties: { 27 | max_depth: { type: "number", description: "Maximum depth for research." }, 28 | max_breadth: { type: "number", description: "Maximum breadth for research." }, 29 | max_output_tokens: { type: "number", description: "Maximum output tokens." }, 30 | target_output_tokens: { type: "number", description: "Target output tokens." }, 31 | }, 32 | description: "Configuration for deep research mode.", 33 | }, 34 | }, 35 | required: ["query"], 36 | }, 37 | }; 38 | 39 | const tools = [DEEP_RESEARCH]; 40 | 41 | export default tools; -------------------------------------------------------------------------------- /nsfw/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack NSFW", 10 | version: "0.0.1", 11 | description: "JigsawStack NSFW MCP Server", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | 23 | 24 | 25 | 26 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 27 | tools 28 | })); 29 | 30 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 31 | switch (request.params.name) { 32 | case "nsfw": { 33 | const { url, file_store_key } = request.params.arguments as { 34 | url?: string; 35 | file_store_key?: string; 36 | }; 37 | try { 38 | const result = await jigsawStackClient.validate.nsfw({ url, file_store_key }); 39 | return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; 40 | } catch (error) { 41 | return { content: [{ type: "text", text: `Failed to validate NSFW: ${(error as Error).message}` }], isError: true }; 42 | } 43 | } 44 | default: 45 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 46 | } 47 | }); 48 | 49 | const transport = new StdioServerTransport(); 50 | server.connect(transport).catch((error) => { 51 | console.error("Failed to start server:", error); 52 | process.exit(1); 53 | }); 54 | -------------------------------------------------------------------------------- /sentiment/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack Sentiment", 10 | version: "0.0.1", 11 | description: "JigsawStack Sentiment MCP Server", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | 23 | 24 | const analyze = async ( 25 | text: string, 26 | ): Promise => { 27 | const payload: any = {}; 28 | if (text) payload.text = text; 29 | 30 | const result = await jigsawStackClient.sentiment(payload); 31 | return JSON.stringify(result, null, 2); 32 | }; 33 | 34 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 35 | tools 36 | })); 37 | 38 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 39 | switch (request.params.name) { 40 | case "sentiment": { 41 | const { text } = request.params.arguments as { 42 | text: string; 43 | }; 44 | try { 45 | const result = await analyze(text); 46 | return { content: [{ type: "text", text: result }] }; 47 | } catch (error) { 48 | return { content: [{ type: "text", text: `Failed to perform analysis: ${(error as Error).message}` }], isError: true }; 49 | } 50 | } 51 | default: 52 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 53 | } 54 | }); 55 | 56 | const transport = new StdioServerTransport(); 57 | server.connect(transport).catch((error) => { 58 | console.error("Failed to start server:", error); 59 | process.exit(1); 60 | }); 61 | -------------------------------------------------------------------------------- /image-generation/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | 4 | const IMAGE_GENERATION: Tool = { 5 | name: "image-generation", 6 | description: "Generate an image from a given text", 7 | inputSchema: { 8 | type: "object", 9 | properties: { 10 | prompt: { type: "string", description: "The prompt to generate the image." }, 11 | aspect_ratio: { 12 | type: "string", 13 | description: "The aspect ratio for the image.", 14 | enum: [ 15 | "1:1", "16:9", "21:9", "3:2", "2:3", "4:5", "5:4", "3:4", "4:3", "9:16", "9:21" 16 | ], 17 | }, 18 | width: { type: "number", description: "The width of the image in pixels." }, 19 | height: { type: "number", description: "The height of the image in pixels." }, 20 | steps: { type: "number", description: "The number of steps for image generation." }, 21 | output_format: { 22 | type: "string", 23 | description: "The output format of the image.", 24 | enum: ["png", "svg"], 25 | }, 26 | return_type: { 27 | type: "string", 28 | description: "The return type for the image.", 29 | enum: ["url", "binary", "base64"], 30 | }, 31 | advance_config: { 32 | type: "object", 33 | description: "Advanced configuration options.", 34 | properties: { 35 | negative_prompt: { type: "string", description: "Negative prompt to avoid certain elements." }, 36 | guidance: { type: "number", description: "Guidance scale for image generation." }, 37 | seed: { type: "number", description: "Random seed for image generation." }, 38 | }, 39 | }, 40 | url: { type: "string", description: "Optional URL for image input." }, 41 | file_store_key: { type: "string", description: "Optional file store key." }, 42 | }, 43 | required: ["prompt"], 44 | }, 45 | }; 46 | 47 | 48 | const tools = [IMAGE_GENERATION]; 49 | 50 | export default tools; -------------------------------------------------------------------------------- /embedding/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack Embeddings", 10 | version: "0.0.1", 11 | description: "JigsawStack Embeddings MCP Server", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | 23 | 24 | const analyze = async ( 25 | text: string, 26 | ): Promise => { 27 | const payload: any = {}; 28 | if (text) payload.text = text; 29 | 30 | const result = await jigsawStackClient.sentiment(payload); 31 | return JSON.stringify(result, null, 2); 32 | }; 33 | 34 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 35 | tools 36 | })); 37 | 38 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 39 | switch (request.params.name) { 40 | case "embeddings": { 41 | const { text } = request.params.arguments as { 42 | text: string; 43 | }; 44 | try { 45 | const result = await jigsawStackClient.embedding({ 46 | text, 47 | type: "text", 48 | token_overflow_mode: "truncate", 49 | }); 50 | return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; 51 | } catch (error) { 52 | return { content: [{ type: "text", text: `Failed to generate embeddings: ${(error as Error).message}` }], isError: true }; 53 | } 54 | } 55 | default: 56 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 57 | } 58 | }); 59 | 60 | const transport = new StdioServerTransport(); 61 | server.connect(transport).catch((error) => { 62 | console.error("Failed to start server:", error); 63 | process.exit(1); 64 | }); 65 | -------------------------------------------------------------------------------- /ai-web-search/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack Web Search", 10 | version: "0.0.1", 11 | description: "JigsawStack Web Search MCP Server", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | 23 | 24 | 25 | 26 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 27 | tools 28 | })); 29 | 30 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 31 | switch (request.params.name) { 32 | 33 | case "web-search": { 34 | const { query, spell_check, safe_search, ai_overview, byo_urls, country_code, auto_scrape } = request.params.arguments as { 35 | query: string; 36 | spell_check?: boolean; 37 | safe_search?: "strict" | "moderate" | "off"; 38 | ai_overview?: boolean; 39 | byo_urls?: string[]; 40 | country_code?: string; 41 | auto_scrape?: boolean; 42 | }; 43 | try { 44 | const result = await jigsawStackClient.web.search({ query, spell_check, safe_search, ai_overview, byo_urls, country_code, auto_scrape }); 45 | return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; 46 | } catch (error) { 47 | return { content: [{ type: "text", text: `Failed to search the web: ${(error as Error).message}` }], isError: true }; 48 | } 49 | } 50 | 51 | default: 52 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 53 | } 54 | }); 55 | 56 | const transport = new StdioServerTransport(); 57 | server.connect(transport).catch((error) => { 58 | console.error("Failed to start server:", error); 59 | process.exit(1); 60 | }); 61 | -------------------------------------------------------------------------------- /texttospeech/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack Text to Speech", 10 | version: "0.0.1", 11 | description: "JigsawStack Text to Speech MCP Server", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | 23 | 24 | const analyze = async ( 25 | text: string, 26 | ): Promise => { 27 | const payload: any = {}; 28 | if (text) payload.text = text; 29 | 30 | const result = await jigsawStackClient.sentiment(payload); 31 | return JSON.stringify(result, null, 2); 32 | }; 33 | 34 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 35 | tools 36 | })); 37 | 38 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 39 | switch (request.params.name) { 40 | 41 | case "text-to-speech": { 42 | const { text, accent, voice_clone_id } = request.params.arguments as { 43 | text: string; 44 | accent?: string; 45 | voice_clone_id?: string; 46 | }; 47 | try { 48 | const result = await jigsawStackClient.audio.text_to_speech({ text, accent: accent as any, voice_clone_id, return_type: "url" }); 49 | return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; 50 | } catch (error) { 51 | return { content: [{ type: "text", text: `Failed to convert text to speech: ${(error as Error).message}` }], isError: true }; 52 | } 53 | } 54 | 55 | default: 56 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 57 | } 58 | }); 59 | 60 | const transport = new StdioServerTransport(); 61 | server.connect(transport).catch((error) => { 62 | console.error("Failed to start server:", error); 63 | process.exit(1); 64 | }); 65 | -------------------------------------------------------------------------------- /vOCR/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack", 10 | version: "0.1.1", 11 | description: "JigsawStack MCP Server", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | 23 | 24 | const analyze = async ( 25 | text: string, 26 | ): Promise => { 27 | const payload: any = {}; 28 | if (text) payload.text = text; 29 | 30 | const result = await jigsawStackClient.sentiment(payload); 31 | return JSON.stringify(result, null, 2); 32 | }; 33 | 34 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 35 | tools 36 | })); 37 | 38 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 39 | switch (request.params.name) { 40 | case "vocr": { 41 | const { prompt, url, file_store_key, page_range } = request.params.arguments as { 42 | prompt: string | string[]; 43 | url?: string; 44 | file_store_key?: string; 45 | page_range?: number[]; 46 | }; 47 | try { 48 | const result = await jigsawStackClient.vision.vocr({ 49 | prompt, 50 | url, 51 | file_store_key, 52 | page_range, 53 | }); 54 | return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; 55 | } catch (error) { 56 | return { content: [{ type: "text", text: `Failed to extract text: ${(error as Error).message}` }], isError: true }; 57 | } 58 | } 59 | default: 60 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 61 | } 62 | }); 63 | 64 | const transport = new StdioServerTransport(); 65 | server.connect(transport).catch((error) => { 66 | console.error("Failed to start server:", error); 67 | process.exit(1); 68 | }); 69 | -------------------------------------------------------------------------------- /objectdetection/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack Object Detection", 10 | version: "0.0.1", 11 | description: "JigsawStack Object Detection MCP Server", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | 23 | 24 | const analyze = async ( 25 | text: string, 26 | ): Promise => { 27 | const payload: any = {}; 28 | if (text) payload.text = text; 29 | 30 | const result = await jigsawStackClient.sentiment(payload); 31 | return JSON.stringify(result, null, 2); 32 | }; 33 | 34 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 35 | tools 36 | })); 37 | 38 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 39 | switch (request.params.name) { 40 | case "object-detection": { 41 | const { url, file_store_key, prompts, features, annotated_image } = request.params.arguments as { 42 | url?: string; 43 | file_store_key?: string; 44 | prompts?: string[]; 45 | features?: ("object_detection" | "gui")[]; 46 | annotated_image?: boolean; 47 | }; 48 | try { 49 | const result = await jigsawStackClient.vision.object_detection({ url, file_store_key, prompts, features, annotated_image, return_type: "url" }); 50 | return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; 51 | } catch (error) { 52 | return { content: [{ type: "text", text: `Failed to detect objects: ${(error as Error).message}` }], isError: true }; 53 | } 54 | } 55 | default: 56 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 57 | } 58 | }); 59 | 60 | const transport = new StdioServerTransport(); 61 | server.connect(transport).catch((error) => { 62 | console.error("Failed to start server:", error); 63 | process.exit(1); 64 | }); 65 | -------------------------------------------------------------------------------- /deepresearch/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack Deep Research", 10 | version: "0.0.1", 11 | description: "Deep Research with AI, powered by JigsawStack", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | 23 | 24 | 25 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 26 | tools 27 | })); 28 | 29 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 30 | switch (request.params.name) { 31 | 32 | case "deep-research": { 33 | const { query, spell_check, safe_search, ai_overview, byo_urls, country_code, auto_scrape, deep_research_config } = request.params.arguments as { 34 | query: string; 35 | spell_check?: boolean; 36 | safe_search?: "strict" | "moderate" | "off"; 37 | ai_overview?: boolean; 38 | byo_urls?: string[]; 39 | country_code?: string; 40 | auto_scrape?: boolean; 41 | deep_research_config?: { 42 | max_depth?: number; 43 | max_breadth?: number; 44 | max_output_tokens?: number; 45 | target_output_tokens?: number; 46 | }; 47 | }; 48 | try { 49 | const result = await jigsawStackClient.web.search({ query, spell_check, safe_search, ai_overview, byo_urls, country_code, auto_scrape, deep_research: true, deep_research_config }); 50 | return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; 51 | } catch (error) { 52 | return { content: [{ type: "text", text: `Failed to perform deep research: ${(error as Error).message}` }], isError: true }; 53 | } 54 | } 55 | default: 56 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 57 | } 58 | }); 59 | 60 | const transport = new StdioServerTransport(); 61 | server.connect(transport).catch((error) => { 62 | console.error("Failed to start server:", error); 63 | process.exit(1); 64 | }); 65 | -------------------------------------------------------------------------------- /speechtotext/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack Speech to Text", 10 | version: "0.0.1", 11 | description: "JigsawStack Speech to Text MCP Server", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | 23 | 24 | const analyze = async ( 25 | text: string, 26 | ): Promise => { 27 | const payload: any = {}; 28 | if (text) payload.text = text; 29 | 30 | const result = await jigsawStackClient.sentiment(payload); 31 | return JSON.stringify(result, null, 2); 32 | }; 33 | 34 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 35 | tools 36 | })); 37 | 38 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 39 | switch (request.params.name) { 40 | 41 | case "speech-to-text": { 42 | const { 43 | url, 44 | file_store_key, 45 | language, 46 | translate, 47 | by_speaker, 48 | webhook_url, 49 | batch_size, 50 | chunk_duration, 51 | } = request.params.arguments as { 52 | url?: string; 53 | file_store_key?: string; 54 | language?: string; 55 | translate?: boolean; 56 | by_speaker?: boolean; 57 | webhook_url?: string; 58 | batch_size?: number; 59 | chunk_duration?: number; 60 | }; 61 | try { 62 | const result = await jigsawStackClient.audio.speech_to_text({ 63 | url, 64 | file_store_key, 65 | language, 66 | translate, 67 | by_speaker, 68 | webhook_url, 69 | batch_size, 70 | chunk_duration, 71 | }); 72 | return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; 73 | } catch (error) { 74 | return { content: [{ type: "text", text: `Failed to convert speech to text: ${(error as Error).message}` }], isError: true }; 75 | } 76 | } 77 | 78 | default: 79 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 80 | } 81 | }); 82 | 83 | const transport = new StdioServerTransport(); 84 | server.connect(transport).catch((error) => { 85 | console.error("Failed to start server:", error); 86 | process.exit(1); 87 | }); 88 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /nsfw/README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /vOCR/README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /ai-web-search/README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /deepresearch/README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /sentiment/README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /speechtotext/README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /texttospeech/README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /ai-web-scraper/README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /image-generation/README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /objectdetection/README.md: -------------------------------------------------------------------------------- 1 | # JigsawStack MCP Server 2 | 3 | ## Introduction 4 | JigsawStack MCP (Model Context Protocol) Server is a versatile platform designed to facilitate the integration and management of various tools. Each directory within the server represents a distinct tool that can be utilized for different purposes by an LLM. The server is built using Node.js and Express.js, and each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 5 | 6 | Start by obtaining your JIGSAWSTACK_API_KEY from the our website. You will need this key to access the JigsawStack services. You can get your API key by signing up for a free account at [JigsawStack](https://jigsawstack.com/dashboard). 7 | 8 | You can also install our MCPs via [Smithery AI](https://smithery.ai/?q=jigsawstack) 9 | 10 | ## Installation 11 | 12 | ### Prerequisites 13 | - Ensure you have `git` installed on your system. 14 | - Ensure you have `node.js` and `npm` installed. 15 | - Alternatively, you can use `yarn` instead of `npm`. as a package manager. 16 | 17 | ### Steps to Setup the repository: 18 | 1. Clone the repository: 19 | ```sh 20 | git clone https://github.com/yourusername/jigsawstack-mcp-server.git 21 | ``` 22 | 2. Navigate to the project directory: 23 | ```sh 24 | cd jigsawstack-mcp-server 25 | ``` 26 | 3. Install the necessary dependencies: 27 | ```sh 28 | npm install or yarn install 29 | ``` 30 | 31 | ## What is MCP? 32 | MCP stands for Model Context Protocol. It is a framework that allows users to integrate LLMs and manage various tools and components exposing external data in a modular fashion. Here each tool is encapsulated within its own directory, making it easy to add, remove, or update tools without affecting the overall system. 33 | 34 | ## Using JigsawStack MCP Server 35 | There are four tools available in the MCP Server. Each tool is contained within its own directory and has its own set of instructions for use. 36 | 37 | ### Running a tool 38 | To run a tool, 39 | 1. cd into the tool directory and follow the instructions. 40 | 2. Export the JIGSAWSTACK_API_KEY environment variable with your JIGSAWSTACK API key. 41 | ```sh 42 | export JIGSAWSTACK_API_KEY=your_api_key 43 | ``` 44 | 3. Start the server: 45 | ```sh 46 | npm start 47 | ``` 48 | 4. Access the server through your web browser at `http://localhost:3000`. 49 | 50 | ### Directory Structure 51 | - `/ai-web-scraper`: Let AI scrape the internet for you! 52 | - `/ai-web-search`: Search powered by AI capable of handling complex queries. 53 | - `/image-generation`: Generate images using prompts, to receive a base64 string of the image. 54 | 55 | ## Contact 56 | For any questions or issues, please contact us at hello@jigsawstack.com. 57 | -------------------------------------------------------------------------------- /nsfw/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /vOCR/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /embedding/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /sentiment/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /ai-web-scraper/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /ai-web-search/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /deepresearch/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /objectdetection/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /speechtotext/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /texttospeech/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /image-generation/.gitignore: -------------------------------------------------------------------------------- 1 | ### Node ### 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Optional stylelint cache 59 | .stylelintcache 60 | 61 | # Microbundle cache 62 | .rpt2_cache/ 63 | .rts2_cache_cjs/ 64 | .rts2_cache_es/ 65 | .rts2_cache_umd/ 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variable files 77 | .env 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | ### Node Patch ### 133 | # Serverless Webpack directories 134 | .webpack/ 135 | 136 | # Optional stylelint cache 137 | 138 | # SvelteKit build / generate output 139 | .svelte-kit 140 | 141 | ### react ### 142 | .DS_* 143 | **/*.backup.* 144 | **/*.back.* 145 | 146 | node_modules 147 | 148 | *.sublime* 149 | 150 | psd 151 | thumb 152 | sketch 153 | 154 | # End of https://www.toptal.com/developers/gitignore/api/node,react -------------------------------------------------------------------------------- /ai-web-scraper/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack AI Scraper", 10 | version: "0.0.1", 11 | description: "JigsawStack AI Scraper MCP Server", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 23 | tools 24 | })); 25 | 26 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 27 | switch (request.params.name) { 28 | case "ai-scraper": { 29 | const { 30 | url, 31 | root_element_selector, 32 | page_position, 33 | http_headers, 34 | reject_request_pattern, 35 | goto_options, 36 | wait_for, 37 | advance_config, 38 | size_preset, 39 | is_mobile, 40 | scale, 41 | width, 42 | height, 43 | cookies, 44 | force_rotate_proxy, 45 | byo_proxy, 46 | selectors, 47 | element_prompts, 48 | } = request.params.arguments as { 49 | url: string; 50 | root_element_selector?: string; 51 | page_position?: number; 52 | http_headers?: object; 53 | reject_request_pattern?: string[]; 54 | goto_options?: { timeout: number; wait_until: string }; 55 | wait_for?: { mode: string; value: string | number }; 56 | advance_config?: { console: boolean; network: boolean; cookies: boolean }; 57 | size_preset?: string; 58 | is_mobile?: boolean; 59 | scale?: number; 60 | width?: number; 61 | height?: number; 62 | cookies?: object[]; 63 | force_rotate_proxy?: boolean; 64 | byo_proxy?: { server: string; auth?: { username: string; password: string } }; 65 | selectors?: string[]; 66 | element_prompts?: string[]; 67 | }; 68 | try { 69 | const result = await jigsawStackClient.web.ai_scrape({ 70 | url, 71 | root_element_selector, 72 | page_position, 73 | http_headers, 74 | reject_request_pattern, 75 | goto_options, 76 | wait_for, 77 | advance_config, 78 | size_preset, 79 | is_mobile, 80 | scale, 81 | width, 82 | height, 83 | force_rotate_proxy, 84 | byo_proxy, 85 | selectors, 86 | element_prompts: element_prompts ?? [], 87 | }); 88 | return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; 89 | } catch (error) { 90 | return { content: [{ type: "text", text: `Failed to scrape website: ${(error as Error).message}` }], isError: true }; 91 | } 92 | } 93 | default: 94 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 95 | } 96 | }); 97 | 98 | const transport = new StdioServerTransport(); 99 | server.connect(transport).catch((error) => { 100 | console.error("Failed to start server:", error); 101 | process.exit(1); 102 | }); 103 | -------------------------------------------------------------------------------- /ai-web-scraper/src/tools.ts: -------------------------------------------------------------------------------- 1 | import { Tool } from "@modelcontextprotocol/sdk/types.js"; 2 | 3 | const AI_SCRAPER: Tool = { 4 | name: "ai-scraper", 5 | description: "Scrape a website", 6 | inputSchema: { 7 | type: "object", 8 | properties: { 9 | url: { type: "string", description: "URL of the website to scrape." }, 10 | root_element_selector: { type: "string", description: "Root element selector for scraping." }, 11 | page_position: { type: "number", description: "Page position for scraping." }, 12 | http_headers: { type: "object", description: "HTTP headers to use for the request." }, 13 | reject_request_pattern: { 14 | type: "array", 15 | items: { type: "string" }, 16 | description: "Patterns for requests to reject during scraping.", 17 | }, 18 | goto_options: { 19 | type: "object", 20 | properties: { 21 | timeout: { type: "number", description: "Timeout for navigation." }, 22 | wait_until: { type: "string", description: "When to consider navigation succeeded." }, 23 | }, 24 | description: "Options for page navigation.", 25 | }, 26 | wait_for: { 27 | type: "object", 28 | properties: { 29 | mode: { type: "string", description: "Wait mode." }, 30 | value: { oneOf: [ { type: "string" }, { type: "number" } ], description: "Wait value." }, 31 | }, 32 | description: "Wait for a specific condition before scraping.", 33 | }, 34 | advance_config: { 35 | type: "object", 36 | properties: { 37 | console: { type: "boolean", description: "Capture console logs." }, 38 | network: { type: "boolean", description: "Capture network logs." }, 39 | cookies: { type: "boolean", description: "Capture cookies." }, 40 | }, 41 | description: "Advanced configuration options.", 42 | }, 43 | size_preset: { type: "string", description: "Preset for viewport size." }, 44 | is_mobile: { type: "boolean", description: "Whether to emulate a mobile device." }, 45 | scale: { type: "number", description: "Scale factor for rendering." }, 46 | width: { type: "number", description: "Viewport width." }, 47 | height: { type: "number", description: "Viewport height." }, 48 | cookies: { 49 | type: "array", 50 | items: { type: "object" }, 51 | description: "Cookies to use for the request.", 52 | }, 53 | force_rotate_proxy: { type: "boolean", description: "Force proxy rotation." }, 54 | byo_proxy: { 55 | type: "object", 56 | properties: { 57 | server: { type: "string", description: "Proxy server address." }, 58 | auth: { 59 | type: "object", 60 | properties: { 61 | username: { type: "string", description: "Proxy username." }, 62 | password: { type: "string", description: "Proxy password." }, 63 | }, 64 | }, 65 | }, 66 | description: "Bring your own proxy configuration.", 67 | }, 68 | selectors: { 69 | type: "array", 70 | items: { type: "string" }, 71 | description: "Selectors for elements to scrape.", 72 | }, 73 | element_prompts: { 74 | type: "array", 75 | items: { type: "string" }, 76 | description: "Prompts for elements to scrape.", 77 | }, 78 | }, 79 | required: ["url", "element_prompts"], 80 | }, 81 | }; 82 | 83 | 84 | const tools = [AI_SCRAPER]; 85 | 86 | export default tools; -------------------------------------------------------------------------------- /image-generation/src/index.ts: -------------------------------------------------------------------------------- 1 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 2 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 3 | import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js"; 4 | import tools from "./tools.js"; 5 | import jigsawStackClient from "./lib/index.js"; 6 | 7 | const server: Server = new Server( 8 | { 9 | name: "JigsawStack Image Generation", 10 | version: "0.0.1", 11 | description: "JigsawStack Image Generation MCP Server", 12 | }, 13 | { 14 | capabilities: { 15 | tools: { 16 | ...tools, 17 | }, 18 | }, 19 | } 20 | ); 21 | 22 | 23 | 24 | 25 | 26 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 27 | tools 28 | })); 29 | 30 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 31 | switch (request.params.name) { 32 | case "image-generation": { 33 | try { 34 | const { 35 | prompt, 36 | aspect_ratio, 37 | width, 38 | height, 39 | steps, 40 | output_format, 41 | return_type, 42 | advance_config, 43 | url, 44 | file_store_key, 45 | } = request.params.arguments as { 46 | prompt: string; 47 | aspect_ratio?: string; 48 | width?: number; 49 | height?: number; 50 | steps?: number; 51 | output_format?: "png" | "svg"; 52 | return_type?: "url" | "binary" | "base64"; 53 | advance_config?: { 54 | negative_prompt?: string; 55 | guidance?: number; 56 | seed?: number; 57 | }; 58 | url?: string; 59 | file_store_key?: string; 60 | }; 61 | 62 | ["steps", "width", "height"].forEach((field) => { 63 | const value = (request.params.arguments as any)[field]; 64 | if (value !== undefined && isNaN(Number(value))) { 65 | throw new McpError(ErrorCode.InvalidParams, `Invalid ${field} value: ${value}`); 66 | } 67 | }); 68 | if (advance_config) { 69 | ["guidance", "seed"].forEach((field) => { 70 | const value = (advance_config as any)[field]; 71 | if (value !== undefined && isNaN(Number(value))) { 72 | throw new McpError(ErrorCode.InvalidParams, `Invalid advance_config.${field} value: ${value}`); 73 | } 74 | }); 75 | } 76 | 77 | const result = await jigsawStackClient.image_generation({ 78 | prompt, 79 | aspect_ratio: aspect_ratio as ( 80 | | "1:1" | "16:9" | "21:9" | "3:2" | "2:3" | "4:5" | "5:4" | "3:4" | "4:3" | "9:16" | "9:21" 81 | | undefined 82 | ), 83 | width: width !== undefined ? Number(width) : undefined, 84 | height: height !== undefined ? Number(height) : undefined, 85 | steps: steps !== undefined ? Number(steps) : undefined, 86 | output_format, 87 | return_type: return_type || "url", 88 | advance_config: advance_config 89 | ? { 90 | negative_prompt: advance_config.negative_prompt, 91 | guidance: 92 | advance_config.guidance !== undefined 93 | ? Number(advance_config.guidance) 94 | : undefined, 95 | seed: 96 | advance_config.seed !== undefined 97 | ? Number(advance_config.seed) 98 | : undefined, 99 | } 100 | : undefined, 101 | url, 102 | file_store_key, 103 | }); 104 | 105 | const content = [ 106 | { 107 | type: "text", 108 | text: JSON.stringify(result, null, 2), 109 | }, 110 | ]; 111 | return { content }; 112 | } catch (error: any) { 113 | console.error("Error processing IMAGE_GENERATION request:", error); 114 | const content = [ 115 | { 116 | type: "text", 117 | text: error.message, 118 | }, 119 | ]; 120 | return { content }; 121 | } 122 | } 123 | default: 124 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 125 | } 126 | }); 127 | 128 | const transport = new StdioServerTransport(); 129 | server.connect(transport).catch((error) => { 130 | console.error("Failed to start server:", error); 131 | process.exit(1); 132 | }); 133 | -------------------------------------------------------------------------------- /translation/index.ts: -------------------------------------------------------------------------------- 1 | import { JigsawStack } from "jigsawstack"; 2 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 3 | import { Server } from "@modelcontextprotocol/sdk/server/index.js"; 4 | import { CallToolRequestSchema, ListToolsRequestSchema, Tool, McpError, ErrorCode, TextContent } from "@modelcontextprotocol/sdk/types.js"; 5 | 6 | const TEXT_TRANSLATION: Tool = { 7 | name: "text-translation", 8 | description: "Translate text quickly and easily with JigsawStack, we support over 180+ language pairs.", 9 | inputSchema: { 10 | type: "object", 11 | properties: { 12 | text: { type: "string", description: "Text in current langauge." }, 13 | target_language: { type: "string", description: "Current Langauge code in en | es | jp format." }, 14 | }, 15 | required: ["text", "target_language"], 16 | }, 17 | }; 18 | 19 | const IMAGE_TRANSLATION: Tool = { 20 | name: "image-translation", 21 | description: "Translate images quickly and easily with JigsawStack, we support over 180+ language pairs.", 22 | inputSchema: { 23 | type: "object", 24 | properties: { 25 | image: { type: "string", description: "Image URL or base64Encoded Image that has to be translated" }, 26 | target_language: { type: "string", description: "Current Langauge code in en | es | jp format." }, 27 | }, 28 | required: ["image", "target_language"], 29 | }, 30 | }; 31 | 32 | const server: Server = new Server( 33 | { 34 | name: "translation", 35 | version: "0.1.1", 36 | }, 37 | { 38 | capabilities: { 39 | tools: { 40 | text_translation: TEXT_TRANSLATION, 41 | image_translation: IMAGE_TRANSLATION, 42 | }, 43 | }, 44 | } 45 | ); 46 | 47 | const JIGSAWSTACK_API_KEY = process.env.JIGSAWSTACK_API_KEY; 48 | 49 | if (!JIGSAWSTACK_API_KEY) { 50 | throw new Error("JIGSAWSTACK_API_KEY environment variable is required"); 51 | } 52 | 53 | // Create a new JigsawStack client // 54 | const jigsawStackClient = JigsawStack({ 55 | apiKey: JIGSAWSTACK_API_KEY, 56 | }); 57 | 58 | const translate_text = async (text: string, target_language: string): Promise => { 59 | const payload = { 60 | text: text, 61 | target_language: target_language, 62 | }; 63 | const result = await jigsawStackClient.translate.text(payload); 64 | return JSON.stringify(result, null, 2); 65 | }; 66 | 67 | async function base64ToBlob(base64Data: string): Promise { 68 | const contentType = "image/jpeg"; // Or your desired content type 69 | const buffer = Buffer.from(base64Data, "base64"); 70 | return new Blob([buffer], { type: contentType }); 71 | } 72 | 73 | const isValidBase64 = (str: string): boolean => { 74 | //clean whitespace from the string. 75 | const cleaned = str.trim(); 76 | //also ensure the length is a multiple of 4. 77 | return /^[A-Za-z0-9+/]+={0,2}$/.test(str) && str.length % 4 === 0; 78 | }; 79 | 80 | const isValidURL = (url: string): boolean => { 81 | try { 82 | new URL(url); 83 | return true; 84 | } catch { 85 | return false; 86 | } 87 | }; 88 | 89 | const translate_image = async (input: string, target_language: string): Promise => { 90 | //first upload the image to JigsawStack 91 | const imageUrlOrBase64 = input.startsWith("data:") ? input.split(",")[1] : input; 92 | if (!isValidBase64(imageUrlOrBase64) && !isValidURL(imageUrlOrBase64)) { 93 | throw new Error("Invalid image data: must be a valid base64 string or URL"); 94 | } 95 | let result; 96 | if (isValidURL(imageUrlOrBase64)) { 97 | result = await jigsawStackClient.translate.image({ 98 | url: imageUrlOrBase64, 99 | target_language: target_language, 100 | }); 101 | } else { 102 | // If it's a URL, fetch the image and convert it to Blob 103 | const imageBlob = await base64ToBlob(imageUrlOrBase64); 104 | 105 | result = await jigsawStackClient.translate.image(imageBlob, { 106 | target_language: target_language, 107 | }); 108 | } 109 | 110 | const translatedImageBuffer = await result.buffer(); 111 | 112 | const resultImageURL = await jigsawStackClient.store.upload(translatedImageBuffer, { 113 | temp_public_url: true, 114 | }); 115 | 116 | if (!resultImageURL.temp_public_url) { 117 | throw new Error("Failed to upload translated image to JigsawStack"); 118 | } 119 | return resultImageURL.temp_public_url; 120 | }; 121 | 122 | server.setRequestHandler(ListToolsRequestSchema, async () => ({ 123 | tools: [TEXT_TRANSLATION, IMAGE_TRANSLATION], 124 | })); 125 | 126 | server.setRequestHandler(CallToolRequestSchema, async (request) => { 127 | switch (request.params.name) { 128 | case "text-translation": 129 | const { text, target_language } = request.params.arguments as { 130 | text: string; 131 | target_language: string; 132 | }; 133 | try { 134 | const result = await translate_text(text, target_language); 135 | return { content: [{ type: "text", text: result }] }; 136 | } catch (error) { 137 | return { content: [{ type: "text", text: `Failed to perform translation: ${(error as Error).message}` }], isError: true }; 138 | } 139 | 140 | case "image-translation": 141 | const { image, target_language: targetLanguage } = request.params.arguments as { 142 | image: string; 143 | target_language: string; 144 | }; 145 | try { 146 | const result = await translate_image(image, targetLanguage); 147 | return { content: [{ type: "text", text: result }] }; 148 | } catch (error) { 149 | return { content: [{ type: "text", text: `Failed to perform translation: ${(error as Error).message}` }], isError: true }; 150 | } 151 | default: 152 | throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`); 153 | } 154 | }); 155 | 156 | const transport = new StdioServerTransport(); 157 | server.connect(transport).catch((error) => { 158 | console.error("Failed to start server:", error); 159 | process.exit(1); 160 | }); 161 | -------------------------------------------------------------------------------- /nsfw/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@cspotcode/source-map-support@^0.8.0": 6 | version "0.8.1" 7 | resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" 8 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 9 | dependencies: 10 | "@jridgewell/trace-mapping" "0.3.9" 11 | 12 | "@jridgewell/resolve-uri@^3.0.3": 13 | version "3.1.2" 14 | resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" 15 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 16 | 17 | "@jridgewell/sourcemap-codec@^1.4.10": 18 | version "1.5.0" 19 | resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" 20 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 21 | 22 | "@jridgewell/trace-mapping@0.3.9": 23 | version "0.3.9" 24 | resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" 25 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 26 | dependencies: 27 | "@jridgewell/resolve-uri" "^3.0.3" 28 | "@jridgewell/sourcemap-codec" "^1.4.10" 29 | 30 | "@modelcontextprotocol/sdk@^1.6.0": 31 | version "1.11.1" 32 | resolved "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz" 33 | integrity sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ== 34 | dependencies: 35 | content-type "^1.0.5" 36 | cors "^2.8.5" 37 | cross-spawn "^7.0.3" 38 | eventsource "^3.0.2" 39 | express "^5.0.1" 40 | express-rate-limit "^7.5.0" 41 | pkce-challenge "^5.0.0" 42 | raw-body "^3.0.0" 43 | zod "^3.23.8" 44 | zod-to-json-schema "^3.24.1" 45 | 46 | "@tsconfig/node10@^1.0.7": 47 | version "1.0.11" 48 | resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz" 49 | integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== 50 | 51 | "@tsconfig/node12@^1.0.7": 52 | version "1.0.11" 53 | resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" 54 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 55 | 56 | "@tsconfig/node14@^1.0.0": 57 | version "1.0.3" 58 | resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" 59 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 60 | 61 | "@tsconfig/node16@^1.0.2": 62 | version "1.0.4" 63 | resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" 64 | integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== 65 | 66 | "@types/node@^16.11.7": 67 | version "16.18.126" 68 | resolved "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz" 69 | integrity sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw== 70 | 71 | accepts@^2.0.0: 72 | version "2.0.0" 73 | resolved "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz" 74 | integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng== 75 | dependencies: 76 | mime-types "^3.0.0" 77 | negotiator "^1.0.0" 78 | 79 | acorn-walk@^8.1.1: 80 | version "8.3.4" 81 | resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz" 82 | integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== 83 | dependencies: 84 | acorn "^8.11.0" 85 | 86 | acorn@^8.11.0, acorn@^8.4.1: 87 | version "8.14.1" 88 | resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz" 89 | integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== 90 | 91 | arg@^4.1.0: 92 | version "4.1.3" 93 | resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" 94 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 95 | 96 | balanced-match@^1.0.0: 97 | version "1.0.2" 98 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 99 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 100 | 101 | body-parser@^2.2.0: 102 | version "2.2.0" 103 | resolved "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz" 104 | integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg== 105 | dependencies: 106 | bytes "^3.1.2" 107 | content-type "^1.0.5" 108 | debug "^4.4.0" 109 | http-errors "^2.0.0" 110 | iconv-lite "^0.6.3" 111 | on-finished "^2.4.1" 112 | qs "^6.14.0" 113 | raw-body "^3.0.0" 114 | type-is "^2.0.0" 115 | 116 | brace-expansion@^1.1.7: 117 | version "1.1.11" 118 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 119 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 120 | dependencies: 121 | balanced-match "^1.0.0" 122 | concat-map "0.0.1" 123 | 124 | bytes@3.1.2, bytes@^3.1.2: 125 | version "3.1.2" 126 | resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" 127 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 128 | 129 | call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: 130 | version "1.0.2" 131 | resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" 132 | integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== 133 | dependencies: 134 | es-errors "^1.3.0" 135 | function-bind "^1.1.2" 136 | 137 | call-bound@^1.0.2: 138 | version "1.0.4" 139 | resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" 140 | integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== 141 | dependencies: 142 | call-bind-apply-helpers "^1.0.2" 143 | get-intrinsic "^1.3.0" 144 | 145 | concat-map@0.0.1: 146 | version "0.0.1" 147 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 148 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 149 | 150 | content-disposition@^1.0.0: 151 | version "1.0.0" 152 | resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz" 153 | integrity sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg== 154 | dependencies: 155 | safe-buffer "5.2.1" 156 | 157 | content-type@^1.0.5: 158 | version "1.0.5" 159 | resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" 160 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 161 | 162 | cookie-signature@^1.2.1: 163 | version "1.2.2" 164 | resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz" 165 | integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg== 166 | 167 | cookie@^0.7.1: 168 | version "0.7.2" 169 | resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" 170 | integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== 171 | 172 | cors@^2.8.5: 173 | version "2.8.5" 174 | resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" 175 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 176 | dependencies: 177 | object-assign "^4" 178 | vary "^1" 179 | 180 | create-require@^1.1.0: 181 | version "1.1.1" 182 | resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" 183 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 184 | 185 | cross-spawn@^7.0.3: 186 | version "7.0.6" 187 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" 188 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== 189 | dependencies: 190 | path-key "^3.1.0" 191 | shebang-command "^2.0.0" 192 | which "^2.0.1" 193 | 194 | debug@^4.3.5, debug@^4.4.0: 195 | version "4.4.0" 196 | resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz" 197 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== 198 | dependencies: 199 | ms "^2.1.3" 200 | 201 | depd@2.0.0, depd@^2.0.0: 202 | version "2.0.0" 203 | resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" 204 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 205 | 206 | diff@^4.0.1: 207 | version "4.0.2" 208 | resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" 209 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 210 | 211 | dotenv@^16.4.7: 212 | version "16.5.0" 213 | resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz" 214 | integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== 215 | 216 | dunder-proto@^1.0.1: 217 | version "1.0.1" 218 | resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" 219 | integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== 220 | dependencies: 221 | call-bind-apply-helpers "^1.0.1" 222 | es-errors "^1.3.0" 223 | gopd "^1.2.0" 224 | 225 | ee-first@1.1.1: 226 | version "1.1.1" 227 | resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" 228 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 229 | 230 | encodeurl@^2.0.0: 231 | version "2.0.0" 232 | resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" 233 | integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== 234 | 235 | es-define-property@^1.0.1: 236 | version "1.0.1" 237 | resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" 238 | integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== 239 | 240 | es-errors@^1.3.0: 241 | version "1.3.0" 242 | resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" 243 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 244 | 245 | es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: 246 | version "1.1.1" 247 | resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" 248 | integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== 249 | dependencies: 250 | es-errors "^1.3.0" 251 | 252 | escape-html@^1.0.3: 253 | version "1.0.3" 254 | resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" 255 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 256 | 257 | etag@^1.8.1: 258 | version "1.8.1" 259 | resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" 260 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 261 | 262 | eventsource-parser@^3.0.1: 263 | version "3.0.1" 264 | resolved "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.1.tgz" 265 | integrity sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA== 266 | 267 | eventsource@^3.0.2: 268 | version "3.0.7" 269 | resolved "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz" 270 | integrity sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA== 271 | dependencies: 272 | eventsource-parser "^3.0.1" 273 | 274 | express-rate-limit@^7.5.0: 275 | version "7.5.0" 276 | resolved "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz" 277 | integrity sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg== 278 | 279 | express@^5.0.1: 280 | version "5.1.0" 281 | resolved "https://registry.npmjs.org/express/-/express-5.1.0.tgz" 282 | integrity sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA== 283 | dependencies: 284 | accepts "^2.0.0" 285 | body-parser "^2.2.0" 286 | content-disposition "^1.0.0" 287 | content-type "^1.0.5" 288 | cookie "^0.7.1" 289 | cookie-signature "^1.2.1" 290 | debug "^4.4.0" 291 | encodeurl "^2.0.0" 292 | escape-html "^1.0.3" 293 | etag "^1.8.1" 294 | finalhandler "^2.1.0" 295 | fresh "^2.0.0" 296 | http-errors "^2.0.0" 297 | merge-descriptors "^2.0.0" 298 | mime-types "^3.0.0" 299 | on-finished "^2.4.1" 300 | once "^1.4.0" 301 | parseurl "^1.3.3" 302 | proxy-addr "^2.0.7" 303 | qs "^6.14.0" 304 | range-parser "^1.2.1" 305 | router "^2.2.0" 306 | send "^1.1.0" 307 | serve-static "^2.2.0" 308 | statuses "^2.0.1" 309 | type-is "^2.0.1" 310 | vary "^1.1.2" 311 | 312 | finalhandler@^2.1.0: 313 | version "2.1.0" 314 | resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz" 315 | integrity sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q== 316 | dependencies: 317 | debug "^4.4.0" 318 | encodeurl "^2.0.0" 319 | escape-html "^1.0.3" 320 | on-finished "^2.4.1" 321 | parseurl "^1.3.3" 322 | statuses "^2.0.1" 323 | 324 | forwarded@0.2.0: 325 | version "0.2.0" 326 | resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" 327 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 328 | 329 | fresh@^2.0.0: 330 | version "2.0.0" 331 | resolved "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz" 332 | integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== 333 | 334 | fs.realpath@^1.0.0: 335 | version "1.0.0" 336 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 337 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 338 | 339 | function-bind@^1.1.2: 340 | version "1.1.2" 341 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" 342 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 343 | 344 | get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: 345 | version "1.3.0" 346 | resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" 347 | integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== 348 | dependencies: 349 | call-bind-apply-helpers "^1.0.2" 350 | es-define-property "^1.0.1" 351 | es-errors "^1.3.0" 352 | es-object-atoms "^1.1.1" 353 | function-bind "^1.1.2" 354 | get-proto "^1.0.1" 355 | gopd "^1.2.0" 356 | has-symbols "^1.1.0" 357 | hasown "^2.0.2" 358 | math-intrinsics "^1.1.0" 359 | 360 | get-proto@^1.0.1: 361 | version "1.0.1" 362 | resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" 363 | integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== 364 | dependencies: 365 | dunder-proto "^1.0.1" 366 | es-object-atoms "^1.0.0" 367 | 368 | glob@^7.0.0: 369 | version "7.2.3" 370 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" 371 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 372 | dependencies: 373 | fs.realpath "^1.0.0" 374 | inflight "^1.0.4" 375 | inherits "2" 376 | minimatch "^3.1.1" 377 | once "^1.3.0" 378 | path-is-absolute "^1.0.0" 379 | 380 | gopd@^1.2.0: 381 | version "1.2.0" 382 | resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" 383 | integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== 384 | 385 | has-symbols@^1.1.0: 386 | version "1.1.0" 387 | resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" 388 | integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== 389 | 390 | hasown@^2.0.2: 391 | version "2.0.2" 392 | resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" 393 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 394 | dependencies: 395 | function-bind "^1.1.2" 396 | 397 | http-errors@2.0.0, http-errors@^2.0.0: 398 | version "2.0.0" 399 | resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" 400 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 401 | dependencies: 402 | depd "2.0.0" 403 | inherits "2.0.4" 404 | setprototypeof "1.2.0" 405 | statuses "2.0.1" 406 | toidentifier "1.0.1" 407 | 408 | iconv-lite@0.6.3, iconv-lite@^0.6.3: 409 | version "0.6.3" 410 | resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" 411 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 412 | dependencies: 413 | safer-buffer ">= 2.1.2 < 3.0.0" 414 | 415 | inflight@^1.0.4: 416 | version "1.0.6" 417 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 418 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 419 | dependencies: 420 | once "^1.3.0" 421 | wrappy "1" 422 | 423 | inherits@2, inherits@2.0.4: 424 | version "2.0.4" 425 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 426 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 427 | 428 | interpret@^1.0.0: 429 | version "1.4.0" 430 | resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" 431 | integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== 432 | 433 | ipaddr.js@1.9.1: 434 | version "1.9.1" 435 | resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" 436 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 437 | 438 | is-core-module@^2.16.0: 439 | version "2.16.1" 440 | resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" 441 | integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== 442 | dependencies: 443 | hasown "^2.0.2" 444 | 445 | is-promise@^4.0.0: 446 | version "4.0.0" 447 | resolved "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz" 448 | integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== 449 | 450 | isexe@^2.0.0: 451 | version "2.0.0" 452 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 453 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 454 | 455 | isomorphic-fetch@^3.0.0: 456 | version "3.0.0" 457 | resolved "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz" 458 | integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== 459 | dependencies: 460 | node-fetch "^2.6.1" 461 | whatwg-fetch "^3.4.1" 462 | 463 | jigsawstack@^0.2.10: 464 | version "0.2.10" 465 | resolved "https://registry.yarnpkg.com/jigsawstack/-/jigsawstack-0.2.10.tgz#a2a5766798e1c91a7a4a5af8f21681d504a7b4f1" 466 | integrity sha512-35GOV9OZKe3CB5EWyxVHKDfmGV9U2qx94auXC9OSFjl3RtZQm6CSEfBTUHuNZZ7WGZuE3YRV79D7a0vVVyLzPw== 467 | dependencies: 468 | isomorphic-fetch "^3.0.0" 469 | zod "^3.25.67" 470 | 471 | make-error@^1.1.1: 472 | version "1.3.6" 473 | resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" 474 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 475 | 476 | math-intrinsics@^1.1.0: 477 | version "1.1.0" 478 | resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" 479 | integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== 480 | 481 | media-typer@^1.1.0: 482 | version "1.1.0" 483 | resolved "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz" 484 | integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== 485 | 486 | merge-descriptors@^2.0.0: 487 | version "2.0.0" 488 | resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz" 489 | integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g== 490 | 491 | mime-db@^1.54.0: 492 | version "1.54.0" 493 | resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz" 494 | integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== 495 | 496 | mime-types@^3.0.0, mime-types@^3.0.1: 497 | version "3.0.1" 498 | resolved "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz" 499 | integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA== 500 | dependencies: 501 | mime-db "^1.54.0" 502 | 503 | minimatch@^3.1.1: 504 | version "3.1.2" 505 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 506 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 507 | dependencies: 508 | brace-expansion "^1.1.7" 509 | 510 | minimist@^1.2.3: 511 | version "1.2.8" 512 | resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" 513 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 514 | 515 | ms@^2.1.3: 516 | version "2.1.3" 517 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 518 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 519 | 520 | negotiator@^1.0.0: 521 | version "1.0.0" 522 | resolved "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz" 523 | integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== 524 | 525 | node-fetch@^2.6.1: 526 | version "2.7.0" 527 | resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" 528 | integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== 529 | dependencies: 530 | whatwg-url "^5.0.0" 531 | 532 | object-assign@^4: 533 | version "4.1.1" 534 | resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 535 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 536 | 537 | object-inspect@^1.13.3: 538 | version "1.13.4" 539 | resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" 540 | integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== 541 | 542 | on-finished@^2.4.1: 543 | version "2.4.1" 544 | resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" 545 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 546 | dependencies: 547 | ee-first "1.1.1" 548 | 549 | once@^1.3.0, once@^1.4.0: 550 | version "1.4.0" 551 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 552 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 553 | dependencies: 554 | wrappy "1" 555 | 556 | parseurl@^1.3.3: 557 | version "1.3.3" 558 | resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" 559 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 560 | 561 | path-is-absolute@^1.0.0: 562 | version "1.0.1" 563 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 564 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 565 | 566 | path-key@^3.1.0: 567 | version "3.1.1" 568 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" 569 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 570 | 571 | path-parse@^1.0.7: 572 | version "1.0.7" 573 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 574 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 575 | 576 | path-to-regexp@^8.0.0: 577 | version "8.2.0" 578 | resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz" 579 | integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== 580 | 581 | pkce-challenge@^5.0.0: 582 | version "5.0.0" 583 | resolved "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz" 584 | integrity sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ== 585 | 586 | proxy-addr@^2.0.7: 587 | version "2.0.7" 588 | resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" 589 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 590 | dependencies: 591 | forwarded "0.2.0" 592 | ipaddr.js "1.9.1" 593 | 594 | qs@^6.14.0: 595 | version "6.14.0" 596 | resolved "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz" 597 | integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== 598 | dependencies: 599 | side-channel "^1.1.0" 600 | 601 | range-parser@^1.2.1: 602 | version "1.2.1" 603 | resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" 604 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 605 | 606 | raw-body@^3.0.0: 607 | version "3.0.0" 608 | resolved "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz" 609 | integrity sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g== 610 | dependencies: 611 | bytes "3.1.2" 612 | http-errors "2.0.0" 613 | iconv-lite "0.6.3" 614 | unpipe "1.0.0" 615 | 616 | rechoir@^0.6.2: 617 | version "0.6.2" 618 | resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" 619 | integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== 620 | dependencies: 621 | resolve "^1.1.6" 622 | 623 | resolve@^1.1.6: 624 | version "1.22.10" 625 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz" 626 | integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== 627 | dependencies: 628 | is-core-module "^2.16.0" 629 | path-parse "^1.0.7" 630 | supports-preserve-symlinks-flag "^1.0.0" 631 | 632 | router@^2.2.0: 633 | version "2.2.0" 634 | resolved "https://registry.npmjs.org/router/-/router-2.2.0.tgz" 635 | integrity sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ== 636 | dependencies: 637 | debug "^4.4.0" 638 | depd "^2.0.0" 639 | is-promise "^4.0.0" 640 | parseurl "^1.3.3" 641 | path-to-regexp "^8.0.0" 642 | 643 | safe-buffer@5.2.1: 644 | version "5.2.1" 645 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 646 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 647 | 648 | "safer-buffer@>= 2.1.2 < 3.0.0": 649 | version "2.1.2" 650 | resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" 651 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 652 | 653 | send@^1.1.0, send@^1.2.0: 654 | version "1.2.0" 655 | resolved "https://registry.npmjs.org/send/-/send-1.2.0.tgz" 656 | integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw== 657 | dependencies: 658 | debug "^4.3.5" 659 | encodeurl "^2.0.0" 660 | escape-html "^1.0.3" 661 | etag "^1.8.1" 662 | fresh "^2.0.0" 663 | http-errors "^2.0.0" 664 | mime-types "^3.0.1" 665 | ms "^2.1.3" 666 | on-finished "^2.4.1" 667 | range-parser "^1.2.1" 668 | statuses "^2.0.1" 669 | 670 | serve-static@^2.2.0: 671 | version "2.2.0" 672 | resolved "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz" 673 | integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ== 674 | dependencies: 675 | encodeurl "^2.0.0" 676 | escape-html "^1.0.3" 677 | parseurl "^1.3.3" 678 | send "^1.2.0" 679 | 680 | setprototypeof@1.2.0: 681 | version "1.2.0" 682 | resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" 683 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 684 | 685 | shebang-command@^2.0.0: 686 | version "2.0.0" 687 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" 688 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 689 | dependencies: 690 | shebang-regex "^3.0.0" 691 | 692 | shebang-regex@^3.0.0: 693 | version "3.0.0" 694 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" 695 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 696 | 697 | shelljs@^0.8.5: 698 | version "0.8.5" 699 | resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" 700 | integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== 701 | dependencies: 702 | glob "^7.0.0" 703 | interpret "^1.0.0" 704 | rechoir "^0.6.2" 705 | 706 | shx@^0.3.4: 707 | version "0.3.4" 708 | resolved "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz" 709 | integrity sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g== 710 | dependencies: 711 | minimist "^1.2.3" 712 | shelljs "^0.8.5" 713 | 714 | side-channel-list@^1.0.0: 715 | version "1.0.0" 716 | resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" 717 | integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== 718 | dependencies: 719 | es-errors "^1.3.0" 720 | object-inspect "^1.13.3" 721 | 722 | side-channel-map@^1.0.1: 723 | version "1.0.1" 724 | resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" 725 | integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== 726 | dependencies: 727 | call-bound "^1.0.2" 728 | es-errors "^1.3.0" 729 | get-intrinsic "^1.2.5" 730 | object-inspect "^1.13.3" 731 | 732 | side-channel-weakmap@^1.0.2: 733 | version "1.0.2" 734 | resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" 735 | integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== 736 | dependencies: 737 | call-bound "^1.0.2" 738 | es-errors "^1.3.0" 739 | get-intrinsic "^1.2.5" 740 | object-inspect "^1.13.3" 741 | side-channel-map "^1.0.1" 742 | 743 | side-channel@^1.1.0: 744 | version "1.1.0" 745 | resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" 746 | integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== 747 | dependencies: 748 | es-errors "^1.3.0" 749 | object-inspect "^1.13.3" 750 | side-channel-list "^1.0.0" 751 | side-channel-map "^1.0.1" 752 | side-channel-weakmap "^1.0.2" 753 | 754 | statuses@2.0.1, statuses@^2.0.1: 755 | version "2.0.1" 756 | resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" 757 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 758 | 759 | supports-preserve-symlinks-flag@^1.0.0: 760 | version "1.0.0" 761 | resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 762 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 763 | 764 | toidentifier@1.0.1: 765 | version "1.0.1" 766 | resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" 767 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 768 | 769 | tr46@~0.0.3: 770 | version "0.0.3" 771 | resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" 772 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 773 | 774 | ts-node@^10.9.2: 775 | version "10.9.2" 776 | resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz" 777 | integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== 778 | dependencies: 779 | "@cspotcode/source-map-support" "^0.8.0" 780 | "@tsconfig/node10" "^1.0.7" 781 | "@tsconfig/node12" "^1.0.7" 782 | "@tsconfig/node14" "^1.0.0" 783 | "@tsconfig/node16" "^1.0.2" 784 | acorn "^8.4.1" 785 | acorn-walk "^8.1.1" 786 | arg "^4.1.0" 787 | create-require "^1.1.0" 788 | diff "^4.0.1" 789 | make-error "^1.1.1" 790 | v8-compile-cache-lib "^3.0.1" 791 | yn "3.1.1" 792 | 793 | type-is@^2.0.0, type-is@^2.0.1: 794 | version "2.0.1" 795 | resolved "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz" 796 | integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw== 797 | dependencies: 798 | content-type "^1.0.5" 799 | media-typer "^1.1.0" 800 | mime-types "^3.0.0" 801 | 802 | typescript@^4.5.4: 803 | version "4.9.5" 804 | resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" 805 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== 806 | 807 | unpipe@1.0.0: 808 | version "1.0.0" 809 | resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" 810 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 811 | 812 | v8-compile-cache-lib@^3.0.1: 813 | version "3.0.1" 814 | resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" 815 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 816 | 817 | vary@^1, vary@^1.1.2: 818 | version "1.1.2" 819 | resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" 820 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 821 | 822 | webidl-conversions@^3.0.0: 823 | version "3.0.1" 824 | resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" 825 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 826 | 827 | whatwg-fetch@^3.4.1: 828 | version "3.6.20" 829 | resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz" 830 | integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== 831 | 832 | whatwg-url@^5.0.0: 833 | version "5.0.0" 834 | resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" 835 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 836 | dependencies: 837 | tr46 "~0.0.3" 838 | webidl-conversions "^3.0.0" 839 | 840 | which@^2.0.1: 841 | version "2.0.2" 842 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 843 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 844 | dependencies: 845 | isexe "^2.0.0" 846 | 847 | wrappy@1: 848 | version "1.0.2" 849 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 850 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 851 | 852 | yn@3.1.1: 853 | version "3.1.1" 854 | resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" 855 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 856 | 857 | zod-to-json-schema@^3.24.1: 858 | version "3.24.5" 859 | resolved "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz" 860 | integrity sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g== 861 | 862 | zod@3.24.2, zod@^3.23.8: 863 | version "3.24.2" 864 | resolved "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz" 865 | integrity sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ== 866 | 867 | zod@^3.25.67: 868 | version "3.25.71" 869 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.71.tgz#f87a19c06b061426564607726c05a4d3b9ac3fa9" 870 | integrity sha512-BsBc/NPk7h8WsUWYWYL+BajcJPY8YhjelaWu2NMLuzgraKAz4Lb4/6K11g9jpuDetjMiqhZ6YaexFLOC0Ogi3Q== 871 | --------------------------------------------------------------------------------