{ "version": "1.0.0", "generated": "2026-02-24T23:20:36.054655+00:00", "total_skills": 177, "categories": { "workflows": { "description": "End-to-end automation workflows combining multiple services", "skill_count": 19, "tags": [ "automation", "workflow", "orchestration" ] }, "ai": { "description": "AI-powered skills for text, image, audio, and video processing", "skill_count": 23, "tags": [ "ai", "ml", "llm", "nlp" ] }, "security": { "description": "Security, compliance, and cryptographic operations", "skill_count": 16, "tags": [ "security", "compliance", "crypto", "privacy" ] }, "transforms": { "description": "Data transformation, parsing, and format conversion", "skill_count": 100, "tags": [ "transform", "parse", "convert", "format" ] }, "connectors": { "description": "Integration connectors for SaaS, messaging, and data sources", "skill_count": 3, "tags": [ "connector", "integration", "saas", "data-source" ] }, "utilities": { "description": "General utilities and helper functions", "skill_count": 16, "tags": [ "utility", "helper", "validation" ] } }, "skills": { "audio-transcribe": { "name": "audio-transcribe", "version": "1.0.0", "description": "Transcribe audio content using AI", "category": "ai", "credentials": [], "inputs": [ { "name": "audio_url", "type": "string", "required": true, "description": "URL of audio file to transcribe" } ], "outputs": [ { "name": "transcript", "type": "string", "description": "Transcribed text" } ], "backends": [ "openai" ], "tags": [ "ai", "remote" ] }, "code-explain": { "name": "code-explain", "version": "1.0.0", "description": "Explain code in plain English with step-by-step breakdown", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key for remote inference" } ], "inputs": [ { "name": "code", "type": "string", "required": true, "description": "Code snippet to explain" }, { "name": "language", "type": "string", "required": false, "description": "Programming language (auto-detected if not provided)" }, { "name": "detail_level", "type": "string", "required": false, "description": "Level of detail (brief, normal, detailed)" } ], "outputs": [ { "name": "explanation", "type": "string", "description": "Plain English explanation of the code" }, { "name": "metadata", "type": "object", "description": "Audit metadata" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "grammar-check": { "name": "grammar-check", "version": "1.0.0", "description": "Check text for grammar, spelling, and style issues with corrections", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to check" } ], "outputs": [ { "name": "corrected", "type": "string", "description": "Text with corrections applied" }, { "name": "issues", "type": "array", "description": "List of issues found" }, { "name": "issue_count", "type": "integer", "description": "Number of issues" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "image-alttext": { "name": "image-alttext", "version": "1.0.0", "description": "Generate accessibility-optimized alt text for images (WCAG compliant)", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" } ], "inputs": [ { "name": "image_url", "type": "string", "required": true, "description": "URL of the image to describe" }, { "name": "context", "type": "string", "required": false, "description": "Additional context about where the image appears" }, { "name": "max_length", "type": "integer", "default": 125, "description": "Maximum alt text length (WCAG recommends 125 chars)" } ], "outputs": [ { "name": "alt_text", "type": "string", "description": "Accessibility-optimized alt text" }, { "name": "metadata", "type": "object", "description": "Processing metadata" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "image-analyze": { "name": "image-analyze", "version": "1.0.0", "description": "Analyze image content with objects, relations, and scene structure", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" } ], "inputs": [ { "name": "image_url", "type": "string", "required": true, "description": "URL of the image to analyze" }, { "name": "detail", "type": "string", "default": "high", "enum": [ "low", "high", "auto" ], "description": "Analysis detail level" } ], "outputs": [ { "name": "analysis", "type": "object", "description": "{objects, colors, text, scene_type, composition}" }, { "name": "metadata", "type": "object", "description": "Processing metadata" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "image-caption": { "name": "image-caption", "version": "1.0.0", "description": "Generate accessible alt text for images", "category": "ai", "credentials": [], "inputs": [ { "name": "image_url", "type": "string", "required": true, "description": "URL of image to caption" } ], "outputs": [ { "name": "caption", "type": "string", "description": "Short image caption" }, { "name": "alt_text", "type": "string", "description": "Accessibility alt text" } ], "backends": [ "openai" ], "tags": [ "ai", "remote" ] }, "image-describe": { "name": "image-describe", "version": "1.0.0", "description": "Generate description of an image using AI", "category": "ai", "credentials": [], "inputs": [ { "name": "image_url", "type": "string", "required": true, "description": "URL of image to describe" } ], "outputs": [ { "name": "description", "type": "string", "description": "AI-generated image description" } ], "backends": [ "openai" ], "tags": [ "ai", "remote" ] }, "image-moderate": { "name": "image-moderate", "version": "1.0.0", "description": "Check images for content policy violations and safety flags", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" } ], "inputs": [ { "name": "image_url", "type": "string", "required": true, "description": "URL of the image to moderate" }, { "name": "policy", "type": "string", "default": "standard", "enum": [ "standard", "strict" ], "description": "Moderation strictness" } ], "outputs": [ { "name": "flagged", "type": "boolean", "description": "Whether content violates policy" }, { "name": "categories", "type": "object", "description": "Category flags (violence, sexual, hate, etc.)" }, { "name": "scores", "type": "object", "description": "Confidence scores per category" }, { "name": "metadata", "type": "object", "description": "Processing metadata" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "json-extract": { "name": "json-extract", "version": "1.0.0", "description": "Extract structured JSON from natural language text", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key for remote inference" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to extract data from" }, { "name": "schema", "type": "object", "required": false, "description": "JSON Schema for output validation" }, { "name": "fields", "type": "array", "required": false, "description": "Simple list of fields to extract (alternative to schema)" } ], "outputs": [ { "name": "extracted", "type": "object", "description": "Extracted JSON data" }, { "name": "metadata", "type": "object", "description": "Audit metadata (model, timestamp, input_hash)" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "json", "local", "offline", "openai", "remote" ] }, "keyword-extract": { "name": "keyword-extract", "version": "1.0.0", "description": "Extract keywords and key phrases from text for SEO, tagging, and indexing", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to analyze" }, { "name": "max_keywords", "type": "integer", "default": 10, "description": "Maximum keywords to extract" } ], "outputs": [ { "name": "keywords", "type": "array", "description": "Extracted keywords with scores" }, { "name": "phrases", "type": "array", "description": "Key phrases (2-3 words)" }, { "name": "topics", "type": "array", "description": "Main topics/themes" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "language-detect": { "name": "language-detect", "version": "1.0.0", "description": "Detect the language of text using AI", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to analyze" } ], "outputs": [ { "name": "language", "type": "string", "description": "Detected language" }, { "name": "confidence", "type": "number", "description": "Confidence score" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "meeting-notes": { "name": "meeting-notes", "version": "1.0.0", "description": "Convert meeting transcripts into structured notes with action items", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key (not required if using Ollama)" } ], "inputs": [ { "name": "transcript", "type": "string", "required": true, "description": "Meeting transcript text" }, { "name": "format", "type": "string", "default": "json", "enum": [ "json", "markdown" ], "description": "Output format" } ], "outputs": [ { "name": "notes", "type": "object", "description": "Structured notes: {summary, key_points, action_items, attendees, decisions}" }, { "name": "metadata", "type": "object", "description": "Processing metadata" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "sentiment-score": { "name": "sentiment-score", "version": "1.0.0", "description": "Score text sentiment from -1 (negative) to +1 (positive)", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "" } ], "inputs": [ { "name": "text", "type": "string", "required": true } ], "outputs": [ { "name": "score", "type": "number", "description": "Sentiment score -1 to +1" }, { "name": "label", "type": "string", "description": "positive, negative, or neutral" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "speaker-diarize": { "name": "speaker-diarize", "version": "1.0.0", "description": "Split transcript into per-speaker segments with speaker identification", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" } ], "inputs": [ { "name": "transcript", "type": "string", "required": true, "description": "Raw transcript text" }, { "name": "speaker_hints", "type": "array", "required": false, "description": "Optional list of known speaker names" } ], "outputs": [ { "name": "segments", "type": "array", "description": "Array of {speaker, text, start_time?, end_time?}" }, { "name": "speakers", "type": "array", "description": "List of identified speakers" }, { "name": "metadata", "type": "object", "description": "Processing metadata" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "sql-generate": { "name": "sql-generate", "version": "1.0.0", "description": "Generate SQL queries from natural language descriptions", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" } ], "inputs": [ { "name": "description", "type": "string", "required": true, "description": "Natural language query description" }, { "name": "dialect", "type": "string", "default": "postgresql", "description": "SQL dialect: postgresql, mysql, sqlite, mssql" }, { "name": "schema", "type": "string", "default": "", "description": "Optional table schema for context" } ], "outputs": [ { "name": "sql", "type": "string", "description": "Generated SQL query" }, { "name": "explanation", "type": "string", "description": "Explanation of the query" }, { "name": "dialect", "type": "string", "description": "SQL dialect used" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote" ] }, "text-embed": { "name": "text-embed", "version": "1.0.0", "description": "Generate embedding vectors from text for RAG and semantic search", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key (not required if using Ollama)" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to embed (up to 8191 tokens)" }, { "name": "model", "type": "string", "default": "text-embedding-3-small", "description": "Embedding model to use" } ], "outputs": [ { "name": "embedding", "type": "array", "description": "Vector embedding (1536 or 3072 dimensions)" }, { "name": "metadata", "type": "object", "description": "Model info, dimensions, token count" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote", "text" ] }, "text-summarize": { "name": "text-summarize", "version": "1.0.0", "description": "Summarize text into 3-5 bullet points using AI", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key for remote inference" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to summarize (up to 1MB)" }, { "name": "bullet_count", "type": "integer", "default": 5, "description": "Maximum number of bullet points (3-10)" }, { "name": "style", "type": "string", "default": "concise", "enum": [ "concise", "detailed", "executive" ], "description": "Summary style" } ], "outputs": [ { "name": "summary", "type": "string", "description": "Bulleted summary of the input text" }, { "name": "metadata", "type": "object", "description": "Audit metadata (model, timestamp, input_hash)" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote", "text" ] }, "text-to-command": { "name": "text-to-command", "version": "1.0.0", "description": "Convert natural language instructions to CLI commands", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" } ], "inputs": [ { "name": "instruction", "type": "string", "required": true, "description": "Natural language instruction" }, { "name": "shell", "type": "string", "required": false, "description": "Target shell (bash, zsh, powershell, fish)" }, { "name": "context", "type": "string", "required": false, "description": "Additional context (current directory, available tools)" } ], "outputs": [ { "name": "command", "type": "string", "description": "Generated CLI command" }, { "name": "explanation", "type": "string", "description": "Brief explanation of what the command does" }, { "name": "metadata", "type": "object", "description": "Audit metadata" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote", "text" ] }, "text-to-image": { "name": "text-to-image", "version": "1.0.0", "description": "Generate images from text descriptions using AI", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": true, "description": "OpenAI API key for DALL-E" } ], "inputs": [ { "name": "prompt", "type": "string", "required": true, "description": "Text description of the image to generate" }, { "name": "size", "type": "string", "default": "1024x1024", "enum": [ "1024x1024", "1792x1024", "1024x1792" ], "description": "Image dimensions" }, { "name": "quality", "type": "string", "default": "standard", "enum": [ "standard", "hd" ], "description": "Image quality" }, { "name": "style", "type": "string", "default": "vivid", "enum": [ "vivid", "natural" ], "description": "Generation style" } ], "outputs": [ { "name": "image_url", "type": "string", "description": "URL of generated image (expires in 1 hour)" }, { "name": "metadata", "type": "object", "description": "Generation metadata" } ], "backends": [ "openai" ], "tags": [ "ai", "openai", "remote", "text" ] }, "text-to-speech": { "name": "text-to-speech", "version": "1.0.0", "description": "Convert text to speech using AI (mp3, wav, opus output)", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": true, "description": "OpenAI API key for TTS" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to convert to speech (max 4096 chars)" }, { "name": "voice", "type": "string", "default": "alloy", "enum": [ "alloy", "echo", "fable", "onyx", "nova", "shimmer" ], "description": "Voice to use" }, { "name": "format", "type": "string", "default": "mp3", "enum": [ "mp3", "opus", "aac", "flac", "wav", "pcm" ], "description": "Audio output format" } ], "outputs": [ { "name": "audio", "type": "binary", "description": "Audio file content (base64 encoded)" }, { "name": "metadata", "type": "object", "description": "Generation metadata" } ], "backends": [ "openai" ], "tags": [ "ai", "openai", "remote", "text" ] }, "text-translate": { "name": "text-translate", "version": "1.0.0", "description": "Translate text between languages using LLM", "category": "ai", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to translate" }, { "name": "target", "type": "string", "default": "english", "description": "Target language" }, { "name": "source", "type": "string", "default": "auto", "description": "Source language (auto-detect if not specified)" } ], "outputs": [ { "name": "translation", "type": "string", "description": "Translated text" }, { "name": "source_language", "type": "string", "description": "Detected source language" }, { "name": "target_language", "type": "string", "description": "Target language" } ], "backends": [ "openai", "ollama" ], "tags": [ "ai", "local", "offline", "openai", "remote", "text" ] }, "url-to-article": { "name": "url-to-article", "version": "1.0.0", "description": "Extract clean article text from a URL (title, author, date, body)", "category": "ai", "credentials": [], "inputs": [ { "name": "url", "type": "string", "required": true, "description": "URL of the article to extract" }, { "name": "include_images", "type": "boolean", "default": false, "description": "Include image URLs in output" } ], "outputs": [ { "name": "article", "type": "object", "description": "Extracted article: {title, author, date, body, url}" }, { "name": "metadata", "type": "object", "description": "Extraction metadata" } ], "backends": [ "local" ], "tags": [ "ai", "local", "offline" ] }, "video-generate": { "name": "video-generate", "version": "2.0.0", "description": "Generate short videos from text prompts using Replicate AI models", "category": "ai", "credentials": [ { "name": "REPLICATE_API_TOKEN", "required": true, "description": "Replicate API token from replicate.com" } ], "inputs": [ { "name": "prompt", "type": "string", "required": true, "description": "Text description of the video to generate" }, { "name": "duration", "type": "string", "default": "5", "description": "Video duration in seconds (model dependent, typically 2-5s)" } ], "outputs": [ { "name": "video_url", "type": "string", "description": "URL to the generated video" }, { "name": "status", "type": "string", "description": "Generation status (succeeded, failed, processing)" }, { "name": "metadata", "type": "object", "description": "Generation metadata including model, timing, trace_id" } ], "backends": [ "replicate" ], "tags": [ "ai", "remote" ] }, "gmail-read": { "name": "gmail-read", "version": "1.0.0", "description": "Read emails from Gmail with filtering, search, and label support", "category": "connectors", "credentials": [ { "name": "GMAIL_ACCESS_TOKEN", "required": true, "description": "Gmail OAuth2 access token" }, { "name": "GMAIL_REFRESH_TOKEN", "required": false, "description": "Gmail OAuth2 refresh token for long-lived access" }, { "name": "GMAIL_CLIENT_ID", "required": false, "description": "OAuth2 client ID (for token refresh)" }, { "name": "GMAIL_CLIENT_SECRET", "required": false, "description": "OAuth2 client secret (for token refresh)" } ], "inputs": [ { "name": "query", "type": "string", "required": false, "default": "is:unread", "description": "Gmail search query (same syntax as Gmail search bar)" }, { "name": "label", "type": "string", "required": false, "default": "INBOX", "description": "Gmail label to read from" }, { "name": "limit", "type": "integer", "default": 20, "description": "Maximum emails to retrieve (1-100)" }, { "name": "include_body", "type": "boolean", "default": true, "description": "Include email body content (set false for headers only)" } ], "outputs": [ { "name": "emails", "type": "array", "description": "Array of emails: {id, subject, from, to, date, snippet, body, labels}" }, { "name": "metadata", "type": "object", "description": "Processing metadata: {skill, trace_id, email_count, query, timestamp}" } ], "backends": [ "gmail-api" ], "tags": [ "connectors", "remote" ] }, "slack-read": { "name": "slack-read", "version": "1.0.0", "description": "Read messages from Slack channels and DMs with filtering and search", "category": "connectors", "credentials": [ { "name": "SLACK_BOT_TOKEN", "required": true, "description": "Slack Bot User OAuth Token (xoxb-...)" }, { "name": "SLACK_CHANNEL_ID", "required": false, "description": "Default channel ID to read from" } ], "inputs": [ { "name": "channel", "type": "string", "required": true, "description": "Slack channel ID (e.g., C01234567)" }, { "name": "limit", "type": "integer", "default": 20, "description": "Maximum messages to retrieve (1-100)" }, { "name": "query", "type": "string", "required": false, "description": "Optional search query to filter messages" }, { "name": "since_hours", "type": "integer", "default": 24, "description": "Retrieve messages from last N hours" } ], "outputs": [ { "name": "messages", "type": "array", "description": "Array of messages: {id, user, text, timestamp, thread_ts, reactions}" }, { "name": "channel_info", "type": "object", "description": "Channel metadata: {id, name, topic, purpose, member_count}" }, { "name": "metadata", "type": "object", "description": "Processing metadata: {skill, trace_id, message_count, timestamp}" } ], "backends": [ "slack-api" ], "tags": [ "connectors", "remote", "slack" ] }, "webhook-receive": { "name": "webhook-receive", "version": "1.0.0", "description": "Receive, validate, and process webhook events from any service", "category": "connectors", "credentials": [ { "name": "WEBHOOK_SECRET", "required": false, "description": "Shared secret for HMAC signature verification" }, { "name": "WEBHOOK_ALLOWED_IPS", "required": false, "description": "Comma-separated list of allowed source IPs" } ], "inputs": [ { "name": "path", "type": "string", "default": "/webhook", "description": "HTTP path to listen on" }, { "name": "verify_signature", "type": "boolean", "default": false, "description": "Verify HMAC signature (requires WEBHOOK_SECRET)" }, { "name": "signature_header", "type": "string", "default": "X-Hub-Signature-256", "description": "Header containing the HMAC signature" } ], "outputs": [ { "name": "event", "type": "object", "description": "Parsed webhook event with headers and body" }, { "name": "metadata", "type": "object", "description": "Processing metadata: {skill, trace_id, source_ip, timestamp}" } ], "backends": [ "local" ], "tags": [ "connectors", "local", "offline" ] }, "access-gate": { "name": "access-gate", "version": "1.0.0", "description": "Permission check gateway for agent access to connectors and data sources", "category": "security", "credentials": [ { "name": "ACCESS_POLICY_FILE", "required": false, "description": "Path to JSON policy file defining agent permissions" } ], "inputs": [ { "name": "agent", "type": "string", "required": true, "description": "Agent or user identifier requesting access" }, { "name": "resource", "type": "string", "required": true, "description": "Resource being accessed (e.g., slack-read, gmail-read)" }, { "name": "action", "type": "string", "default": "read", "description": "Action being performed (read, write, delete)" } ], "outputs": [ { "name": "allowed", "type": "boolean", "description": "Whether access is permitted" }, { "name": "reason", "type": "string", "description": "Reason for allow/deny decision" }, { "name": "passthrough", "type": "any", "description": "Original request data passed through if allowed" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "audit-envelope": { "name": "audit-envelope", "version": "1.0.0", "description": "Wrap data with audit metadata (timestamp, hash, trace ID, signatures)", "category": "security", "credentials": [], "inputs": [ { "name": "data", "type": "any", "required": true, "description": "Data to wrap with audit envelope" }, { "name": "source", "type": "string", "default": "unknown", "description": "Source system identifier" }, { "name": "actor", "type": "string", "default": "system", "description": "Actor/user who initiated the action" } ], "outputs": [ { "name": "envelope", "type": "object", "description": "Complete audit envelope with metadata" }, { "name": "signature", "type": "string", "description": "HMAC signature of the envelope" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "cve-scan": { "name": "cve-scan", "version": "1.0.0", "description": "Scan SBOM for known CVE vulnerabilities", "category": "security", "credentials": [ { "name": "NVD_API_KEY", "required": false, "description": "NVD API key for higher rate limits" } ], "inputs": [ { "name": "sbom", "type": "object", "required": true, "description": "CycloneDX or SPDX SBOM" }, { "name": "severity_threshold", "type": "string", "default": "low", "enum": [ "low", "medium", "high", "critical" ], "description": "Minimum severity to report" } ], "outputs": [ { "name": "vulnerabilities", "type": "array", "description": "Array of {cve_id, severity, package, fix_version}" }, { "name": "summary", "type": "object", "description": "Counts by severity" }, { "name": "metadata", "type": "object", "description": "Scan metadata" } ], "backends": [ "local", "remote" ], "tags": [ "local", "offline", "remote", "security" ] }, "data-fence": { "name": "data-fence", "version": "1.0.0", "description": "Filter data to only allowed fields and rows before passing to agents", "category": "security", "credentials": [], "inputs": [ { "name": "data", "type": "any", "required": true, "description": "Data to filter (object or array of objects)" }, { "name": "allowed_fields", "type": "array", "required": false, "description": "List of field names to keep (e.g., ['id', 'text', 'timestamp'])" }, { "name": "blocked_fields", "type": "array", "required": false, "description": "List of field names to remove (e.g., ['email', 'phone', 'ssn'])" }, { "name": "max_rows", "type": "integer", "default": 100, "description": "Maximum number of rows/items to return" } ], "outputs": [ { "name": "data", "type": "any", "description": "Filtered data with only allowed fields" }, { "name": "metadata", "type": "object", "description": "Filter metadata: {fields_removed, rows_truncated, trace_id}" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "hash-digest": { "name": "hash-digest", "version": "1.0.0", "description": "Compute cryptographic hash (SHA256, SHA512, MD5) of any input", "category": "security", "credentials": [], "inputs": [ { "name": "data", "type": "string", "required": true, "description": "Data to hash" }, { "name": "algorithm", "type": "string", "required": false, "description": "Hash algorithm (sha256, sha512, md5, xxhash64)" } ], "outputs": [ { "name": "hash", "type": "string", "description": "Hex-encoded hash" }, { "name": "algorithm", "type": "string", "description": "Algorithm used" }, { "name": "metadata", "type": "object", "description": "Audit metadata" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "jwt-verify": { "name": "jwt-verify", "version": "1.0.0", "description": "Verify JWT signature and extract/validate claims", "category": "security", "credentials": [ { "name": "JWT_SECRET", "required": false, "description": "Secret for HMAC verification" } ], "inputs": [ { "name": "token", "type": "string", "required": true, "description": "JWT token to verify" }, { "name": "verify_exp", "type": "boolean", "default": true, "description": "Check expiration" } ], "outputs": [ { "name": "valid", "type": "boolean", "description": "Whether token is valid" }, { "name": "header", "type": "object", "description": "JWT header" }, { "name": "claims", "type": "object", "description": "JWT payload/claims" }, { "name": "metadata", "type": "object", "description": "Verification details" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "log-sanitize": { "name": "log-sanitize", "version": "1.0.0", "description": "Sanitize log entries by removing passwords, tokens, and sensitive patterns", "category": "security", "credentials": [], "inputs": [ { "name": "log", "type": "string", "required": true, "description": "Log entry or log file content to sanitize" }, { "name": "patterns", "type": "array", "default": [ "password", "token", "secret", "key", "auth" ], "description": "Additional patterns to redact" } ], "outputs": [ { "name": "sanitized", "type": "string", "description": "Log with sensitive data removed" }, { "name": "redactions", "type": "integer", "description": "Number of redactions made" }, { "name": "patterns_matched", "type": "array", "description": "List of patterns that matched" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "password-generate": { "name": "password-generate", "version": "1.0.0", "description": "Generate secure random passwords", "category": "security", "credentials": [], "inputs": [ { "name": "length", "type": "integer", "default": 16, "description": "Password length" } ], "outputs": [ { "name": "password", "type": "string", "description": "Generated password" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "pii-detect": { "name": "pii-detect", "version": "1.0.0", "description": "Detect personally identifiable information (PII) in text", "category": "security", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key (optional - can use regex patterns only)" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to scan for PII" }, { "name": "types", "type": "array", "required": false, "description": "PII types to detect (email, phone, ssn, credit_card, etc.)" } ], "outputs": [ { "name": "findings", "type": "array", "description": "Detected PII with type, value, and position" }, { "name": "has_pii", "type": "boolean", "description": "Whether any PII was found" }, { "name": "metadata", "type": "object", "description": "Audit metadata" } ], "backends": [ "openai", "regex" ], "tags": [ "local", "offline", "openai", "remote", "security" ] }, "pii-redact": { "name": "pii-redact", "version": "1.0.0", "description": "Redact PII from text, replacing sensitive data with placeholders", "category": "security", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key for LLM-based PII detection" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text containing PII to redact" }, { "name": "placeholder", "type": "string", "default": "[REDACTED]", "description": "Replacement text for redacted content" } ], "outputs": [ { "name": "redacted_text", "type": "string", "description": "Text with PII replaced by placeholders" }, { "name": "redaction_count", "type": "integer", "description": "Number of items redacted" }, { "name": "redacted_types", "type": "array", "description": "Types of PII that were redacted" } ], "backends": [ "openai", "ollama" ], "tags": [ "local", "offline", "openai", "remote", "security" ] }, "policy-check": { "name": "policy-check", "version": "1.0.0", "description": "Check configuration against policy rules (allow/deny with reasons)", "category": "security", "credentials": [], "inputs": [ { "name": "config", "type": "object", "required": true, "description": "Configuration to check" }, { "name": "policy", "type": "object", "required": true, "description": "Policy rules: {allow: [...], deny: [...]}" } ], "outputs": [ { "name": "allowed", "type": "boolean", "description": "Whether config passes all policies" }, { "name": "violations", "type": "array", "description": "List of policy violations" }, { "name": "metadata", "type": "object", "description": "Check metadata" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "sbom-generate": { "name": "sbom-generate", "version": "1.0.0", "description": "Generate SBOM (Software Bill of Materials) from package files", "category": "security", "credentials": [], "inputs": [ { "name": "packages", "type": "object", "required": true, "description": "Package manifest (package.json, requirements.txt content, etc.)" }, { "name": "format", "type": "string", "default": "cyclonedx", "enum": [ "cyclonedx", "spdx" ], "description": "SBOM output format" } ], "outputs": [ { "name": "sbom", "type": "object", "description": "SBOM in CycloneDX or SPDX format" }, { "name": "metadata", "type": "object", "description": "Processing metadata" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "secrets-scan": { "name": "secrets-scan", "version": "1.0.0", "description": "Detect hardcoded secrets (API keys, tokens, passwords) in text or code", "category": "security", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key (optional - enhances detection)" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text or code to scan for secrets" }, { "name": "types", "type": "array", "required": false, "description": "Secret types to detect (api_key, token, password, etc.)" } ], "outputs": [ { "name": "findings", "type": "array", "description": "Detected secrets with type and location" }, { "name": "has_secrets", "type": "boolean", "description": "Whether any secrets were found" }, { "name": "metadata", "type": "object", "description": "Audit metadata" } ], "backends": [ "openai", "regex" ], "tags": [ "local", "offline", "openai", "remote", "security" ] }, "sign-envelope": { "name": "sign-envelope", "version": "1.0.0", "description": "Create signed envelope with payload, hash, signature, and timestamp", "category": "security", "credentials": [ { "name": "SIGNING_KEY", "required": true, "description": "Base64-encoded ed25519 private key" } ], "inputs": [ { "name": "payload", "type": "any", "required": true, "description": "Data to wrap and sign" }, { "name": "key_id", "type": "string", "required": false, "description": "Key identifier for verification" } ], "outputs": [ { "name": "envelope", "type": "object", "description": "{payload, hash, signature, key_id, created_at}" }, { "name": "metadata", "type": "object", "description": "Processing metadata" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "tls-inspect": { "name": "tls-inspect", "version": "1.0.0", "description": "Inspect TLS certificate (expiry, SANs, chain, cipher)", "category": "security", "credentials": [], "inputs": [ { "name": "host", "type": "string", "required": true, "description": "Hostname or host:port to inspect" } ], "outputs": [ { "name": "certificate", "type": "object", "description": "Certificate details" }, { "name": "valid", "type": "boolean", "description": "Whether cert is valid and not expired" }, { "name": "metadata", "type": "object", "description": "Inspection metadata" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "verify-signature": { "name": "verify-signature", "version": "1.0.0", "description": "Verify signed envelope signature and extract payload", "category": "security", "credentials": [ { "name": "VERIFY_KEY", "required": true, "description": "Verification key" } ], "inputs": [ { "name": "envelope", "type": "object", "required": true, "description": "Signed envelope from sign-envelope skill" } ], "outputs": [ { "name": "valid", "type": "boolean", "description": "Whether signature is valid" }, { "name": "payload", "type": "any", "description": "Extracted payload (if valid)" }, { "name": "metadata", "type": "object", "description": "Verification details" } ], "backends": [ "local" ], "tags": [ "local", "offline", "security" ] }, "array-chunk": { "name": "array-chunk", "version": "1.0.0", "description": "Split arrays into smaller chunks", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Array to chunk" }, { "name": "size", "type": "integer", "default": 2, "description": "Chunk size" } ], "outputs": [ { "name": "chunks", "type": "array", "description": "Array of chunks" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-filter": { "name": "array-filter", "version": "1.0.0", "description": "Filter array elements by condition", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Source array" }, { "name": "condition", "type": "string", "required": true, "description": "Filter condition" } ], "outputs": [ { "name": "filtered", "type": "array", "description": "Filtered elements" }, { "name": "count", "type": "integer", "description": "Number of matching elements" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-find": { "name": "array-find", "version": "1.0.0", "description": "Find element index in array", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Source array" }, { "name": "value", "type": "any", "required": true, "description": "Value to find" } ], "outputs": [ { "name": "index", "type": "integer", "description": "Index of element (-1 if not found)" }, { "name": "found", "type": "boolean", "description": "Whether element was found" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-first": { "name": "array-first", "version": "1.0.0", "description": "Get first element(s) from array", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Source array" }, { "name": "count", "type": "integer", "default": 1, "description": "Number of elements" } ], "outputs": [ { "name": "first", "type": "any", "description": "First element(s)" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-flatten": { "name": "array-flatten", "version": "1.0.0", "description": "Flatten nested arrays", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Nested array to flatten" } ], "outputs": [ { "name": "flat", "type": "array", "description": "Flattened array" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-includes": { "name": "array-includes", "version": "1.0.0", "description": "Check if array includes a value", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Array to search" }, { "name": "value", "type": "any", "required": true, "description": "Value to find" } ], "outputs": [ { "name": "includes", "type": "boolean", "description": "Whether value was found" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-join": { "name": "array-join", "version": "1.0.0", "description": "Join array elements with separator", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Array to join" }, { "name": "separator", "type": "string", "default": ",", "description": "Separator string" } ], "outputs": [ { "name": "joined", "type": "string", "description": "Joined string using custom separator" }, { "name": "by_comma", "type": "string", "description": "Joined with comma separator" }, { "name": "by_space", "type": "string", "description": "Joined with space separator" }, { "name": "by_newline", "type": "string", "description": "Joined with newline separator" }, { "name": "by_pipe", "type": "string", "description": "Joined with pipe separator" }, { "name": "count", "type": "number", "description": "Number of elements" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-last": { "name": "array-last", "version": "1.0.0", "description": "Get last element(s) from array", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Source array" } ], "outputs": [ { "name": "last", "type": "any", "description": "Last element" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-length": { "name": "array-length", "version": "1.0.0", "description": "Get length/size of arrays and strings", "category": "transforms", "credentials": [], "inputs": [ { "name": "value", "type": "any", "required": true, "description": "Array or string" } ], "outputs": [ { "name": "length", "type": "integer", "description": "Length of the value" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-map": { "name": "array-map", "version": "1.0.0", "description": "Transform array elements", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Source array" } ], "outputs": [ { "name": "mapped", "type": "array", "description": "Transformed elements" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-reduce": { "name": "array-reduce", "version": "1.0.0", "description": "Reduce array to single value (sum)", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Array of numbers" } ], "outputs": [ { "name": "sum", "type": "number", "description": "Sum of all elements" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-reverse": { "name": "array-reverse", "version": "1.0.0", "description": "Reverse array order", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Array to reverse" } ], "outputs": [ { "name": "reversed", "type": "array", "description": "Reversed array" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-slice": { "name": "array-slice", "version": "1.0.0", "description": "Extract portion of array", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Source array" }, { "name": "start", "type": "integer", "default": 0, "description": "Start index" }, { "name": "end", "type": "integer", "description": "End index" } ], "outputs": [ { "name": "sliced", "type": "array", "description": "Sliced array portion" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-sort": { "name": "array-sort", "version": "1.0.0", "description": "Sort arrays of values", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Array to sort" } ], "outputs": [ { "name": "sorted", "type": "array", "description": "Sorted array" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "array-unique": { "name": "array-unique", "version": "1.0.0", "description": "Remove duplicate values from arrays", "category": "transforms", "credentials": [], "inputs": [ { "name": "array", "type": "array", "required": true, "description": "Array with potential duplicates" } ], "outputs": [ { "name": "unique", "type": "array", "description": "Array with duplicates removed" } ], "backends": [ "local" ], "tags": [ "array", "local", "offline", "transforms" ] }, "base64-codec": { "name": "base64-codec", "version": "1.0.0", "description": "Encode and decode Base64 content", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to encode or Base64 to decode" }, { "name": "mode", "type": "string", "default": "encode", "description": "Operation mode: 'encode' or 'decode'" } ], "outputs": [ { "name": "result", "type": "string", "description": "Encoded or decoded result" }, { "name": "mode", "type": "string", "description": "Operation performed" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "binary-encode": { "name": "binary-encode", "version": "1.0.0", "description": "Convert text to binary representation", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to encode" } ], "outputs": [ { "name": "binary", "type": "string", "description": "Binary representation" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "boolean-parse": { "name": "boolean-parse", "version": "1.0.0", "description": "Parse various boolean representations", "category": "transforms", "credentials": [], "inputs": [ { "name": "value", "type": "string", "required": true, "description": "Value to parse as boolean" } ], "outputs": [ { "name": "boolean", "type": "boolean", "description": "Parsed boolean value" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "color-convert": { "name": "color-convert", "version": "1.0.0", "description": "Convert colors between hex, RGB, and HSL formats", "category": "transforms", "credentials": [], "inputs": [ { "name": "color", "type": "string", "required": true, "description": "Color in hex (#fff or #ffffff) or rgb(r,g,b)" } ], "outputs": [ { "name": "hex", "type": "string" }, { "name": "rgb", "type": "object" }, { "name": "css", "type": "string" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "color-rgb": { "name": "color-rgb", "version": "1.0.0", "description": "Convert between hex and RGB color formats", "category": "transforms", "credentials": [], "inputs": [ { "name": "color", "type": "string", "required": true, "description": "Color in hex format" } ], "outputs": [ { "name": "rgb", "type": "object", "description": "RGB values" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "cron-explain": { "name": "cron-explain", "version": "1.0.0", "description": "Explain cron expressions in plain English", "category": "transforms", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key for natural language explanation" } ], "inputs": [ { "name": "cron", "type": "string", "required": true, "description": "Cron expression to explain (5 or 6 fields)" } ], "outputs": [ { "name": "explanation", "type": "string", "description": "Human-readable explanation" }, { "name": "cron", "type": "string", "description": "Original cron expression" }, { "name": "fields", "type": "object", "description": "Parsed cron fields" } ], "backends": [ "openai", "ollama" ], "tags": [ "local", "offline", "openai", "remote", "transforms" ] }, "csv-to-json": { "name": "csv-to-json", "version": "1.0.0", "description": "Convert CSV data to JSON array of objects", "category": "transforms", "credentials": [], "inputs": [ { "name": "csv", "type": "string", "required": true, "description": "CSV data with header row" }, { "name": "delimiter", "type": "string", "default": ",", "description": "Field delimiter" } ], "outputs": [ { "name": "data", "type": "array", "description": "Array of JSON objects" }, { "name": "row_count", "type": "integer", "description": "Number of data rows" }, { "name": "columns", "type": "array", "description": "Column names from header" } ], "backends": [ "local" ], "tags": [ "csv", "local", "offline", "transforms" ] }, "date-add": { "name": "date-add", "version": "1.0.0", "description": "Add duration to date", "category": "transforms", "credentials": [], "inputs": [ { "name": "date", "type": "string", "required": true, "description": "Base date" }, { "name": "days", "type": "integer", "description": "Days to add" } ], "outputs": [ { "name": "result", "type": "string", "description": "Resulting date" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "date-diff": { "name": "date-diff", "version": "1.0.0", "description": "Calculate difference between dates", "category": "transforms", "credentials": [], "inputs": [ { "name": "start", "type": "string", "required": true, "description": "Start date" }, { "name": "end", "type": "string", "required": true, "description": "End date" } ], "outputs": [ { "name": "days", "type": "number", "description": "Difference in days" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "date-format": { "name": "date-format", "version": "1.0.0", "description": "Parse and format dates in various formats", "category": "transforms", "credentials": [], "inputs": [ { "name": "date", "type": "string", "required": true, "description": "Date string to parse" } ], "outputs": [ { "name": "iso", "type": "string", "description": "ISO 8601 format" }, { "name": "unix", "type": "integer", "description": "Unix timestamp" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "date-now": { "name": "date-now", "version": "1.0.0", "description": "Get current date and time", "category": "transforms", "credentials": [], "inputs": [], "outputs": [ { "name": "now", "type": "string", "description": "Current timestamp" }, { "name": "unix", "type": "integer", "description": "Unix timestamp" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "duration-format": { "name": "duration-format", "version": "1.0.0", "description": "Format durations in human-readable format", "category": "transforms", "credentials": [], "inputs": [ { "name": "seconds", "type": "integer", "required": true, "description": "Duration in seconds" } ], "outputs": [ { "name": "formatted", "type": "string", "description": "Human-readable duration" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "emoji-strip": { "name": "emoji-strip", "version": "1.0.0", "description": "Remove or extract emojis from text", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text with emojis" } ], "outputs": [ { "name": "clean", "type": "string", "description": "Text without emojis" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "env-parse": { "name": "env-parse", "version": "1.0.0", "description": "Parse .env file format to JSON", "category": "transforms", "credentials": [], "inputs": [ { "name": "content", "type": "string", "required": true, "description": ".env file content" } ], "outputs": [ { "name": "variables", "type": "object", "description": "Parsed environment variables" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "file-size": { "name": "file-size", "version": "1.0.0", "description": "Format file sizes in human-readable format", "category": "transforms", "credentials": [], "inputs": [ { "name": "bytes", "type": "integer", "required": true, "description": "Size in bytes" } ], "outputs": [ { "name": "formatted", "type": "string", "description": "Human-readable size" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "hex-encode": { "name": "hex-encode", "version": "1.0.0", "description": "Encode and decode hexadecimal strings", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to encode/decode" } ], "outputs": [ { "name": "hex", "type": "string", "description": "Hex encoded result" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "html-strip": { "name": "html-strip", "version": "1.0.0", "description": "Strip HTML tags from text, leaving only plain text content", "category": "transforms", "credentials": [], "inputs": [ { "name": "html", "type": "string", "required": true, "description": "HTML content to strip" } ], "outputs": [ { "name": "text", "type": "string", "description": "Plain text without HTML tags" }, { "name": "original_length", "type": "integer", "description": "Original HTML length" }, { "name": "text_length", "type": "integer", "description": "Resulting text length" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "http-status": { "name": "http-status", "version": "1.0.0", "description": "Look up HTTP status code meanings", "category": "transforms", "credentials": [], "inputs": [ { "name": "code", "type": "integer", "required": true, "description": "HTTP status code" } ], "outputs": [ { "name": "message", "type": "string", "description": "Status message" }, { "name": "category", "type": "string", "description": "Status category" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "ip-parse": { "name": "ip-parse", "version": "1.0.0", "description": "Parse and validate IP addresses", "category": "transforms", "credentials": [], "inputs": [ { "name": "ip", "type": "string", "required": true, "description": "IP address to parse" } ], "outputs": [ { "name": "valid", "type": "boolean", "description": "Whether IP is valid" }, { "name": "version", "type": "integer", "description": "IP version (4 or 6)" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "json-canonicalize": { "name": "json-canonicalize", "version": "1.0.0", "description": "Convert JSON to canonical form for reproducible hashing/signing", "category": "transforms", "credentials": [], "inputs": [ { "name": "json", "type": "object", "required": true, "description": "JSON to canonicalize" } ], "outputs": [ { "name": "canonical", "type": "string", "description": "Canonicalized JSON string" }, { "name": "hash", "type": "string", "description": "SHA-256 hash of canonical form" }, { "name": "metadata", "type": "object", "description": "Processing metadata" } ], "backends": [ "local" ], "tags": [ "json", "local", "offline", "transforms" ] }, "json-compact": { "name": "json-compact", "version": "1.0.0", "description": "Compact JSON by removing whitespace", "category": "transforms", "credentials": [], "inputs": [ { "name": "json", "type": "string", "required": true, "description": "JSON to compact" } ], "outputs": [ { "name": "compact", "type": "string", "description": "Compacted JSON" } ], "backends": [ "local" ], "tags": [ "json", "local", "offline", "transforms" ] }, "json-diff": { "name": "json-diff", "version": "1.0.0", "description": "Compare two JSON objects and find differences", "category": "transforms", "credentials": [], "inputs": [ { "name": "a", "type": "object", "required": true, "description": "First JSON object" }, { "name": "b", "type": "object", "required": true, "description": "Second JSON object" } ], "outputs": [ { "name": "equal", "type": "boolean", "description": "Whether objects are equal" }, { "name": "differences", "type": "array", "description": "List of differences" } ], "backends": [ "local" ], "tags": [ "json", "local", "offline", "transforms" ] }, "json-flatten": { "name": "json-flatten", "version": "1.0.0", "description": "Flatten nested JSON objects", "category": "transforms", "credentials": [], "inputs": [ { "name": "object", "type": "object", "required": true, "description": "Nested JSON object" } ], "outputs": [ { "name": "flat", "type": "object", "description": "Flattened object with dot notation keys" } ], "backends": [ "local" ], "tags": [ "json", "local", "offline", "transforms" ] }, "json-merge": { "name": "json-merge", "version": "1.0.0", "description": "Merge multiple JSON objects", "category": "transforms", "credentials": [], "inputs": [ { "name": "objects", "type": "array", "required": true, "description": "JSON objects to merge" } ], "outputs": [ { "name": "merged", "type": "object", "description": "Merged JSON object" } ], "backends": [ "local" ], "tags": [ "json", "local", "offline", "transforms" ] }, "json-pretty": { "name": "json-pretty", "version": "1.0.0", "description": "Pretty print JSON with indentation", "category": "transforms", "credentials": [], "inputs": [ { "name": "json", "type": "string", "required": true }, { "name": "indent", "type": "integer", "default": 2 } ], "outputs": [ { "name": "formatted", "type": "string" } ], "backends": [ "local" ], "tags": [ "json", "local", "offline", "transforms" ] }, "json-to-csv": { "name": "json-to-csv", "version": "1.0.0", "description": "Convert JSON array of objects to CSV format", "category": "transforms", "credentials": [], "inputs": [ { "name": "data", "type": "array", "required": true, "description": "JSON array of objects" }, { "name": "delimiter", "type": "string", "default": ",", "description": "Field delimiter" } ], "outputs": [ { "name": "csv", "type": "string", "description": "CSV formatted string" }, { "name": "row_count", "type": "integer", "description": "Number of data rows" }, { "name": "columns", "type": "array", "description": "Column names" } ], "backends": [ "local" ], "tags": [ "json", "local", "offline", "transforms" ] }, "json-to-yaml": { "name": "json-to-yaml", "version": "1.0.0", "description": "Convert JSON to YAML format", "category": "transforms", "credentials": [], "inputs": [ { "name": "json", "type": "string", "required": true, "description": "JSON string to convert" } ], "outputs": [ { "name": "yaml", "type": "string", "description": "YAML formatted output" } ], "backends": [ "local" ], "tags": [ "json", "local", "offline", "transforms" ] }, "json-validate": { "name": "json-validate", "version": "1.0.0", "description": "Validate JSON syntax and structure", "category": "transforms", "credentials": [], "inputs": [ { "name": "json", "type": "string", "required": true, "description": "JSON content to validate" } ], "outputs": [ { "name": "valid", "type": "boolean", "description": "Whether the JSON is valid" }, { "name": "error", "type": "string", "description": "Error message if invalid" }, { "name": "parsed", "type": "object", "description": "Parsed JSON object (if valid)" }, { "name": "stats", "type": "object", "description": "Statistics about the JSON (keys, depth, etc.)" } ], "backends": [ "local" ], "tags": [ "json", "local", "offline", "transforms" ] }, "jwt-decode": { "name": "jwt-decode", "version": "1.0.0", "description": "Decode JWT tokens to view header and payload (no verification)", "category": "transforms", "credentials": [], "inputs": [ { "name": "token", "type": "string", "required": true } ], "outputs": [ { "name": "header", "type": "object" }, { "name": "payload", "type": "object" }, { "name": "signature", "type": "string" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "line-numbers": { "name": "line-numbers", "version": "1.0.0", "description": "Add or remove line numbers from text", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to process" } ], "outputs": [ { "name": "numbered", "type": "string", "description": "Text with line numbers" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "lorem-ipsum": { "name": "lorem-ipsum", "version": "1.0.0", "description": "Generate Lorem Ipsum placeholder text", "category": "transforms", "credentials": [], "inputs": [ { "name": "paragraphs", "type": "integer", "default": 1, "description": "Number of paragraphs" } ], "outputs": [ { "name": "text", "type": "string", "description": "Generated text" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "markdown-format": { "name": "markdown-format", "version": "1.0.0", "description": "Format text as Markdown elements (headings, lists, code blocks, links)", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to format" }, { "name": "format", "type": "string", "default": "paragraph", "description": "Format type: heading, list, code, link, bold, italic, quote" }, { "name": "level", "type": "integer", "default": 1, "description": "Heading level (1-6) or list indentation" } ], "outputs": [ { "name": "markdown", "type": "string", "description": "Formatted Markdown" }, { "name": "format", "type": "string", "description": "Format applied" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "markdown-toc": { "name": "markdown-toc", "version": "1.0.0", "description": "Extract table of contents from markdown", "category": "transforms", "credentials": [], "inputs": [ { "name": "markdown", "type": "string", "required": true, "description": "Markdown content" } ], "outputs": [ { "name": "toc", "type": "array", "description": "Table of contents entries" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "math-abs": { "name": "math-abs", "version": "1.0.0", "description": "Calculate absolute value", "category": "transforms", "credentials": [], "inputs": [ { "name": "number", "type": "number", "required": true, "description": "Number to get absolute value of" } ], "outputs": [ { "name": "abs", "type": "number", "description": "Absolute value" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "math-ceil": { "name": "math-ceil", "version": "1.0.0", "description": "Round number up to integer", "category": "transforms", "credentials": [], "inputs": [ { "name": "number", "type": "number", "required": true, "description": "Number to ceil" } ], "outputs": [ { "name": "ceil", "type": "integer", "description": "Ceiled value" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "math-floor": { "name": "math-floor", "version": "1.0.0", "description": "Round number down to integer", "category": "transforms", "credentials": [], "inputs": [ { "name": "number", "type": "number", "required": true, "description": "Number to floor" } ], "outputs": [ { "name": "floor", "type": "integer", "description": "Floored value" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "math-max": { "name": "math-max", "version": "1.0.0", "description": "Find maximum value in array", "category": "transforms", "credentials": [], "inputs": [ { "name": "numbers", "type": "array", "required": true, "description": "Array of numbers" } ], "outputs": [ { "name": "max", "type": "number", "description": "Maximum value" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "math-min": { "name": "math-min", "version": "1.0.0", "description": "Find minimum value in array", "category": "transforms", "credentials": [], "inputs": [ { "name": "numbers", "type": "array", "required": true, "description": "Array of numbers" } ], "outputs": [ { "name": "min", "type": "number", "description": "Minimum value" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "math-mod": { "name": "math-mod", "version": "1.0.0", "description": "Calculate modulo (remainder)", "category": "transforms", "credentials": [], "inputs": [ { "name": "dividend", "type": "number", "required": true, "description": "Number to divide" }, { "name": "divisor", "type": "number", "required": true, "description": "Number to divide by" } ], "outputs": [ { "name": "remainder", "type": "number", "description": "Remainder after division" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "math-pow": { "name": "math-pow", "version": "1.0.0", "description": "Calculate power (exponentiation)", "category": "transforms", "credentials": [], "inputs": [ { "name": "base", "type": "number", "required": true, "description": "Base number" }, { "name": "exponent", "type": "number", "required": true, "description": "Exponent" } ], "outputs": [ { "name": "result", "type": "number", "description": "Result of base^exponent" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "math-sqrt": { "name": "math-sqrt", "version": "1.0.0", "description": "Calculate square root", "category": "transforms", "credentials": [], "inputs": [ { "name": "number", "type": "number", "required": true, "description": "Number to get square root of" } ], "outputs": [ { "name": "sqrt", "type": "number", "description": "Square root" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "number-format": { "name": "number-format", "version": "1.0.0", "description": "Format numbers with thousands separators, decimals, currency", "category": "transforms", "credentials": [], "inputs": [ { "name": "number", "type": "number", "required": true }, { "name": "format", "type": "string", "default": "standard", "description": "Format type: standard, currency, percent, scientific" } ], "outputs": [ { "name": "formatted", "type": "string" }, { "name": "original", "type": "number" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "number-round": { "name": "number-round", "version": "1.0.0", "description": "Round numbers with precision control", "category": "transforms", "credentials": [], "inputs": [ { "name": "number", "type": "number", "required": true, "description": "Number to round" }, { "name": "precision", "type": "integer", "default": 0, "description": "Decimal places" } ], "outputs": [ { "name": "rounded", "type": "number", "description": "Rounded number" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "object-keys": { "name": "object-keys", "version": "1.0.0", "description": "Extract keys from JSON objects", "category": "transforms", "credentials": [], "inputs": [ { "name": "object", "type": "object", "required": true, "description": "JSON object" } ], "outputs": [ { "name": "keys", "type": "array", "description": "Array of keys" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "object-merge": { "name": "object-merge", "version": "1.0.0", "description": "Deep merge two JSON objects", "category": "transforms", "credentials": [], "inputs": [ { "name": "objects", "type": "array", "required": true, "description": "Array of objects to merge" } ], "outputs": [ { "name": "merged", "type": "object", "description": "Merged object" }, { "name": "count", "type": "integer", "description": "Number of objects merged" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "object-pick": { "name": "object-pick", "version": "1.0.0", "description": "Pick specific keys from an object", "category": "transforms", "credentials": [], "inputs": [ { "name": "object", "type": "object", "required": true, "description": "Source object" }, { "name": "keys", "type": "array", "required": true, "description": "Keys to pick" } ], "outputs": [ { "name": "picked", "type": "object", "description": "Object with only picked keys" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "object-values": { "name": "object-values", "version": "1.0.0", "description": "Extract all values from an object", "category": "transforms", "credentials": [], "inputs": [ { "name": "object", "type": "object", "required": true, "description": "Source object" } ], "outputs": [ { "name": "values", "type": "array", "description": "Array of values" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "path-parse": { "name": "path-parse", "version": "1.0.0", "description": "Parse file paths into components", "category": "transforms", "credentials": [], "inputs": [ { "name": "path", "type": "string", "required": true, "description": "File path to parse" } ], "outputs": [ { "name": "dirname", "type": "string", "description": "Directory name" }, { "name": "basename", "type": "string", "description": "File name" }, { "name": "extension", "type": "string", "description": "File extension" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "percentage-calc": { "name": "percentage-calc", "version": "1.0.0", "description": "Calculate percentages and ratios", "category": "transforms", "credentials": [], "inputs": [ { "name": "value", "type": "number", "required": true, "description": "Value to calculate" }, { "name": "total", "type": "number", "required": true, "description": "Total value" } ], "outputs": [ { "name": "percentage", "type": "number", "description": "Percentage result" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "query-string": { "name": "query-string", "version": "1.0.0", "description": "Parse and build URL query strings", "category": "transforms", "credentials": [], "inputs": [ { "name": "query", "type": "string", "required": true, "description": "Query string to parse" } ], "outputs": [ { "name": "params", "type": "object", "description": "Parsed parameters" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "regex-extract": { "name": "regex-extract", "version": "1.0.0", "description": "Extract text matching regex patterns from input", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to search" }, { "name": "pattern", "type": "string", "required": true, "description": "Regex pattern to match" } ], "outputs": [ { "name": "matches", "type": "array", "description": "Array of all matches" }, { "name": "count", "type": "integer", "description": "Number of matches found" }, { "name": "has_match", "type": "boolean", "description": "Whether any matches were found" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "semver-parse": { "name": "semver-parse", "version": "1.0.0", "description": "Parse semantic version strings", "category": "transforms", "credentials": [], "inputs": [ { "name": "version", "type": "string", "required": true, "description": "Semantic version string" } ], "outputs": [ { "name": "major", "type": "integer", "description": "Major version" }, { "name": "minor", "type": "integer", "description": "Minor version" }, { "name": "patch", "type": "integer", "description": "Patch version" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "slug-generate": { "name": "slug-generate", "version": "1.0.0", "description": "Generate URL-safe slugs from text (lowercase, hyphens, no special chars)", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to convert to slug" }, { "name": "separator", "type": "string", "default": "-", "description": "Separator character (default: hyphen)" } ], "outputs": [ { "name": "slug", "type": "string", "description": "URL-safe slug" }, { "name": "original", "type": "string", "description": "Original text" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "string-case": { "name": "string-case", "version": "1.0.0", "description": "Convert string between case formats (camel, snake, kebab, pascal)", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to convert" }, { "name": "format", "type": "string", "default": "snake", "description": "Target format: snake, camel, kebab, pascal, upper, lower" } ], "outputs": [ { "name": "result", "type": "string", "description": "Converted string" } ], "backends": [ "local" ], "tags": [ "local", "offline", "string", "transforms" ] }, "string-contains": { "name": "string-contains", "version": "1.0.0", "description": "Check if string contains substring", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to search in" }, { "name": "search", "type": "string", "required": true, "description": "Substring to find" } ], "outputs": [ { "name": "contains", "type": "boolean", "description": "Whether substring was found" } ], "backends": [ "local" ], "tags": [ "local", "offline", "string", "transforms" ] }, "string-ends-with": { "name": "string-ends-with", "version": "1.0.0", "description": "Check if string ends with suffix", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to check" }, { "name": "suffix", "type": "string", "required": true, "description": "Suffix to match" } ], "outputs": [ { "name": "ends_with", "type": "boolean", "description": "Whether text ends with suffix" } ], "backends": [ "local" ], "tags": [ "local", "offline", "string", "transforms" ] }, "string-pad": { "name": "string-pad", "version": "1.0.0", "description": "Pad strings to specified length", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to pad" }, { "name": "length", "type": "integer", "default": 10, "description": "Target length" }, { "name": "char", "type": "string", "default": " ", "description": "Padding character" } ], "outputs": [ { "name": "left", "type": "string", "description": "Left-padded string" }, { "name": "right", "type": "string", "description": "Right-padded string" } ], "backends": [ "local" ], "tags": [ "local", "offline", "string", "transforms" ] }, "string-repeat": { "name": "string-repeat", "version": "1.0.0", "description": "Repeat a string multiple times", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to repeat" }, { "name": "count", "type": "integer", "default": 2, "description": "Number of repetitions" } ], "outputs": [ { "name": "repeated", "type": "string", "description": "Repeated string" } ], "backends": [ "local" ], "tags": [ "local", "offline", "string", "transforms" ] }, "string-replace": { "name": "string-replace", "version": "1.0.0", "description": "Replace substrings in text", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Source text" }, { "name": "search", "type": "string", "required": true, "description": "String to find" }, { "name": "replace", "type": "string", "required": true, "description": "Replacement string" } ], "outputs": [ { "name": "result", "type": "string", "description": "Text with replacements" } ], "backends": [ "local" ], "tags": [ "local", "offline", "string", "transforms" ] }, "string-reverse": { "name": "string-reverse", "version": "1.0.0", "description": "Reverse a string character by character", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to reverse" } ], "outputs": [ { "name": "reversed", "type": "string", "description": "Reversed text" }, { "name": "original", "type": "string", "description": "Original text" } ], "backends": [ "local" ], "tags": [ "local", "offline", "string", "transforms" ] }, "string-split": { "name": "string-split", "version": "1.0.0", "description": "Split strings by delimiter", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to split" }, { "name": "delimiter", "type": "string", "default": ",", "description": "Delimiter character" } ], "outputs": [ { "name": "parts", "type": "array", "description": "Array of parts" }, { "name": "by_comma", "type": "array", "description": "Parts split by comma" }, { "name": "by_space", "type": "array", "description": "Parts split by space" }, { "name": "by_newline", "type": "array", "description": "Parts split by newline" }, { "name": "by_pipe", "type": "array", "description": "Parts split by pipe" }, { "name": "comma_count", "type": "number", "description": "Number of comma-separated parts" } ], "backends": [ "local" ], "tags": [ "local", "offline", "string", "transforms" ] }, "string-starts-with": { "name": "string-starts-with", "version": "1.0.0", "description": "Check if string starts with prefix", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to check" }, { "name": "prefix", "type": "string", "required": true, "description": "Prefix to match" } ], "outputs": [ { "name": "starts_with", "type": "boolean", "description": "Whether text starts with prefix" } ], "backends": [ "local" ], "tags": [ "local", "offline", "string", "transforms" ] }, "string-trim": { "name": "string-trim", "version": "1.0.0", "description": "Trim whitespace from strings", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to trim" } ], "outputs": [ { "name": "trimmed", "type": "string", "description": "Trimmed text" } ], "backends": [ "local" ], "tags": [ "local", "offline", "string", "transforms" ] }, "text-analyze": { "name": "text-analyze", "version": "1.0.0", "description": "Analyze text for sentiment, entities, topics, and key phrases", "category": "transforms", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key for remote inference" } ], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to analyze" }, { "name": "analyses", "type": "array", "required": false, "description": "Types of analysis (sentiment, entities, topics, keywords)" } ], "outputs": [ { "name": "analysis", "type": "object", "description": "Analysis results" }, { "name": "metadata", "type": "object", "description": "Audit metadata" } ], "backends": [ "openai", "ollama" ], "tags": [ "local", "offline", "openai", "remote", "text", "transforms" ] }, "text-capitalize": { "name": "text-capitalize", "version": "1.0.0", "description": "Capitalize text in various styles", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to capitalize" } ], "outputs": [ { "name": "title", "type": "string", "description": "Title case" }, { "name": "sentence", "type": "string", "description": "Sentence case" } ], "backends": [ "local" ], "tags": [ "local", "offline", "text", "transforms" ] }, "text-diff": { "name": "text-diff", "version": "1.0.0", "description": "Compare two texts and identify differences", "category": "transforms", "credentials": [], "inputs": [ { "name": "original", "type": "string", "required": true, "description": "Original text" }, { "name": "modified", "type": "string", "required": true, "description": "Modified text to compare" } ], "outputs": [ { "name": "identical", "type": "boolean", "description": "Whether the texts are identical" }, { "name": "changes", "type": "object", "description": "Summary of changes (additions, deletions)" }, { "name": "similarity", "type": "number", "description": "Similarity score (0-1)" } ], "backends": [ "local" ], "tags": [ "local", "offline", "text", "transforms" ] }, "text-escape": { "name": "text-escape", "version": "1.0.0", "description": "Escape special characters in text", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to escape" } ], "outputs": [ { "name": "escaped", "type": "string", "description": "Escaped text" } ], "backends": [ "local" ], "tags": [ "local", "offline", "text", "transforms" ] }, "text-format": { "name": "text-format", "version": "1.0.0", "description": "Transform text case: uppercase, lowercase, title case, sentence case", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to format" }, { "name": "format", "type": "string", "default": "lower", "description": "Format type: upper, lower, title, sentence" } ], "outputs": [ { "name": "result", "type": "string", "description": "Formatted text" }, { "name": "format", "type": "string", "description": "Format applied" } ], "backends": [ "local" ], "tags": [ "local", "offline", "text", "transforms" ] }, "text-indent": { "name": "text-indent", "version": "1.0.0", "description": "Indent text blocks", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to indent" }, { "name": "spaces", "type": "integer", "default": 2, "description": "Number of spaces" } ], "outputs": [ { "name": "indented", "type": "string", "description": "Indented text" } ], "backends": [ "local" ], "tags": [ "local", "offline", "text", "transforms" ] }, "text-lines": { "name": "text-lines", "version": "1.0.0", "description": "Split text into lines and analyze", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Multi-line text" } ], "outputs": [ { "name": "lines", "type": "array", "description": "Array of lines" }, { "name": "count", "type": "integer", "description": "Line count" } ], "backends": [ "local" ], "tags": [ "local", "offline", "text", "transforms" ] }, "text-reverse": { "name": "text-reverse", "version": "1.0.0", "description": "Reverse text strings", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to reverse" } ], "outputs": [ { "name": "reversed", "type": "string", "description": "Reversed text" } ], "backends": [ "local" ], "tags": [ "local", "offline", "text", "transforms" ] }, "text-stats": { "name": "text-stats", "version": "1.0.0", "description": "Calculate detailed text statistics", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to analyze" } ], "outputs": [ { "name": "chars", "type": "integer", "description": "Character count" }, { "name": "words", "type": "integer", "description": "Word count" }, { "name": "lines", "type": "integer", "description": "Line count" } ], "backends": [ "local" ], "tags": [ "local", "offline", "text", "transforms" ] }, "text-truncate": { "name": "text-truncate", "version": "1.0.0", "description": "Truncate text to specified length with optional suffix", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to truncate" }, { "name": "length", "type": "integer", "default": 100, "description": "Maximum length" }, { "name": "suffix", "type": "string", "default": "...", "description": "Suffix to append if truncated" } ], "outputs": [ { "name": "result", "type": "string", "description": "Truncated text" }, { "name": "truncated", "type": "boolean", "description": "Whether text was truncated" }, { "name": "original_length", "type": "integer", "description": "Original text length" } ], "backends": [ "local" ], "tags": [ "local", "offline", "text", "transforms" ] }, "text-wrap": { "name": "text-wrap", "version": "1.0.0", "description": "Wrap text at specified width", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to wrap" }, { "name": "width", "type": "integer", "default": 80, "description": "Maximum line width" } ], "outputs": [ { "name": "wrapped", "type": "string", "description": "Wrapped text" } ], "backends": [ "local" ], "tags": [ "local", "offline", "text", "transforms" ] }, "time-parse": { "name": "time-parse", "version": "1.0.0", "description": "Parse time string to components", "category": "transforms", "credentials": [], "inputs": [ { "name": "time", "type": "string", "required": true, "description": "Time string to parse" } ], "outputs": [ { "name": "hour", "type": "integer", "description": "Hour component" }, { "name": "minute", "type": "integer", "description": "Minute component" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "timestamp-parse": { "name": "timestamp-parse", "version": "1.0.0", "description": "Parse and format timestamps between different formats (ISO, Unix, RFC)", "category": "transforms", "credentials": [], "inputs": [ { "name": "timestamp", "type": "string", "required": false, "description": "Timestamp to parse (defaults to now)" }, { "name": "format", "type": "string", "default": "iso", "description": "Output format: iso, unix, rfc2822" } ], "outputs": [ { "name": "iso", "type": "string", "description": "ISO 8601 format" }, { "name": "unix", "type": "integer", "description": "Unix timestamp (seconds)" }, { "name": "unix_ms", "type": "integer", "description": "Unix timestamp (milliseconds)" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "timezone-convert": { "name": "timezone-convert", "version": "1.0.0", "description": "Convert timestamp between timezones", "category": "transforms", "credentials": [], "inputs": [ { "name": "timestamp", "type": "string", "required": true, "description": "Timestamp to convert" }, { "name": "timezone", "type": "string", "required": true, "description": "Target timezone" } ], "outputs": [ { "name": "converted", "type": "string", "description": "Converted timestamp" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "type-check": { "name": "type-check", "version": "1.0.0", "description": "Check the type of a JSON value", "category": "transforms", "credentials": [], "inputs": [ { "name": "value", "type": "any", "required": true, "description": "Value to check" } ], "outputs": [ { "name": "type", "type": "string", "description": "Type name" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "url-encode": { "name": "url-encode", "version": "1.0.0", "description": "URL encode and decode text for safe URL parameters", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to encode or URL-encoded text to decode" }, { "name": "mode", "type": "string", "default": "encode", "description": "Operation mode: 'encode' or 'decode'" } ], "outputs": [ { "name": "result", "type": "string", "description": "Encoded or decoded result" }, { "name": "mode", "type": "string", "description": "Operation performed" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "url-parse": { "name": "url-parse", "version": "1.0.0", "description": "Parse URL components (protocol, host, path, query)", "category": "transforms", "credentials": [], "inputs": [ { "name": "url", "type": "string", "required": true, "description": "URL to parse" } ], "outputs": [ { "name": "protocol", "type": "string", "description": "URL protocol" }, { "name": "host", "type": "string", "description": "Host/domain" }, { "name": "path", "type": "string", "description": "URL path" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "whitespace-normalize": { "name": "whitespace-normalize", "version": "1.0.0", "description": "Normalize whitespace in text", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to normalize" } ], "outputs": [ { "name": "normalized", "type": "string", "description": "Text with normalized whitespace" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "word-count": { "name": "word-count", "version": "1.0.0", "description": "Count words, characters, sentences, and paragraphs in text", "category": "transforms", "credentials": [], "inputs": [ { "name": "text", "type": "string", "required": true, "description": "Text to analyze" } ], "outputs": [ { "name": "words", "type": "integer", "description": "Word count" }, { "name": "characters", "type": "integer", "description": "Character count (with spaces)" }, { "name": "characters_no_spaces", "type": "integer", "description": "Character count (without spaces)" }, { "name": "sentences", "type": "integer", "description": "Sentence count" }, { "name": "paragraphs", "type": "integer", "description": "Paragraph count" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms" ] }, "xml-to-json": { "name": "xml-to-json", "version": "1.0.0", "description": "Convert XML to JSON format", "category": "transforms", "credentials": [], "inputs": [ { "name": "xml", "type": "string", "required": true, "description": "XML string to convert" } ], "outputs": [ { "name": "json", "type": "object", "description": "JSON representation" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms", "xml" ] }, "yaml-to-json": { "name": "yaml-to-json", "version": "1.0.0", "description": "Convert YAML to JSON format", "category": "transforms", "credentials": [], "inputs": [ { "name": "yaml", "type": "string", "required": true, "description": "YAML string to convert" } ], "outputs": [ { "name": "json", "type": "object", "description": "JSON parsed output" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms", "yaml" ] }, "yaml-validate": { "name": "yaml-validate", "version": "1.0.0", "description": "Validate YAML syntax and provide detailed error information", "category": "transforms", "credentials": [], "inputs": [ { "name": "yaml", "type": "string", "required": true, "description": "YAML content to validate" } ], "outputs": [ { "name": "valid", "type": "boolean", "description": "Whether the YAML is valid" }, { "name": "error", "type": "string", "description": "Error message if invalid" }, { "name": "parsed", "type": "object", "description": "Parsed YAML as JSON (if valid)" } ], "backends": [ "local" ], "tags": [ "local", "offline", "transforms", "yaml" ] }, "audio-duration": { "name": "audio-duration", "version": "1.0.0", "description": "Parse and format audio duration", "category": "utilities", "credentials": [], "inputs": [ { "name": "seconds", "type": "number", "required": true, "description": "Duration in seconds" } ], "outputs": [ { "name": "formatted", "type": "string", "description": "Formatted duration (HH:MM:SS)" }, { "name": "minutes", "type": "number", "description": "Total minutes" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "config-normalize": { "name": "config-normalize", "version": "1.0.0", "description": "Convert YAML/TOML/INI configs to canonical JSON", "category": "utilities", "credentials": [], "inputs": [ { "name": "config", "type": "string", "required": true, "description": "Config content (YAML, TOML, or INI)" }, { "name": "format", "type": "string", "default": "auto", "enum": [ "auto", "yaml", "toml", "ini" ], "description": "Input format (auto-detect by default)" } ], "outputs": [ { "name": "json", "type": "object", "description": "Normalized JSON object" }, { "name": "metadata", "type": "object", "description": "Processing metadata including detected format" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "determinism-test": { "name": "determinism-test", "version": "1.0.0", "description": "Run input N times and measure output determinism/stability", "category": "utilities", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "For testing LLM-based pipelines" } ], "inputs": [ { "name": "input", "type": "any", "required": true, "description": "Input to test" }, { "name": "runs", "type": "integer", "default": 3, "description": "Number of runs" }, { "name": "pipeline", "type": "string", "required": false, "description": "Pipeline to test" } ], "outputs": [ { "name": "stable", "type": "boolean", "description": "Whether all outputs matched" }, { "name": "stability_score", "type": "number", "description": "Percentage of matching outputs (0-100)" }, { "name": "outputs", "type": "array", "description": "All outputs collected" }, { "name": "diffs", "type": "array", "description": "Differences between outputs" }, { "name": "metadata", "type": "object", "description": "Test metadata" } ], "backends": [ "local" ], "tags": [ "local", "offline", "openai", "utilities" ] }, "email-validate": { "name": "email-validate", "version": "1.0.0", "description": "Validate email address format and extract parts (user, domain)", "category": "utilities", "credentials": [], "inputs": [ { "name": "email", "type": "string", "required": true, "description": "Email address to validate" } ], "outputs": [ { "name": "valid", "type": "boolean", "description": "Whether email format is valid" }, { "name": "user", "type": "string", "description": "User part (before @)" }, { "name": "domain", "type": "string", "description": "Domain part (after @)" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "idempotent-cache": { "name": "idempotent-cache", "version": "1.0.0", "description": "Cache results by input hash for idempotent operations", "category": "utilities", "credentials": [], "inputs": [ { "name": "input", "type": "any", "required": true, "description": "Input to hash and cache" }, { "name": "ttl_seconds", "type": "integer", "default": 3600, "description": "Cache TTL in seconds" } ], "outputs": [ { "name": "hash", "type": "string", "description": "Input hash" }, { "name": "cached", "type": "boolean", "description": "Whether result was from cache" }, { "name": "result", "type": "any", "description": "Cached or computed result" }, { "name": "metadata", "type": "object", "description": "Cache metadata" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "image-dimensions": { "name": "image-dimensions", "version": "1.0.0", "description": "Parse image dimensions and calculate properties", "category": "utilities", "credentials": [], "inputs": [ { "name": "width", "type": "integer", "required": true, "description": "Image width in pixels" }, { "name": "height", "type": "integer", "required": true, "description": "Image height in pixels" } ], "outputs": [ { "name": "aspect_ratio", "type": "string", "description": "Aspect ratio (e.g., 16:9)" }, { "name": "megapixels", "type": "number", "description": "Total megapixels" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "image-metadata": { "name": "image-metadata", "version": "1.0.0", "description": "Extract metadata from base64-encoded image", "category": "utilities", "credentials": [], "inputs": [ { "name": "image_base64", "type": "string", "required": true, "description": "Base64-encoded image data" } ], "outputs": [ { "name": "format", "type": "string", "description": "Image format detected" }, { "name": "size_bytes", "type": "integer", "description": "Size in bytes" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "image-resize-calc": { "name": "image-resize-calc", "version": "1.0.0", "description": "Calculate new dimensions for image resizing", "category": "utilities", "credentials": [], "inputs": [ { "name": "width", "type": "integer", "required": true, "description": "Current width" }, { "name": "height", "type": "integer", "required": true, "description": "Current height" }, { "name": "max_width", "type": "integer", "description": "Maximum target width" }, { "name": "max_height", "type": "integer", "description": "Maximum target height" } ], "outputs": [ { "name": "new_width", "type": "integer", "description": "Calculated new width" }, { "name": "new_height", "type": "integer", "description": "Calculated new height" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "media-info": { "name": "media-info", "version": "1.0.0", "description": "Get comprehensive media file information", "category": "utilities", "credentials": [], "inputs": [ { "name": "filename", "type": "string", "required": true, "description": "Media filename" }, { "name": "size_bytes", "type": "integer", "description": "File size in bytes" } ], "outputs": [ { "name": "type", "type": "string", "description": "Media type category" }, { "name": "format", "type": "string", "description": "File format" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "media-type-detect": { "name": "media-type-detect", "version": "1.0.0", "description": "Detect media type from file extension or content", "category": "utilities", "credentials": [], "inputs": [ { "name": "filename", "type": "string", "description": "Filename to detect type from" }, { "name": "content_type", "type": "string", "description": "Content-Type header if available" } ], "outputs": [ { "name": "media_type", "type": "string", "description": "Detected media type" }, { "name": "category", "type": "string", "description": "Category (image, audio, video, document)" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "mime-type": { "name": "mime-type", "version": "1.0.0", "description": "Look up MIME types by file extension", "category": "utilities", "credentials": [], "inputs": [ { "name": "extension", "type": "string", "required": true, "description": "File extension" } ], "outputs": [ { "name": "mime", "type": "string", "description": "MIME type" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "openapi-validate": { "name": "openapi-validate", "version": "1.0.0", "description": "Validate HTTP requests/responses against OpenAPI specification", "category": "utilities", "credentials": [], "inputs": [ { "name": "spec", "type": "object", "required": true, "description": "OpenAPI specification" }, { "name": "request", "type": "object", "required": false, "description": "HTTP request to validate" }, { "name": "response", "type": "object", "required": false, "description": "HTTP response to validate" } ], "outputs": [ { "name": "valid", "type": "boolean", "description": "Whether request/response matches spec" }, { "name": "errors", "type": "array", "description": "Validation errors" }, { "name": "metadata", "type": "object", "description": "Validation metadata" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "random-number": { "name": "random-number", "version": "1.0.0", "description": "Generate random numbers within a range", "category": "utilities", "credentials": [], "inputs": [ { "name": "min", "type": "integer", "default": 0, "description": "Minimum value" }, { "name": "max", "type": "integer", "default": 100, "description": "Maximum value" } ], "outputs": [ { "name": "number", "type": "integer", "description": "Random number" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "retry-wrapper": { "name": "retry-wrapper", "version": "1.0.0", "description": "Wrap commands with automatic retry and exponential backoff", "category": "utilities", "credentials": [], "inputs": [ { "name": "command", "type": "string", "required": true, "description": "Command to execute and retry" }, { "name": "max_retries", "type": "integer", "default": 3, "description": "Maximum retry attempts" }, { "name": "backoff_ms", "type": "integer", "default": 1000, "description": "Initial backoff in milliseconds" } ], "outputs": [ { "name": "output", "type": "string", "description": "Command output" }, { "name": "attempts", "type": "integer", "description": "Number of attempts made" }, { "name": "success", "type": "boolean", "description": "Whether command succeeded" }, { "name": "metadata", "type": "object", "description": "Execution metadata" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "uuid-generate": { "name": "uuid-generate", "version": "1.0.0", "description": "Generate UUIDs (v4) for unique identifiers", "category": "utilities", "credentials": [], "inputs": [ { "name": "count", "type": "integer", "default": 1, "description": "Number of UUIDs to generate" } ], "outputs": [ { "name": "uuid", "type": "string", "description": "Generated UUID (when count=1)" }, { "name": "uuids", "type": "array", "description": "Array of generated UUIDs (when count>1)" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "video-thumbnail": { "name": "video-thumbnail", "version": "1.0.0", "description": "Generate thumbnail URL/timestamp for video", "category": "utilities", "credentials": [], "inputs": [ { "name": "video_url", "type": "string", "required": true, "description": "Video URL" }, { "name": "timestamp", "type": "number", "description": "Timestamp in seconds for thumbnail" } ], "outputs": [ { "name": "thumbnail_time", "type": "string", "description": "Formatted timestamp for thumbnail" }, { "name": "video_url", "type": "string", "description": "Original video URL" } ], "backends": [ "local" ], "tags": [ "local", "offline", "utilities" ] }, "auto-coder": { "name": "auto-coder", "version": "1.0.0", "description": "Autonomous coding with GitHub integration and CI/CD automation", "category": "workflows", "credentials": [ { "name": "GITHUB_TOKEN", "required": true, "description": "" }, { "name": "OPENAI_API_KEY", "required": true, "description": "" } ], "inputs": [ { "name": "task", "type": "string", "required": true, "description": "Coding task to accomplish" }, { "name": "repo", "type": "string", "required": true }, { "name": "branch", "type": "string", "default": "auto-coder" }, { "name": "create_pr", "type": "boolean", "default": true } ], "outputs": [ { "name": "changes", "type": "array" }, { "name": "pr_url", "type": "string" }, { "name": "tests_passed", "type": "boolean" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "workflows" ] }, "backup-verify": { "name": "backup-verify", "version": "1.0.0", "description": "Verify backup integrity and sync status across storage providers", "category": "workflows", "credentials": [ { "name": "AWS_ACCESS_KEY_ID", "required": false, "description": "" }, { "name": "AWS_SECRET_ACCESS_KEY", "required": false, "description": "" }, { "name": "GOOGLE_CLOUD_KEY", "required": false, "description": "" } ], "inputs": [ { "name": "local_paths", "type": "array", "default": [] }, { "name": "cloud_provider", "type": "string", "default": "s3", "enum": [ "s3", "gcs", "azure", "backblaze" ] }, { "name": "bucket", "type": "string", "required": false } ], "outputs": [ { "name": "status", "type": "object" }, { "name": "differences", "type": "array" }, { "name": "metadata", "type": "object" } ], "backends": [ "local" ], "tags": [ "google", "local", "offline", "workflows" ] }, "catalog-reconcile": { "name": "catalog-reconcile", "version": "1.0.0", "description": "AI-powered product catalog reconciliation across multiple sources", "category": "workflows", "credentials": [ { "name": "OPENAI_API_KEY", "required": true, "description": "" } ], "inputs": [ { "name": "catalogs", "type": "array", "required": true, "description": "List of catalog sources to reconcile" }, { "name": "match_fields", "type": "array", "default": [ "sku", "upc", "name" ] } ], "outputs": [ { "name": "matches", "type": "array" }, { "name": "conflicts", "type": "array" }, { "name": "unmatched", "type": "array" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "workflows" ] }, "devops-monitor": { "name": "devops-monitor", "version": "1.0.0", "description": "AI-powered DevOps monitoring with automated log analysis and alerting", "category": "workflows", "credentials": [ { "name": "GITHUB_TOKEN", "required": false, "description": "GitHub personal access token" }, { "name": "PROMETHEUS_URL", "required": false, "description": "Prometheus endpoint for metrics" }, { "name": "GRAFANA_API_KEY", "required": false, "description": "Grafana API key" }, { "name": "SLACK_WEBHOOK", "required": false, "description": "Slack webhook for alerts" }, { "name": "PAGERDUTY_KEY", "required": false, "description": "PagerDuty integration key" }, { "name": "OPENAI_API_KEY", "required": true, "description": "OpenAI for AI analysis" } ], "inputs": [ { "name": "sources", "type": "array", "default": [ "github", "logs" ], "description": "Data sources: github, logs, prometheus, uptime" }, { "name": "repos", "type": "array", "default": [], "description": "GitHub repos to monitor (owner/repo format)" }, { "name": "log_paths", "type": "array", "default": [], "description": "Log file paths to analyze" }, { "name": "alert_threshold", "type": "string", "default": "high", "enum": [ "low", "medium", "high", "critical" ], "description": "Minimum severity for alerts" }, { "name": "lookback_hours", "type": "integer", "default": 1, "description": "Hours of data to analyze" } ], "outputs": [ { "name": "status", "type": "object", "description": "Overall status: {healthy, warnings, errors}" }, { "name": "issues", "type": "array", "description": "Detected issues: {severity, source, description, suggestion}" }, { "name": "workflows", "type": "array", "description": "GitHub workflow statuses" }, { "name": "metrics", "type": "object", "description": "Key metrics summary" }, { "name": "alerts_sent", "type": "array", "description": "Alerts that were dispatched" }, { "name": "metadata", "type": "object", "description": "Monitoring metadata" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "slack", "workflows" ] }, "email-triage": { "name": "email-triage", "version": "1.0.0", "description": "AI-powered email triage with calendar sync and response drafting", "category": "workflows", "credentials": [ { "name": "GMAIL_TOKEN", "required": false, "description": "Gmail OAuth token (or use IMAP credentials)" }, { "name": "OUTLOOK_TOKEN", "required": false, "description": "Microsoft Graph API token" }, { "name": "IMAP_HOST", "required": false, "description": "IMAP server hostname" }, { "name": "IMAP_USER", "required": false, "description": "IMAP username" }, { "name": "IMAP_PASS", "required": false, "description": "IMAP password" }, { "name": "OPENAI_API_KEY", "required": true, "description": "OpenAI API key for AI processing" }, { "name": "CALENDAR_API_KEY", "required": false, "description": "Google Calendar or Outlook Calendar API key" } ], "inputs": [ { "name": "provider", "type": "string", "required": true, "enum": [ "gmail", "outlook", "imap" ], "description": "Email provider to connect" }, { "name": "folder", "type": "string", "default": "INBOX", "description": "Email folder to process" }, { "name": "limit", "type": "integer", "default": 50, "description": "Maximum emails to process per run" }, { "name": "since_hours", "type": "integer", "default": 24, "description": "Process emails from last N hours" }, { "name": "categories", "type": "array", "default": [ "urgent", "action-required", "meeting", "fyi", "newsletter", "spam" ], "description": "Categories to classify into" }, { "name": "auto_archive", "type": "boolean", "default": false, "description": "Automatically archive processed emails" }, { "name": "create_calendar_events", "type": "boolean", "default": true, "description": "Automatically create calendar events from meeting requests" } ], "outputs": [ { "name": "summary", "type": "object", "description": "Triage summary: {processed, by_category, urgent_count, meetings_found}" }, { "name": "emails", "type": "array", "description": "Processed emails with: {id, subject, from, category, priority, action, calendar_event?}" }, { "name": "calendar_events", "type": "array", "description": "Calendar events extracted/created" }, { "name": "draft_responses", "type": "array", "description": "Suggested responses for action-required emails" }, { "name": "metadata", "type": "object", "description": "Processing metadata and audit trail" } ], "backends": [ "openai", "ollama" ], "tags": [ "local", "offline", "openai", "remote", "workflows" ] }, "health-integrate": { "name": "health-integrate", "version": "1.0.0", "description": "Integrate wearable health data with calendar and fitness optimization", "category": "workflows", "credentials": [ { "name": "OURA_TOKEN", "required": false, "description": "" }, { "name": "FITBIT_TOKEN", "required": false, "description": "" }, { "name": "GOOGLE_CALENDAR_TOKEN", "required": false, "description": "" }, { "name": "OPENAI_API_KEY", "required": true, "description": "" } ], "inputs": [ { "name": "sources", "type": "array", "default": [ "oura", "calendar" ] }, { "name": "optimize_for", "type": "string", "default": "energy", "enum": [ "energy", "sleep", "recovery", "performance" ] } ], "outputs": [ { "name": "health_summary", "type": "object" }, { "name": "recommendations", "type": "array" }, { "name": "schedule_adjustments", "type": "array" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "google", "openai", "remote", "workflows" ] }, "jira-automate": { "name": "jira-automate", "version": "1.0.0", "description": "Automate Jira/Confluence workflows with AI-powered issue management", "category": "workflows", "credentials": [ { "name": "JIRA_URL", "required": true, "description": "Jira instance URL (e.g., https://company.atlassian.net)" }, { "name": "JIRA_EMAIL", "required": true, "description": "Jira account email" }, { "name": "JIRA_API_TOKEN", "required": true, "description": "Jira API token" }, { "name": "OPENAI_API_KEY", "required": true, "description": "OpenAI for AI features" } ], "inputs": [ { "name": "action", "type": "string", "required": true, "enum": [ "create", "update", "search", "summarize", "link_pr", "generate_docs" ], "description": "Action to perform" }, { "name": "project", "type": "string", "required": false, "description": "Jira project key" }, { "name": "issue_key", "type": "string", "required": false, "description": "Issue key (e.g., PROJ-123)" }, { "name": "summary", "type": "string", "required": false, "description": "Issue summary for create/update" }, { "name": "description", "type": "string", "required": false, "description": "Issue description" }, { "name": "issue_type", "type": "string", "default": "Task", "description": "Issue type (Task, Bug, Story, Epic)" } ], "outputs": [ { "name": "result", "type": "object", "description": "Action result" }, { "name": "issues", "type": "array", "description": "Affected issues" }, { "name": "metadata", "type": "object", "description": "Execution metadata" } ], "backends": [ "openai" ], "tags": [ "jira", "openai", "remote", "workflows" ] }, "llm-router": { "name": "llm-router", "version": "1.0.0", "description": "Intelligent LLM routing with automatic model selection and fallbacks", "category": "workflows", "credentials": [ { "name": "OPENAI_API_KEY", "required": false, "description": "OpenAI API key" }, { "name": "ANTHROPIC_API_KEY", "required": false, "description": "Anthropic API key" }, { "name": "OPENROUTER_API_KEY", "required": false, "description": "OpenRouter API key (access to 100+ models)" } ], "inputs": [ { "name": "prompt", "type": "string", "required": true, "description": "The prompt to process" }, { "name": "task_type", "type": "string", "default": "auto", "enum": [ "auto", "simple", "complex", "code", "creative", "analysis" ], "description": "Task type for routing" }, { "name": "priority", "type": "string", "default": "balanced", "enum": [ "cost", "quality", "speed", "balanced" ], "description": "Optimization priority" }, { "name": "max_cost_cents", "type": "integer", "default": 10, "description": "Maximum cost per request in cents" }, { "name": "require_local", "type": "boolean", "default": false, "description": "Require local/private model (no cloud)" }, { "name": "fallback_models", "type": "array", "default": [], "description": "Fallback model chain" } ], "outputs": [ { "name": "response", "type": "string", "description": "Model response" }, { "name": "model_used", "type": "string", "description": "Which model was selected" }, { "name": "routing_reason", "type": "string", "description": "Why this model was chosen" }, { "name": "cost", "type": "object", "description": "{tokens, cost_cents}" }, { "name": "metadata", "type": "object", "description": "Routing and execution metadata" } ], "backends": [ "multi" ], "tags": [ "openai", "workflows" ] }, "marketing-auto": { "name": "marketing-auto", "version": "1.0.0", "description": "Self-running marketing automation with AI content and analytics", "category": "workflows", "credentials": [ { "name": "OPENAI_API_KEY", "required": true, "description": "" }, { "name": "TWITTER_API_KEY", "required": false, "description": "" }, { "name": "LINKEDIN_TOKEN", "required": false, "description": "" }, { "name": "MAILCHIMP_API_KEY", "required": false, "description": "" } ], "inputs": [ { "name": "action", "type": "string", "default": "campaign", "enum": [ "campaign", "content", "analytics", "schedule" ] }, { "name": "platform", "type": "string", "default": "all", "enum": [ "all", "twitter", "linkedin", "email", "blog" ] }, { "name": "topic", "type": "string", "required": false } ], "outputs": [ { "name": "content", "type": "array" }, { "name": "schedule", "type": "array" }, { "name": "analytics", "type": "object" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "workflows" ] }, "meal-planner": { "name": "meal-planner", "version": "1.0.0", "description": "AI-powered meal planning with recipes and grocery lists", "category": "workflows", "credentials": [ { "name": "OPENAI_API_KEY", "required": true, "description": "" }, { "name": "NOTION_TOKEN", "required": false, "description": "" } ], "inputs": [ { "name": "preferences", "type": "object", "description": "Dietary preferences: {vegetarian, allergies, cuisine}" }, { "name": "days", "type": "integer", "default": 7 }, { "name": "people", "type": "integer", "default": 2 } ], "outputs": [ { "name": "meal_plan", "type": "array" }, { "name": "grocery_list", "type": "array" }, { "name": "recipes", "type": "array" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "workflows" ] }, "morning-briefing": { "name": "morning-briefing", "version": "1.0.0", "description": "Personalized daily briefing with calendar, weather, news, and tasks", "category": "workflows", "credentials": [ { "name": "GOOGLE_CALENDAR_TOKEN", "required": false, "description": "Google Calendar OAuth token" }, { "name": "OPENWEATHER_API_KEY", "required": false, "description": "OpenWeatherMap API key" }, { "name": "NEWS_API_KEY", "required": false, "description": "NewsAPI key for headlines" }, { "name": "TODOIST_TOKEN", "required": false, "description": "Todoist API token" }, { "name": "OPENAI_API_KEY", "required": true, "description": "OpenAI for summary and priorities" }, { "name": "TELEGRAM_BOT_TOKEN", "required": false, "description": "Telegram bot for delivery" }, { "name": "SLACK_WEBHOOK", "required": false, "description": "Slack webhook for delivery" } ], "inputs": [ { "name": "location", "type": "string", "default": "San Francisco, CA", "description": "Location for weather" }, { "name": "news_topics", "type": "array", "default": [ "technology", "business" ], "description": "News topics of interest" }, { "name": "calendar_hours", "type": "integer", "default": 24, "description": "Calendar lookahead hours" }, { "name": "delivery", "type": "string", "default": "json", "enum": [ "json", "telegram", "slack", "email" ], "description": "Delivery method" }, { "name": "voice", "type": "boolean", "default": false, "description": "Include TTS audio version" } ], "outputs": [ { "name": "briefing", "type": "object", "description": "Complete briefing: {calendar, weather, news, tasks, priorities}" }, { "name": "summary", "type": "string", "description": "AI-generated executive summary" }, { "name": "audio_url", "type": "string", "description": "URL to audio version (if voice enabled)" }, { "name": "metadata", "type": "object", "description": "Generation metadata" } ], "backends": [ "openai" ], "tags": [ "google", "openai", "remote", "slack", "workflows" ] }, "multi-platform-chat": { "name": "multi-platform-chat", "version": "1.0.0", "description": "Route AI agent responses across multiple messaging platforms", "category": "workflows", "credentials": [ { "name": "TELEGRAM_BOT_TOKEN", "required": false, "description": "" }, { "name": "DISCORD_BOT_TOKEN", "required": false, "description": "" }, { "name": "SLACK_BOT_TOKEN", "required": false, "description": "" }, { "name": "WHATSAPP_TOKEN", "required": false, "description": "" }, { "name": "OPENAI_API_KEY", "required": true, "description": "" } ], "inputs": [ { "name": "message", "type": "string", "required": true }, { "name": "platform", "type": "string", "required": true, "enum": [ "telegram", "discord", "slack", "whatsapp", "all" ] }, { "name": "channel_id", "type": "string", "required": false }, { "name": "user_id", "type": "string", "required": false } ], "outputs": [ { "name": "response", "type": "string" }, { "name": "sent_to", "type": "array" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "slack", "workflows" ] }, "seo-pipeline": { "name": "seo-pipeline", "version": "1.0.0", "description": "Complete SEO workflow with analysis, reporting, and AI content optimization", "category": "workflows", "credentials": [ { "name": "GOOGLE_SEARCH_CONSOLE_TOKEN", "required": false, "description": "" }, { "name": "AHREFS_API_KEY", "required": false, "description": "" }, { "name": "OPENAI_API_KEY", "required": true, "description": "" } ], "inputs": [ { "name": "action", "type": "string", "default": "analyze", "enum": [ "analyze", "report", "optimize", "keywords", "backlinks" ] }, { "name": "url", "type": "string", "required": false }, { "name": "keywords", "type": "array", "default": [] } ], "outputs": [ { "name": "analysis", "type": "object" }, { "name": "recommendations", "type": "array" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "google", "openai", "remote", "workflows" ] }, "site-migrate": { "name": "site-migrate", "version": "1.0.0", "description": "Migrate websites across platforms (Notion\u2192Astro, WordPress\u2192Hugo, etc.)", "category": "workflows", "credentials": [ { "name": "NOTION_TOKEN", "required": false, "description": "" }, { "name": "CLOUDFLARE_API_TOKEN", "required": false, "description": "" }, { "name": "OPENAI_API_KEY", "required": true, "description": "" } ], "inputs": [ { "name": "source", "type": "string", "required": true, "enum": [ "notion", "wordpress", "ghost", "markdown" ] }, { "name": "destination", "type": "string", "required": true, "enum": [ "astro", "hugo", "nextjs", "static" ] }, { "name": "source_url", "type": "string", "required": false } ], "outputs": [ { "name": "pages_migrated", "type": "integer" }, { "name": "assets_migrated", "type": "integer" }, { "name": "errors", "type": "array" }, { "name": "deploy_url", "type": "string" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "workflows" ] }, "stripe-reports": { "name": "stripe-reports", "version": "1.0.0", "description": "Generate AI-powered business reports from Stripe with insights and quick wins", "category": "workflows", "credentials": [ { "name": "STRIPE_API_KEY", "required": true, "description": "Stripe secret API key (sk_live_... or sk_test_...)" }, { "name": "OPENAI_API_KEY", "required": true, "description": "OpenAI API key for AI insights" }, { "name": "SLACK_WEBHOOK", "required": false, "description": "Slack webhook URL for report delivery" } ], "inputs": [ { "name": "period", "type": "string", "default": "today", "enum": [ "today", "yesterday", "week", "month", "quarter" ], "description": "Reporting period" }, { "name": "metrics", "type": "array", "default": [ "revenue", "subscriptions", "churn", "refunds" ], "description": "Metrics to include" }, { "name": "include_insights", "type": "boolean", "default": true, "description": "Generate AI insights" }, { "name": "include_quick_wins", "type": "boolean", "default": true, "description": "Identify actionable quick wins" }, { "name": "send_slack", "type": "boolean", "default": false, "description": "Send report to Slack" }, { "name": "format", "type": "string", "default": "json", "enum": [ "json", "markdown", "html" ], "description": "Output format" } ], "outputs": [ { "name": "report", "type": "object", "description": "Complete report: {period, metrics, insights, quick_wins}" }, { "name": "metrics", "type": "object", "description": "Raw metrics: {revenue, mrr, churn_rate, new_customers, ...}" }, { "name": "insights", "type": "array", "description": "AI-generated insights and observations" }, { "name": "quick_wins", "type": "array", "description": "Actionable recommendations with potential impact" }, { "name": "metadata", "type": "object", "description": "Report metadata and audit trail" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "slack", "workflows" ] }, "task-dashboard": { "name": "task-dashboard", "version": "1.0.0", "description": "Mission control dashboard for AI agent task queue management", "category": "workflows", "credentials": [ { "name": "OPENAI_API_KEY", "required": true, "description": "" } ], "inputs": [ { "name": "action", "type": "string", "default": "status", "enum": [ "status", "add", "complete", "prioritize" ] }, { "name": "task", "type": "string", "required": false } ], "outputs": [ { "name": "queue", "type": "array" }, { "name": "completed", "type": "array" }, { "name": "status", "type": "object" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "workflows" ] }, "terminal-services": { "name": "terminal-services", "version": "1.0.0", "description": "Terminal-first integrations for 40+ popular services", "category": "workflows", "credentials": [ { "name": "OPENAI_API_KEY", "required": true, "description": "" } ], "inputs": [ { "name": "service", "type": "string", "required": true }, { "name": "action", "type": "string", "required": true }, { "name": "params", "type": "object", "default": {} } ], "outputs": [ { "name": "result", "type": "object" }, { "name": "formatted_output", "type": "string" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "workflows" ] }, "todoist-automate": { "name": "todoist-automate", "version": "1.0.0", "description": "AI-powered Todoist automation with smart prioritization and scheduling", "category": "workflows", "credentials": [ { "name": "TODOIST_TOKEN", "required": true, "description": "Todoist API token" }, { "name": "OPENAI_API_KEY", "required": true, "description": "OpenAI for AI features" }, { "name": "TELEGRAM_BOT_TOKEN", "required": false, "description": "Telegram bot for notifications" } ], "inputs": [ { "name": "action", "type": "string", "default": "sync", "enum": [ "sync", "create", "prioritize", "schedule", "remind" ] }, { "name": "project", "type": "string", "required": false }, { "name": "task", "type": "string", "required": false }, { "name": "due_date", "type": "string", "required": false } ], "outputs": [ { "name": "tasks", "type": "array" }, { "name": "result", "type": "object" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "workflows" ] }, "voice-admin": { "name": "voice-admin", "version": "1.0.0", "description": "Voice-driven business admin for scheduling, invoicing, and task management", "category": "workflows", "credentials": [ { "name": "OPENAI_API_KEY", "required": true, "description": "" }, { "name": "TWILIO_ACCOUNT_SID", "required": false, "description": "" }, { "name": "QUICKBOOKS_TOKEN", "required": false, "description": "" } ], "inputs": [ { "name": "audio", "type": "string", "description": "Base64 audio or audio URL" }, { "name": "action", "type": "string", "default": "transcribe_and_act", "enum": [ "transcribe", "schedule", "invoice", "task" ] } ], "outputs": [ { "name": "transcript", "type": "string" }, { "name": "actions", "type": "array" }, { "name": "confirmations", "type": "array" }, { "name": "metadata", "type": "object" } ], "backends": [ "openai" ], "tags": [ "openai", "remote", "workflows" ] } } }