diff --git a/.dependency-cruiser.js b/.dependency-cruiser.js index 2ffd268..8710f08 100644 --- a/.dependency-cruiser.js +++ b/.dependency-cruiser.js @@ -105,8 +105,8 @@ export default { from: {}, to: { couldNotResolve: true, - // Allow TypeScript path aliases that are resolved by the TS compiler - pathNot: ['^~/'], + // Allow TypeScript path aliases and workspace packages that are resolved by the TS compiler + pathNot: ['^~/', '^@/', '^@tpmjs/'], }, }, { @@ -143,6 +143,10 @@ export default { doNotFollow: { path: ['node_modules', '\\.next', 'dist', '\\.turbo', 'storybook-static'], }, + exclude: { + // Exclude railway-executor - it's a Deno app with HTTP imports that can't be resolved + path: '^apps/railway-executor', + }, tsPreCompilationDeps: true, tsConfig: { fileName: './tsconfig.json', diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..15df52f --- /dev/null +++ b/.env.production @@ -0,0 +1,22 @@ +# Created by Vercel CLI +NX_DAEMON="false" +TURBO_CACHE="remote:rw" +TURBO_DOWNLOAD_LOCAL_ENABLED="true" +TURBO_REMOTE_ONLY="true" +TURBO_RUN_SUMMARY="true" +VERCEL="1" +VERCEL_ENV="production" +VERCEL_GIT_COMMIT_AUTHOR_LOGIN="" +VERCEL_GIT_COMMIT_AUTHOR_NAME="" +VERCEL_GIT_COMMIT_MESSAGE="" +VERCEL_GIT_COMMIT_REF="" +VERCEL_GIT_COMMIT_SHA="" +VERCEL_GIT_PREVIOUS_SHA="" +VERCEL_GIT_PROVIDER="" +VERCEL_GIT_PULL_REQUEST_ID="" +VERCEL_GIT_REPO_ID="" +VERCEL_GIT_REPO_OWNER="" +VERCEL_GIT_REPO_SLUG="" +VERCEL_OIDC_TOKEN="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Im1yay00MzAyZWMxYjY3MGY0OGE5OGFkNjFkYWRlNGEyM2JlNyJ9.eyJpc3MiOiJodHRwczovL29pZGMudmVyY2VsLmNvbS90cG1qcyIsInN1YiI6Im93bmVyOnRwbWpzOnByb2plY3Q6dHBtanMtdHV0b3JpYWw6ZW52aXJvbm1lbnQ6ZGV2ZWxvcG1lbnQiLCJzY29wZSI6Im93bmVyOnRwbWpzOnByb2plY3Q6dHBtanMtdHV0b3JpYWw6ZW52aXJvbm1lbnQ6ZGV2ZWxvcG1lbnQiLCJhdWQiOiJodHRwczovL3ZlcmNlbC5jb20vdHBtanMiLCJvd25lciI6InRwbWpzIiwib3duZXJfaWQiOiJ0ZWFtX3prR1dDV2I3VmpIb25pNlZieWZkMnN3OCIsInByb2plY3QiOiJ0cG1qcy10dXRvcmlhbCIsInByb2plY3RfaWQiOiJwcmpfaVZVdnUxSzNEajJYNVMzdkxzWlh5Nkd2MVZOOCIsImVudmlyb25tZW50IjoiZGV2ZWxvcG1lbnQiLCJwbGFuIjoicHJvIiwidXNlcl9pZCI6IkxKZk05VzdIdlljb2gyclVCaXRWd283ViIsIm5iZiI6MTc2NzE4MDQzNiwiaWF0IjoxNzY3MTgwNDM2LCJleHAiOjE3NjcyMjM2MzZ9.H-eDVQ1w79a3F3QCHfURF8l_tB1qMPQt5UCIgaovh_s7GJaz21vzt_ZV1VAxBRWeB0EFW0YADG5GqTb6nSyFAEqntJEaCWA53Rc331K8655z_QQt8T10e8UmSTeI4A5-WNqmmLP-cfq4CxmspMuoGr5J8nUxdWiisr7yTjo00MHtihNz43gJXpo6ARpUlLb9yLt3vhCGml8jWIoh7YrFAR5XdWYlZIbrm1qPGStPGllyZcXIbgfn30wKfHss1TjSjWOUMAWxS-BmSEnLDmoHkuoSrwQ7SbI-VAZFHlCrMiE40kx3hl8cXrQoNT8XLYXY8ycsbFrydLQjk4KJSWP39A" +VERCEL_TARGET_ENV="production" +VERCEL_URL="" diff --git a/.env.vercel.production b/.env.vercel.production new file mode 100644 index 0000000..bf0ac19 --- /dev/null +++ b/.env.vercel.production @@ -0,0 +1,41 @@ +# Created by Vercel CLI +CRON_SECRET="CRON_SECRET=6c806d35cf6212f489c76414d38d2b6acbc44590ac78bb08aadea28dd04a29d0\n" +DATABASE_URL="postgresql://neondb_owner:npg_euvYo4OTi1lX@ep-broad-darkness-a4lml85k-pooler.us-east-1.aws.neon.tech/neondb?sslmode=require" +DATABASE_URL_UNPOOLED="postgresql://neondb_owner:npg_euvYo4OTi1lX@ep-broad-darkness-a4lml85k.us-east-1.aws.neon.tech/neondb?sslmode=require" +NEXT_PUBLIC_STACK_PROJECT_ID="d786bd3a-a31d-4c6b-9497-5d6803dd9d86" +NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY="pck_hafmpkaj047z331x5azv8bk5zggfnbgdedbj9pfqh1rn0" +NX_DAEMON="false" +PGDATABASE="neondb" +PGHOST="ep-broad-darkness-a4lml85k-pooler.us-east-1.aws.neon.tech" +PGHOST_UNPOOLED="ep-broad-darkness-a4lml85k.us-east-1.aws.neon.tech" +PGPASSWORD="npg_euvYo4OTi1lX" +PGUSER="neondb_owner" +POSTGRES_DATABASE="neondb" +POSTGRES_HOST="ep-broad-darkness-a4lml85k-pooler.us-east-1.aws.neon.tech" +POSTGRES_PASSWORD="npg_euvYo4OTi1lX" +POSTGRES_PRISMA_URL="postgresql://neondb_owner:npg_euvYo4OTi1lX@ep-broad-darkness-a4lml85k-pooler.us-east-1.aws.neon.tech/neondb?connect_timeout=15&sslmode=require" +POSTGRES_URL="postgresql://neondb_owner:npg_euvYo4OTi1lX@ep-broad-darkness-a4lml85k-pooler.us-east-1.aws.neon.tech/neondb?sslmode=require" +POSTGRES_URL_NON_POOLING="postgresql://neondb_owner:npg_euvYo4OTi1lX@ep-broad-darkness-a4lml85k.us-east-1.aws.neon.tech/neondb?sslmode=require" +POSTGRES_URL_NO_SSL="postgresql://neondb_owner:npg_euvYo4OTi1lX@ep-broad-darkness-a4lml85k-pooler.us-east-1.aws.neon.tech/neondb" +POSTGRES_USER="neondb_owner" +STACK_SECRET_SERVER_KEY="ssk_p05kwe938wx13rpera9xf1fewc816dwkbq658xcsbwj1g" +TURBO_CACHE="remote:rw" +TURBO_DOWNLOAD_LOCAL_ENABLED="true" +TURBO_REMOTE_ONLY="true" +TURBO_RUN_SUMMARY="true" +VERCEL="1" +VERCEL_ENV="production" +VERCEL_GIT_COMMIT_AUTHOR_LOGIN="" +VERCEL_GIT_COMMIT_AUTHOR_NAME="" +VERCEL_GIT_COMMIT_MESSAGE="" +VERCEL_GIT_COMMIT_REF="" +VERCEL_GIT_COMMIT_SHA="" +VERCEL_GIT_PREVIOUS_SHA="" +VERCEL_GIT_PROVIDER="" +VERCEL_GIT_PULL_REQUEST_ID="" +VERCEL_GIT_REPO_ID="" +VERCEL_GIT_REPO_OWNER="" +VERCEL_GIT_REPO_SLUG="" +VERCEL_OIDC_TOKEN="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Im1yay00MzAyZWMxYjY3MGY0OGE5OGFkNjFkYWRlNGEyM2JlNyJ9.eyJpc3MiOiJodHRwczovL29pZGMudmVyY2VsLmNvbS90cG1qcyIsInN1YiI6Im93bmVyOnRwbWpzOnByb2plY3Q6dHBtanMtd2ViOmVudmlyb25tZW50OmRldmVsb3BtZW50Iiwic2NvcGUiOiJvd25lcjp0cG1qczpwcm9qZWN0OnRwbWpzLXdlYjplbnZpcm9ubWVudDpkZXZlbG9wbWVudCIsImF1ZCI6Imh0dHBzOi8vdmVyY2VsLmNvbS90cG1qcyIsIm93bmVyIjoidHBtanMiLCJvd25lcl9pZCI6InRlYW1femtHV0NXYjdWakhvbmk2VmJ5ZmQyc3c4IiwicHJvamVjdCI6InRwbWpzLXdlYiIsInByb2plY3RfaWQiOiJwcmpfNWd1MEkwVzFjUFhkQ3ozd1RjQ0ZIejQzNUJ0MCIsImVudmlyb25tZW50IjoiZGV2ZWxvcG1lbnQiLCJwbGFuIjoicHJvIiwidXNlcl9pZCI6IkxKZk05VzdIdlljb2gyclVCaXRWd283ViIsIm5iZiI6MTc2NDM4OTAxMiwiaWF0IjoxNzY0Mzg5MDEyLCJleHAiOjE3NjQ0MzIyMTJ9.OF4IHrcmteA2lU1tkqHO1a9ITGGrCjCo29G8jI991q8_SQjgHZHVqcBj3AYVKZJDh6BjHib4HyNKdjO8nwUblF2dCFbYDv6y4hwB6jHNpsz32BE1JDKcXEJOKPtg_tBOFUDKtzMkPk7VOPWDVYw8Tz4_HZ_MR3SNoy1Pk9AFL-hEl3E-zR3bAYMDB8tKrIm9y9K4sZF6efMU7BR_J6Bf-i3IsbbrH-Axgq5dewlpogf-xHWmWaTXoUp6UFejNKhSMXqg3sAWTnizYeSGc2Ut6zNuAYPumUPBdQ37Kk7vuRNwS1h7RJz3vtEg6aOuw0-Ld0LdF-tWkfDGsVqanR_sxw" +VERCEL_TARGET_ENV="production" +VERCEL_URL="" diff --git a/.github/workflows/health-check.yml b/.github/workflows/health-check.yml new file mode 100644 index 0000000..ddf2a15 --- /dev/null +++ b/.github/workflows/health-check.yml @@ -0,0 +1,18 @@ +name: Daily Health Check + +on: + schedule: + # Run daily at 2am UTC + - cron: '0 2 * * *' + workflow_dispatch: + +jobs: + health-check: + runs-on: ubuntu-latest + steps: + - name: Trigger health check sync + run: | + curl -X POST "${{ secrets.VERCEL_PRODUCTION_URL }}/api/sync/health-check" \ + -H "Authorization: Bearer ${{ secrets.CRON_SECRET }}" \ + -H "Content-Type: application/json" \ + -f -s -S -w "\nHTTP Status: %{http_code}\n" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5bbf39e..b758495 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: 21 + node-version: 22 cache: 'pnpm' registry-url: 'https://registry.npmjs.org' diff --git a/.github/workflows/sync-changes.yml b/.github/workflows/sync-changes.yml new file mode 100644 index 0000000..fa2886e --- /dev/null +++ b/.github/workflows/sync-changes.yml @@ -0,0 +1,18 @@ +name: Sync NPM Changes Feed + +on: + schedule: + # Run every 2 minutes + - cron: '*/2 * * * *' + workflow_dispatch: + +jobs: + sync-changes: + runs-on: ubuntu-latest + steps: + - name: Trigger changes feed sync + run: | + curl -X POST "${{ secrets.VERCEL_PRODUCTION_URL }}/api/sync/changes" \ + -H "Authorization: Bearer ${{ secrets.CRON_SECRET }}" \ + -H "Content-Type: application/json" \ + -f -s -S -w "\nHTTP Status: %{http_code}\n" diff --git a/.github/workflows/sync-keyword.yml b/.github/workflows/sync-keyword.yml new file mode 100644 index 0000000..55c6399 --- /dev/null +++ b/.github/workflows/sync-keyword.yml @@ -0,0 +1,131 @@ +name: Sync NPM Keyword Search + +on: + schedule: + # Run every 15 minutes + - cron: '*/15 * * * *' + workflow_dispatch: + +jobs: + sync-keyword: + runs-on: ubuntu-latest + steps: + - name: Trigger keyword search sync + id: sync + run: | + # Call the sync API and capture response + response=$(curl -X POST "${{ secrets.VERCEL_PRODUCTION_URL }}/api/sync/keyword" \ + -H "Authorization: Bearer ${{ secrets.CRON_SECRET }}" \ + -H "Content-Type: application/json" \ + -f -s -S) + + echo "Response: $response" + + # Extract data using jq + processed=$(echo "$response" | jq -r '.data.processed') + skipped=$(echo "$response" | jq -r '.data.skipped') + errors=$(echo "$response" | jq -r '.data.errors') + packagesFound=$(echo "$response" | jq -r '.data.packagesFound') + durationMs=$(echo "$response" | jq -r '.data.durationMs') + + # Extract and display error messages + errorMessages=$(echo "$response" | jq -r '.data.errorMessages[]?' 2>/dev/null || echo "") + + if [ -n "$errorMessages" ]; then + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo "⚠️ SYNC ERRORS ($errors total):" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo "$response" | jq -r '.data.errorMessages[]?' | while IFS= read -r error; do + echo " • $error" + done + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + fi + + # Set outputs for Discord notification + echo "processed=$processed" >> $GITHUB_OUTPUT + echo "skipped=$skipped" >> $GITHUB_OUTPUT + echo "errors=$errors" >> $GITHUB_OUTPUT + echo "packagesFound=$packagesFound" >> $GITHUB_OUTPUT + echo "durationMs=$durationMs" >> $GITHUB_OUTPUT + + # Store error messages for Discord (first 3, truncated) + if [ "$errors" -gt 0 ]; then + errorSummary=$(echo "$response" | jq -r '.data.errorMessages[0:3]? | join("\n• ")' 2>/dev/null || echo "") + if [ -n "$errorSummary" ]; then + # Save to file to preserve newlines + echo "• $errorSummary" > /tmp/error_summary.txt + fi + fi + + # Store skipped packages for Discord + if [ "$skipped" -gt 0 ]; then + skippedList=$(echo "$response" | jq -r '.data.skippedPackages[]? | "\(.name) (by \(.author)) - \(.reason)"' 2>/dev/null | paste -sd "\n" - || echo "") + if [ -n "$skippedList" ]; then + echo "$skippedList" > /tmp/skipped_packages.txt + fi + fi + + # Determine status emoji + if [ "$errors" -gt 0 ]; then + echo "status_emoji=⚠️" >> $GITHUB_OUTPUT + echo "status_color=16776960" >> $GITHUB_OUTPUT # Yellow + else + echo "status_emoji=✅" >> $GITHUB_OUTPUT + echo "status_color=5763719" >> $GITHUB_OUTPUT # Green + fi + + - name: Send Discord notification + if: always() + run: | + # Format duration + duration_sec=$(echo "scale=2; ${{ steps.sync.outputs.durationMs }} / 1000" | bc) + + # Build Discord payload using jq for proper JSON escaping + # Read optional data + error_text="" + skipped_text="" + + if [ -f /tmp/error_summary.txt ] && [ ${{ steps.sync.outputs.errors }} -gt 0 ]; then + error_text=$(cat /tmp/error_summary.txt | head -c 800) + fi + + if [ -f /tmp/skipped_packages.txt ] && [ ${{ steps.sync.outputs.skipped }} -gt 0 ]; then + skipped_text=$(cat /tmp/skipped_packages.txt) + fi + + # Build fields array dynamically + base_fields='[ + { "name": "📦 Packages Found", "value": "${{ steps.sync.outputs.packagesFound }}", "inline": true }, + { "name": "✨ Processed", "value": "${{ steps.sync.outputs.processed }}", "inline": true }, + { "name": "⏭️ Skipped", "value": "${{ steps.sync.outputs.skipped }}", "inline": true }, + { "name": "❌ Errors", "value": "${{ steps.sync.outputs.errors }}", "inline": true }, + { "name": "⏱️ Duration", "value": "'"${duration_sec}s"'", "inline": true }, + { "name": "🔗 Run", "value": "[View Logs](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})", "inline": true } + ]' + + # Create payload with dynamic fields + payload=$(jq -n \ + --arg title "${{ steps.sync.outputs.status_emoji }} NPM Keyword Search Sync" \ + --argjson color ${{ steps.sync.outputs.status_color }} \ + --argjson baseFields "$base_fields" \ + --arg error_text "$error_text" \ + --arg skipped_text "$skipped_text" \ + --arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%S.000Z)" \ + ' + { + embeds: [{ + title: $title, + color: $color, + fields: ( + $baseFields + + (if $skipped_text != "" then [{ name: "📋 Skipped Packages", value: $skipped_text, inline: false }] else [] end) + + (if $error_text != "" then [{ name: "🔍 Error Details", value: ("```\n" + $error_text + "\n```"), inline: false }] else [] end) + ), + timestamp: $timestamp + }] + }') + + # Send to Discord + curl -X POST "${{ secrets.DISCORD_WEBHOOK }}" \ + -H "Content-Type: application/json" \ + -d "$payload" diff --git a/.github/workflows/sync-manual.yml b/.github/workflows/sync-manual.yml new file mode 100644 index 0000000..135f5af --- /dev/null +++ b/.github/workflows/sync-manual.yml @@ -0,0 +1,97 @@ +name: Sync Manual Tools + +on: + schedule: + # Run daily at midnight UTC + - cron: '0 0 * * *' + workflow_dispatch: + # Run on pushes to main that modify manual-tools.ts + push: + branches: + - main + paths: + - 'manual-tools.ts' + - 'sync-manual-tools.ts' + +jobs: + sync-manual: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Generate Prisma Client + run: pnpm --filter=@tpmjs/db db:generate + + - name: Run manual tools sync + id: sync + run: | + # Run the sync script and capture output + output=$(pnpm tsx sync-manual-tools.ts 2>&1) + echo "$output" + + # Extract statistics from output + processed=$(echo "$output" | grep "Processed:" | awk '{print $2}') + skipped=$(echo "$output" | grep "Skipped:" | awk '{print $2}') + errors=$(echo "$output" | grep "Errors:" | awk '{print $2}') + total=$(echo "$output" | grep "Total manual tools:" | awk '{print $4}') + + # Set outputs for Discord notification + echo "processed=${processed:-0}" >> $GITHUB_OUTPUT + echo "skipped=${skipped:-0}" >> $GITHUB_OUTPUT + echo "errors=${errors:-0}" >> $GITHUB_OUTPUT + echo "total=${total:-0}" >> $GITHUB_OUTPUT + + # Determine status + if [ "${errors:-0}" -gt 0 ]; then + echo "status_emoji=⚠️" >> $GITHUB_OUTPUT + echo "status_color=16776960" >> $GITHUB_OUTPUT # Yellow + else + echo "status_emoji=✅" >> $GITHUB_OUTPUT + echo "status_color=5763719" >> $GITHUB_OUTPUT # Green + fi + env: + DATABASE_URL: ${{ secrets.DATABASE_URL }} + + - name: Send Discord notification + if: always() + run: | + # Build Discord payload + payload=$(jq -n \ + --arg title "${{ steps.sync.outputs.status_emoji }} Manual Tools Sync" \ + --argjson color ${{ steps.sync.outputs.status_color }} \ + --arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%S.000Z)" \ + ' + { + embeds: [{ + title: $title, + color: $color, + fields: [ + { name: "📦 Total Tools", value: "${{ steps.sync.outputs.total }}", inline: true }, + { name: "✨ Processed", value: "${{ steps.sync.outputs.processed }}", inline: true }, + { name: "⏭️ Skipped", value: "${{ steps.sync.outputs.skipped }}", inline: true }, + { name: "❌ Errors", value: "${{ steps.sync.outputs.errors }}", inline: true }, + { name: "🔗 Run", value: "[View Logs](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})", inline: true } + ], + timestamp: $timestamp + }] + }') + + # Send to Discord + curl -X POST "${{ secrets.DISCORD_WEBHOOK }}" \ + -H "Content-Type: application/json" \ + -d "$payload" diff --git a/.github/workflows/sync-metrics.yml b/.github/workflows/sync-metrics.yml new file mode 100644 index 0000000..7bd5c40 --- /dev/null +++ b/.github/workflows/sync-metrics.yml @@ -0,0 +1,18 @@ +name: Sync NPM Metrics + +on: + schedule: + # Run every hour + - cron: '0 * * * *' + workflow_dispatch: + +jobs: + sync-metrics: + runs-on: ubuntu-latest + steps: + - name: Trigger metrics sync + run: | + curl -X POST "${{ secrets.VERCEL_PRODUCTION_URL }}/api/sync/metrics" \ + -H "Authorization: Bearer ${{ secrets.CRON_SECRET }}" \ + -H "Content-Type: application/json" \ + -f -s -S -w "\nHTTP Status: %{http_code}\n" diff --git a/.github/workflows/sync-vercel-registry.yml b/.github/workflows/sync-vercel-registry.yml new file mode 100644 index 0000000..af21029 --- /dev/null +++ b/.github/workflows/sync-vercel-registry.yml @@ -0,0 +1,267 @@ +name: Sync Vercel AI Registry + +on: + schedule: + # Run every hour + - cron: '0 * * * *' + workflow_dispatch: + # Run on pushes to main that modify the sync script + push: + branches: + - main + paths: + - 'sync-vercel-registry.ts' + +permissions: + contents: write + +jobs: + sync-vercel: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10.14.0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' + cache: 'pnpm' + + - name: Install dependencies + run: | + echo "📦 Installing dependencies..." + pnpm install --frozen-lockfile + echo "✅ Dependencies installed" + + - name: Run Vercel registry sync + id: sync + run: | + echo "════════════════════════════════════════" + echo "🚀 Starting Vercel AI Registry Sync" + echo "════════════════════════════════════════" + echo "" + echo "📅 Time: $(date -u '+%Y-%m-%d %H:%M:%S UTC')" + echo "🔑 OpenAI API Key: ${OPENAI_API_KEY:0:8}..." + echo "" + + # Run the sync script and capture output + output=$(pnpm tsx sync-vercel-registry.ts 2>&1) + exit_code=$? + + echo "$output" + echo "" + + # Extract statistics from output + processed=$(echo "$output" | grep "Processed:" | tail -1 | awk '{print $2}') + skipped=$(echo "$output" | grep "Skipped:" | tail -1 | awk '{print $2}') + errors=$(echo "$output" | grep "Errors:" | tail -1 | awk '{print $2}') + total=$(echo "$output" | grep "Total:" | tail -1 | awk '{print $2}') + + # Set default values if extraction failed + processed=${processed:-0} + skipped=${skipped:-0} + errors=${errors:-0} + total=${total:-0} + + echo "════════════════════════════════════════" + echo "📊 Sync Statistics" + echo "════════════════════════════════════════" + echo "✨ Processed: $processed" + echo "⏭️ Skipped: $skipped" + echo "❌ Errors: $errors" + echo "📦 Total: $total" + echo "════════════════════════════════════════" + echo "" + + # Set outputs for later steps + echo "processed=$processed" >> $GITHUB_OUTPUT + echo "skipped=$skipped" >> $GITHUB_OUTPUT + echo "errors=$errors" >> $GITHUB_OUTPUT + echo "total=$total" >> $GITHUB_OUTPUT + echo "exit_code=$exit_code" >> $GITHUB_OUTPUT + + # Check if manual-tools.ts was modified + if git diff --quiet manual-tools.ts; then + echo "has_changes=false" >> $GITHUB_OUTPUT + echo "ℹ️ No changes to manual-tools.ts" + else + echo "has_changes=true" >> $GITHUB_OUTPUT + echo "✅ manual-tools.ts was modified" + echo "" + echo "📝 Changes preview:" + git diff --stat manual-tools.ts + echo "" + git diff manual-tools.ts | head -50 + fi + + # Determine status for notifications + if [ "$exit_code" -ne 0 ]; then + echo "status_emoji=❌" >> $GITHUB_OUTPUT + echo "status_color=15158332" >> $GITHUB_OUTPUT # Red + echo "status_text=Failed" >> $GITHUB_OUTPUT + elif [ "$errors" -gt 0 ]; then + echo "status_emoji=⚠️" >> $GITHUB_OUTPUT + echo "status_color=16776960" >> $GITHUB_OUTPUT # Yellow + echo "status_text=Completed with errors" >> $GITHUB_OUTPUT + else + echo "status_emoji=✅" >> $GITHUB_OUTPUT + echo "status_color=5763719" >> $GITHUB_OUTPUT # Green + echo "status_text=Success" >> $GITHUB_OUTPUT + fi + + # Exit with the original exit code + exit $exit_code + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + + - name: Commit and push changes + if: steps.sync.outputs.has_changes == 'true' + run: | + echo "════════════════════════════════════════" + echo "📝 Committing changes to manual-tools.ts" + echo "════════════════════════════════════════" + echo "" + + # Configure git + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + + # Show what's being committed + echo "📋 Files to commit:" + git status --short + echo "" + + # Commit changes + git add manual-tools.ts + + # Create commit message + COMMIT_MSG="chore: sync ${{ steps.sync.outputs.processed }} new tools from Vercel AI registry + + Added ${{ steps.sync.outputs.processed }} tools from Vercel AI SDK registry: + - Total tools in registry: ${{ steps.sync.outputs.total }} + - Already synced: ${{ steps.sync.outputs.skipped }} + - Newly added: ${{ steps.sync.outputs.processed }} + - Errors: ${{ steps.sync.outputs.errors }} + + 🤖 Automated by GitHub Actions + Run: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" + + git commit -m "$COMMIT_MSG" + + echo "✅ Changes committed" + echo "" + + # Push changes + echo "📤 Pushing to remote..." + git push + + echo "✅ Changes pushed successfully" + echo "════════════════════════════════════════" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Send Discord notification + if: always() + run: | + echo "════════════════════════════════════════" + echo "📢 Sending Discord notification" + echo "════════════════════════════════════════" + + # Build fields array + base_fields='[ + { "name": "📦 Total Tools", "value": "${{ steps.sync.outputs.total }}", "inline": true }, + { "name": "✨ Processed", "value": "${{ steps.sync.outputs.processed }}", "inline": true }, + { "name": "⏭️ Skipped", "value": "${{ steps.sync.outputs.skipped }}", "inline": true }, + { "name": "❌ Errors", "value": "${{ steps.sync.outputs.errors }}", "inline": true }, + { "name": "📝 Changes", "value": "${{ steps.sync.outputs.has_changes }}", "inline": true }, + { "name": "🔗 Run", "value": "[View Logs](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})", "inline": true } + ]' + + # Add commit info if changes were made + if [ "${{ steps.sync.outputs.has_changes }}" = "true" ]; then + commit_sha=$(git rev-parse HEAD) + commit_url="https://github.com/${{ github.repository }}/commit/${commit_sha}" + additional_fields='[ + { "name": "💾 Commit", "value": "['"${commit_sha:0:7}"']('"$commit_url"')", "inline": false } + ]' + + # Merge fields + all_fields=$(jq -n --argjson base "$base_fields" --argjson additional "$additional_fields" '$base + $additional') + else + all_fields="$base_fields" + fi + + # Create Discord embed + payload=$(jq -n \ + --arg title "${{ steps.sync.outputs.status_emoji }} Vercel AI Registry Sync - ${{ steps.sync.outputs.status_text }}" \ + --argjson color ${{ steps.sync.outputs.status_color }} \ + --argjson fields "$all_fields" \ + --arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%S.000Z)" \ + --arg description "Synced Vercel AI SDK tools registry with TPMJS manual tools" \ + ' + { + embeds: [{ + title: $title, + description: $description, + color: $color, + fields: $fields, + timestamp: $timestamp, + footer: { + text: "Vercel AI Registry Sync" + } + }] + }') + + echo "📤 Sending payload to Discord..." + + # Send to Discord + response=$(curl -X POST "${{ secrets.DISCORD_WEBHOOK }}" \ + -H "Content-Type: application/json" \ + -d "$payload" \ + -w "\nHTTP Status: %{http_code}\n" \ + -s) + + echo "$response" + + if echo "$response" | grep -q "HTTP Status: 2"; then + echo "✅ Discord notification sent successfully" + else + echo "⚠️ Discord notification may have failed" + fi + + echo "════════════════════════════════════════" + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + + - name: Summary + if: always() + run: | + echo "" + echo "════════════════════════════════════════" + echo "📊 Workflow Summary" + echo "════════════════════════════════════════" + echo "" + echo "Status: ${{ steps.sync.outputs.status_text }}" + echo "Tools Processed: ${{ steps.sync.outputs.processed }}" + echo "Tools Skipped: ${{ steps.sync.outputs.skipped }}" + echo "Errors: ${{ steps.sync.outputs.errors }}" + echo "Total in Registry: ${{ steps.sync.outputs.total }}" + echo "Changes Made: ${{ steps.sync.outputs.has_changes }}" + echo "" + + if [ "${{ steps.sync.outputs.has_changes }}" = "true" ]; then + echo "✅ New tools added to manual-tools.ts and committed" + else + echo "ℹ️ No new tools found - manual-tools.ts is up to date" + fi + + echo "" + echo "════════════════════════════════════════" diff --git a/.vercelignore b/.vercelignore new file mode 100644 index 0000000..028fb4f --- /dev/null +++ b/.vercelignore @@ -0,0 +1,7 @@ +node_modules +.turbo +.next +dist +*.log +.env* +!.env.example diff --git a/2025-BEST-PRACTICES.md b/2025-BEST-PRACTICES.md deleted file mode 100644 index 59676be..0000000 --- a/2025-BEST-PRACTICES.md +++ /dev/null @@ -1,275 +0,0 @@ -# 2025 Best Practices for TPMJS Monorepo - -This document outlines recommendations to make TPMJS a cutting-edge 2025 monorepo optimized for both human and agentic development (Claude Code, Cursor, etc.). - -## High-Impact Additions - -### 1. Agent-First Documentation - -``` -packages/docs/ -├── architecture-decisions/ # ADRs in markdown -├── patterns/ # Common patterns with examples -├── schemas/ # JSON schemas for all data structures -└── examples/ # Working code examples per feature -``` - -**Why:** Claude Code and other agents work better with: -- Explicit decision documentation (ADRs) -- Pattern libraries showing "the right way" -- Machine-readable schemas -- Real working examples to reference - -### 2. Automated Testing Pyramid - -```bash -# Add to package.json scripts -"test:unit": "vitest" # ✅ Already have this -"test:integration": "vitest -c vitest.integration.config.ts" # Add -"test:e2e": "playwright test" # Add -"test:visual": "playwright test --grep @visual" # Add -"test:contracts": "pactum" # Add for API testing -``` - -**Packages to add:** -- `@playwright/test` - E2E testing -- `@playwright/experimental-ct-react` - Component testing -- `pactum` or `msw` integration tests (you have mocks setup) -- `chromatic` or `percy` - Visual regression - -### 3. Type Coverage & Quality Gates - -```json -// Add to root package.json -{ - "scripts": { - "type-check": "tsc --noEmit", - "type-coverage": "type-coverage --at-least 95", - "find-deadcode": "knip", - "check-architecture": "depcruiser --validate" - } -} -``` - -**Add packages:** -- `type-coverage` - Ensure no implicit `any` -- `knip` - Find unused files/exports/dependencies -- `dependency-cruiser` - Enforce architecture rules -- `@total-typescript/ts-reset` - Better built-in types - -### 4. Development Containers - -```json -// .devcontainer/devcontainer.json -{ - "name": "TPMJS Dev", - "dockerComposeFile": "docker-compose.yml", - "service": "dev", - "features": { - "ghcr.io/devcontainers/features/node:1": {}, - "ghcr.io/devcontainers-contrib/features/pnpm:2": {} - }, - "customizations": { - "vscode": { - "extensions": [ - "biomejs.biome", - "bradlc.vscode-tailwindcss", - "lokalise.i18n-ally" - ] - } - } -} -``` - -**Why:** Agents like Claude Code work better when environment is reproducible. This also helps human developers. - -### 5. Code Generation & Scaffolding - -```typescript -// packages/cli/ - Internal dev tool -import { scaffold } from '@tpmjs/cli'; - -// Commands: -pnpm gen:component ButtonGroup -pnpm gen:package @tpmjs/new-package -pnpm gen:app marketing-site -``` - -**Create:** -- `plop` or `hygen` templates -- Component scaffolding (with tests, stories, exports) -- Package scaffolding (with tsconfig, package.json, exports) -- Consistent file structure generation - -**Why:** Agents can use these commands to create new code following your exact patterns. - -### 6. Enhanced Strict Mode TypeScript - -```json -// packages/tsconfig/base.json - Add these -{ - "compilerOptions": { - "exactOptionalPropertyTypes": true, - "noUncheckedIndexedAccess": true, - "noPropertyAccessFromIndexSignature": true, - "allowUnusedLabels": false, - "allowUnreachableCode": false, - "noImplicitOverride": true - } -} -``` - -### 7. Bundle Analysis & Performance - -```json -{ - "scripts": { - "analyze": "turbo run build --filter=@tpmjs/web -- --analyze", - "lighthouse": "lhci autorun", - "bundle-size": "size-limit" - } -} -``` - -**Add:** -- `@next/bundle-analyzer` -- `@lhci/cli` - Lighthouse CI -- `size-limit` - Bundle size tracking in CI - -### 8. Smart Dependency Management - -```json -// .github/renovate.json -{ - "extends": ["config:base"], - "packageRules": [ - { - "matchPackagePatterns": ["*"], - "matchUpdateTypes": ["minor", "patch"], - "groupName": "all non-major dependencies", - "groupSlug": "all-minor-patch" - } - ] -} -``` - -**Use:** Renovate or Dependabot with auto-merge for passing tests - -### 9. API Documentation Generation - -```bash -pnpm add -D -w typedoc typedoc-plugin-markdown -``` - -Auto-generate API docs from TSDoc comments that both humans and agents can read. - -### 10. Schema-First Development - -```typescript -// packages/schemas/ - Central schema definitions -export * from './tool-schema'; -export * from './registry-api-schema'; -export * from './event-schema'; - -// Use Zod for runtime + type generation -// Agents can read schemas to understand contracts -``` - -## Monorepo-Specific Improvements - -### 11. Better Local Development - -```typescript -// turbo.json -{ - "pipeline": { - "dev": { - "cache": false, - "persistent": true, - "dependsOn": ["^build"] - }, - "build": { - "dependsOn": ["^build"], - "outputs": ["dist/**", ".next/**"] - } - } -} -``` - -### 12. Workspace Protocols & Constraints - -```yaml -# .pnpm-workspace.yaml -packages: - - 'apps/*' - - 'packages/*' - -# Add constraints -pnpm-workspace-constraints: - dependencies: - '@tpmjs/ui': 'workspace:*' - '@tpmjs/utils': 'workspace:*' -``` - -## Recommended Final Structure - -``` -. -├── .devcontainer/ # Dev containers config -├── .github/ -│ ├── workflows/ # CI/CD -│ └── renovate.json # Dependency automation -├── apps/ -│ └── web/ -├── packages/ -│ ├── cli/ # ⭐ NEW: Dev tooling -│ ├── schemas/ # ⭐ NEW: Central schemas -│ └── ...existing -├── docs/ -│ ├── adr/ # ⭐ NEW: Architecture decisions -│ ├── patterns/ # ⭐ NEW: Code patterns -│ └── examples/ # ⭐ NEW: Working examples -├── scripts/ -│ ├── scaffold.ts # ⭐ NEW: Code generation -│ └── validate-deps.ts # ⭐ NEW: Architecture validation -├── playwright.config.ts # ⭐ NEW: E2E testing -├── .lighthouserc.json # ⭐ NEW: Performance -└── knip.json # ⭐ NEW: Dead code detection -``` - -## Priority Order for Implementation - -### Phase 1 (Foundation) -1. **Knip + type-coverage** - Catch issues early -2. **Code generation scripts** - Ensure consistency -3. **ADR documentation structure** - Decision tracking - -### Phase 2 (Quality) -4. **E2E testing with Playwright** - Full user flow coverage -5. **Bundle analysis + performance budgets** - Keep app fast -6. **Stricter TypeScript settings** - Catch more bugs at compile time - -### Phase 3 (DX) -7. **Dev containers** - Reproducible environments -8. **API documentation generation** - Auto-generated from code -9. **Renovate automation** - Keep dependencies fresh - -## Benefits for Agent-Driven Development - -1. **Explicit Patterns** - Agents can reference documented patterns instead of guessing -2. **Code Generation** - Consistent scaffolding commands agents can use -3. **Machine-Readable Schemas** - JSON schemas help agents understand data structures -4. **Quality Gates** - Automated checks catch agent mistakes early -5. **Working Examples** - Agents can copy-paste-adapt proven patterns -6. **Architecture Enforcement** - Dependency rules prevent agents from creating invalid imports - -## Next Steps - -Start with the highest ROI items: -1. Install Knip to find dead code -2. Set up code generation for components/packages -3. Create docs/patterns/ with common examples -4. Add stricter TypeScript compiler options -5. Set up Playwright for E2E testing - -These changes will make the codebase more maintainable and significantly improve the experience of working with AI coding agents. diff --git a/API_ROUTES_TIMEOUT_INVESTIGATION.md b/API_ROUTES_TIMEOUT_INVESTIGATION.md deleted file mode 100644 index 575a6bd..0000000 --- a/API_ROUTES_TIMEOUT_INVESTIGATION.md +++ /dev/null @@ -1,932 +0,0 @@ -# API Routes Timeout Issue - Complete Investigation Report - -## Problem Statement - -API routes deployed to Vercel are timing out with no response. The Next.js application pages work perfectly, but all API endpoints at `/api/*` return timeouts or "Redirecting..." messages. - -**Affected URLs:** -- `https://tpmjs.com/api/health` - Returns "Redirecting..." -- `https://tpmjs.com/api/tools` - Returns "Redirecting..." -- `https://tpmjs-1chh44d1u-tpmjs.vercel.app/api/health` - Timeouts (exit code 28) -- `https://tpmjs-1chh44d1u-tpmjs.vercel.app/api/tools` - Timeouts (exit code 28) - -**Working:** -- All page routes work correctly (e.g., `/`, `/tool/[slug]`) -- UI navigation and client-side routing function normally -- Local development API routes work perfectly - -## Environment Details - -### Project Structure -- **Monorepo:** Turborepo setup with pnpm workspaces -- **Framework:** Next.js 16.0.4 (App Router) -- **Node Version:** 24.x (on Vercel) -- **Deployment Platform:** Vercel -- **Custom Domains:** tpmjs.com, www.tpmjs.com - -### Repository Structure -``` -tpmjs/ -├── apps/ -│ └── web/ # Next.js 16 App Router application -│ ├── src/ -│ │ └── app/ -│ │ ├── api/ -│ │ │ ├── health/route.ts -│ │ │ ├── stats/route.ts -│ │ │ ├── tools/ -│ │ │ │ ├── route.ts -│ │ │ │ ├── [id]/route.ts -│ │ │ │ ├── [slug]/route.ts -│ │ │ │ └── validate/route.ts -│ │ │ └── sync/ -│ │ │ ├── changes/route.ts -│ │ │ ├── keyword/route.ts -│ │ │ └── metrics/route.ts -│ │ ├── page.tsx -│ │ └── tool/[slug]/page.tsx -│ ├── next.config.ts -│ └── vercel.json -├── packages/ -│ ├── db/ # Prisma client -│ ├── types/ # Shared TypeScript types -│ ├── utils/ # Utility functions -│ ├── env/ # Environment validation -│ └── ui/ # React component library -├── vercel.json # Root Vercel configuration -└── turbo.json -``` - -## API Route Examples - -### `/apps/web/src/app/api/health/route.ts` -```typescript -import { NextResponse } from 'next/server'; - -export const runtime = 'nodejs'; -export const dynamic = 'force-dynamic'; -export const maxDuration = 60; - -/** - * GET /api/health - * Simple health check endpoint that doesn't touch the database - */ -export async function GET() { - return NextResponse.json({ - status: 'ok', - timestamp: new Date().toISOString(), - env: { - hasDatabase: !!process.env.DATABASE_URL, - nodeEnv: process.env.NODE_ENV, - }, - }); -} -``` - -### `/apps/web/src/app/api/tools/route.ts` -```typescript -import { NextResponse } from 'next/server'; -import { prisma } from '@tpmjs/db/client'; - -export const runtime = 'nodejs'; -export const dynamic = 'force-dynamic'; - -export async function GET(request: Request) { - // ... query string parsing - - const [tools, totalCount] = await Promise.all([ - prisma.tool.findMany({ - where, - orderBy: [ - { qualityScore: 'desc' }, - { npmDownloadsLastMonth: 'desc' }, - { createdAt: 'desc' }, - ], - take: limit, - skip: offset, - }), - prisma.tool.count({ where }), - ]); - - return NextResponse.json({ - data: tools, - pagination: { - page, - limit, - total: totalCount, - totalPages: Math.ceil(totalCount / limit), - }, - }); -} -``` - -## Configuration Files - -### `/apps/web/next.config.ts` (Current) -```typescript -import type { NextConfig } from 'next'; - -const nextConfig: NextConfig = { - transpilePackages: ['@tpmjs/ui', '@tpmjs/utils', '@tpmjs/db', '@tpmjs/types', '@tpmjs/env'], - reactStrictMode: true, -}; - -export default nextConfig; -``` - -### `/apps/web/vercel.json` (Current) -```json -{ - "$schema": "https://openapi.vercel.sh/vercel.json", - "buildCommand": "cd ../.. && pnpm --filter=@tpmjs/web build", - "installCommand": "pnpm install" -} -``` - -### `/vercel.json` (Root) -```json -{ - "$schema": "https://openapi.vercel.sh/vercel.json", - "git": { - "deploymentEnabled": { - "main": true - } - }, - "github": { - "silent": false, - "autoJobCancelation": true - }, - "crons": [ - { - "path": "/api/sync/changes", - "schedule": "*/2 * * * *" - }, - { - "path": "/api/sync/keyword", - "schedule": "*/15 * * * *" - }, - { - "path": "/api/sync/metrics", - "schedule": "0 * * * *" - } - ] -} -``` - -## Local Build Verification - -### Local Build Output Structure -```bash -$ ls -R /Users/ajaxdavis/repos/tpmjs/tpmjs/apps/web/.next/server/app/api/ - -health/ -stats/ -sync/ -tools/ - -/apps/web/.next/server/app/api/health: -route -route.js -route.js.map -route.js.nft.json -route_client-reference-manifest.js - -/apps/web/.next/server/app/api/stats: -route -route.js -route.js.map -route.js.nft.json -route_client-reference-manifest.js - -/apps/web/.next/server/app/api/tools: -[id]/ -[slug]/ -validate/ -route -route.js -route.js.map -route.js.nft.json -route_client-reference-manifest.js -``` - -### Routes Manifest Confirmation -```bash -$ cat /apps/web/.next/routes-manifest.json | jq '.staticRoutes[] | select(.page | contains("api"))' - -{ - "page": "/api/health", - "regex": "^/api/health(?:/)?$", - "routeKeys": {}, - "namedRegex": "^/api/health(?:/)?$" -} -{ - "page": "/api/stats", - "regex": "^/api/stats(?:/)?$", - "routeKeys": {}, - "namedRegex": "^/api/stats(?:/)?$" -} -{ - "page": "/api/sync/changes", - "regex": "^/api/sync/changes(?:/)?$", - "routeKeys": {}, - "namedRegex": "^/api/sync/changes(?:/)?$" -} -{ - "page": "/api/sync/keyword", - "regex": "^/api/sync/keyword(?:/)?$", - "routeKeys": {}, - "namedRegex": "^/api/sync/keyword(?:/)?$" -} -{ - "page": "/api/sync/metrics", - "regex": "^/api/sync/metrics(?:/)?$", - "routeKeys": {}, - "namedRegex": "^/api/sync/metrics(?:/)?$" -} -``` - -### Node File Trace (NFT) Verification -```bash -$ cat /apps/web/.next/server/app/api/health/route.js.nft.json - -{ - "version": 1, - "files": [ - "../../../../../../../node_modules/.pnpm/next@16.0.4_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/client/components/app-router-headers.js", - "../../../../../../../node_modules/.pnpm/next@16.0.4_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/compiled/@opentelemetry/api/index.js", - // ... many more dependencies - ] -} -``` - -**Conclusion:** API routes build correctly locally with all dependencies properly traced. - -## Vercel Deployment Analysis - -### Deployment Inspection Output -```bash -$ vercel inspect https://tpmjs-1chh44d1u-tpmjs.vercel.app - -General - id dpl_2FHyiTWtBZzvT8EcohwYEZmdb8rb - name tpmjs-web - target production - status ● Ready - url https://tpmjs-1chh44d1u-tpmjs.vercel.app - created Fri Nov 28 2025 20:44:03 GMT+1000 - -Aliases - ╶ https://www.tpmjs.com - ╶ https://tpmjs-web.vercel.app - ╶ https://tpmjs-web-tpmjs.vercel.app - ╶ https://tpmjs-web-git-main-tpmjs.vercel.app - ╶ https://tpmjs.com - -Builds - ┌ . [0ms] - ├── λ tool/[slug] (562.92KB) [iad1] - ├── λ tool/[slug].rsc (562.92KB) [iad1] - ├── λ _global-error (642.48KB) [iad1] - ├── λ _global-error.rsc (642.48KB) [iad1] - ├── λ _global-error.segments/__PAGE__.segment.rsc (642.48KB) [iad1] - └── 56 output items hidden -``` - -**CRITICAL FINDING:** No API routes are listed in the build output. Only pages (`tool/[slug]`, `_global-error`, etc.) appear as serverless functions (`λ`). - -Expected API routes that should appear: -- `λ api/health` -- `λ api/tools` -- `λ api/tools/[id]` -- `λ api/tools/[slug]` -- `λ api/sync/changes` -- etc. - -### Testing Results -```bash -# Direct Vercel URL - Timeouts -$ curl -s -m 10 https://tpmjs-1chh44d1u-tpmjs.vercel.app/api/health -# Exit code 28 (timeout) - -# Custom Domain - Returns "Redirecting..." -$ curl -s -m 10 https://tpmjs.com/api/health -Redirecting... - -# Custom Domain - Returns "Redirecting..." -$ curl -s -m 10 https://tpmjs.com/api/tools -Redirecting... - -# Check redirect headers -$ curl -I https://tpmjs.com -HTTP/2 307 -cache-control: public, max-age=0, must-revalidate -content-type: text/plain -date: Fri, 28 Nov 2025 10:38:12 GMT -location: https://www.tpmjs.com/ -server: Vercel -``` - -## Vercel Configuration Details - -### User-Confirmed Settings -- **Root Directory:** `apps/web` (set in Vercel dashboard) -- **DATABASE_URL:** Configured in Vercel environment variables (Production) -- **Framework Preset:** (Unknown - needs verification) -- **Build Output Directory:** (Unknown - using default `.next`) - -### Project List -```bash -$ vercel project ls | grep -i tpmjs - -tpmjs -- 16h 24.x -v0-tool-registry-page https://tpmjs.com 3d 22.x -``` - -**NOTE:** Two projects exist: -1. `tpmjs` - Current project (Node 24.x) -2. `v0-tool-registry-page` - Also has tpmjs.com domain (Node 22.x) - -This could indicate a domain routing conflict or outdated project. - -## Investigation Timeline & Attempts - -### Attempt 1: Remove Root-Level Redirects -**Hypothesis:** The redirect in `/vercel.json` was intercepting API requests. - -**Original `/vercel.json`:** -```json -{ - "redirects": [ - { - "source": "/:path*", - "has": [ - { - "type": "host", - "value": "www.tpmjs.com" - } - ], - "destination": "https://tpmjs.com/:path*", - "permanent": true - } - ] -} -``` - -**Action:** Removed the `redirects` array from root `/vercel.json`. - -**Result:** ❌ API routes still timeout. Redirect rule was not the root cause. - -**Commit:** `9be3af7 fix(routing): move www redirect from vercel.json to Next.js config` - -### Attempt 2: Move Redirects to Next.js Config -**Hypothesis:** Next.js should handle redirects after routing. - -**Action:** Added `async redirects()` to `apps/web/next.config.ts`: -```typescript -async redirects() { - return [ - { - source: '/:path*', - has: [ - { - type: 'host', - value: 'www.tpmjs.com', - }, - ], - destination: 'https://tpmjs.com/:path*', - permanent: true, - }, - ]; -} -``` - -**Result:** ❌ API routes returned "Redirecting..." instead of executing. Next.js `async redirects()` applies to ALL routes including API routes. - -**Commit:** `9be3af7 fix(routing): move www redirect from vercel.json to Next.js config` - -### Attempt 3: Exclude API Routes from Redirect -**Hypothesis:** Use regex to exclude `/api/*` from redirects. - -**Action:** Modified redirect pattern: -```typescript -async redirects() { - return [ - { - source: '/((?!api).*)', // Negative lookahead to exclude /api/* - has: [ - { - type: 'host', - value: 'www.tpmjs.com', - }, - ], - destination: 'https://tpmjs.com/$1', - permanent: true, - }, - ]; -} -``` - -**Result:** ❌ API routes back to timing out (not redirecting anymore, but still not working). - -**Commit:** `c42bfb6 fix(redirects): exclude API routes from www redirect` - -### Attempt 4: Remove All Redirects -**Hypothesis:** Eliminate redirect loop causing ERR_TOO_MANY_REDIRECTS. - -**Action:** Removed `async redirects()` entirely from `next.config.ts`. - -**Result:** ✅ Redirect loop fixed. ❌ API routes still timeout. - -**Commit:** `b93cd42 fix: remove redirects to resolve redirect loop` - -### Attempt 5: Add Vercel Functions Configuration -**Hypothesis:** Vercel needs explicit configuration to detect API routes. - -**Action:** Added to `apps/web/vercel.json`: -```json -{ - "functions": { - "app/api/**/*.ts": { - "maxDuration": 60 - } - } -} -``` - -**Result:** ❌ No change. API routes still timeout. - -**Commit:** `748ca4d fix(api): configure Vercel functions for API routes with maxDuration` - -### Attempt 6: Add maxDuration to Route Files -**Hypothesis:** Export configuration directly in route handlers. - -**Action:** Added to `apps/web/src/app/api/health/route.ts`: -```typescript -export const maxDuration = 60; -``` - -**Result:** ❌ No change. API routes still timeout. - -**Commit:** `8281f8f fix(build): disable Turbopack for Vercel deployment` - -### Attempt 7: Disable Turbopack -**Hypothesis:** Turbopack (Next.js 16 default) has compatibility issues with Vercel. - -**Action:** Added `--webpack` flag to build command: -```json -{ - "buildCommand": "cd ../.. && turbo build --filter=@tpmjs/web -- --webpack" -} -``` - -**Result:** ❌ Build failed completely. Invalid flag syntax. - -**Commit:** `8281f8f fix(build): disable Turbopack for Vercel deployment` - -### Attempt 8: Simplify Build Command -**Hypothesis:** Use direct pnpm build instead of Turbo wrapper. - -**Action:** Changed to: -```json -{ - "buildCommand": "cd ../.. && pnpm --filter=@tpmjs/web build" -} -``` - -**Result:** ⏳ Pending deployment test. - -**Commit:** `065196d fix(build): simplify Vercel build command` - -## Root Cause Analysis - -### What We Know FOR SURE - -1. ✅ **API routes build correctly locally** - - All 9 API routes compile to `.next/server/app/api/` - - NFT (Node File Trace) files are generated with proper dependencies - - Routes manifest includes all API routes - -2. ✅ **Next.js configuration is correct** - - `export const runtime = 'nodejs'` set correctly - - `export const dynamic = 'force-dynamic'` set correctly - - `transpilePackages` includes all workspace packages - -3. ✅ **Pages deploy and work perfectly** - - `/tool/[slug]` renders correctly - - Homepage loads - - Client-side navigation works - -4. ❌ **API routes are NOT deployed as serverless functions** - - `vercel inspect` shows NO API routes in build output - - Only pages appear as `λ` (lambda) functions - - This is the PRIMARY issue - -5. ❌ **Direct Vercel URLs timeout** - - Not just a custom domain issue - - Affects `*.vercel.app` URLs - - Exit code 28 (timeout) - no response at all - -6. ❌ **Custom domain shows "Redirecting..."** - - Even with all redirects removed from config - - Suggests a redirect at Vercel platform level OR DNS level - - Could be from the `v0-tool-registry-page` project conflict - -### Possible Root Causes - -#### Theory 1: Vercel Project Misconfiguration -**Likelihood:** HIGH - -**Evidence:** -- Two projects with same domain (`tpmjs` and `v0-tool-registry-page`) -- Framework Preset might not be set to "Next.js" -- Root Directory is `apps/web` but Vercel might not be detecting Next.js properly - -**What to Check:** -1. Vercel Dashboard → Project Settings → General - - Framework Preset: Should be "Next.js" - - Root Directory: Should be "apps/web" - - Build Command: Should match vercel.json - - Output Directory: Should be blank (default `.next`) - -2. Vercel Dashboard → Domains - - Check if both projects have tpmjs.com - - Remove domain from `v0-tool-registry-page` if present - -3. Vercel Dashboard → Deployments → Build Logs - - Search for "API" or "route" - - Look for errors about missing functions - - Check if Next.js is detected correctly - -#### Theory 2: Monorepo Detection Issue -**Likelihood:** MEDIUM - -**Evidence:** -- Build command uses `cd ../.. && pnpm --filter=@tpmjs/web build` -- Vercel might not be correctly detecting workspace structure -- `transpilePackages` includes workspace packages - -**What to Check:** -1. Build logs for workspace resolution errors -2. Check if `node_modules` is being created in correct location -3. Verify pnpm workspace configuration - -**Potential Fix:** -Try setting `installCommand` to: -```json -{ - "installCommand": "pnpm install --shamefully-hoist" -} -``` - -#### Theory 3: Next.js 16 + Vercel Incompatibility -**Likelihood:** MEDIUM - -**Evidence:** -- Next.js 16 released recently (November 2024) -- Turbopack is default (might have Vercel issues) -- App Router API routes behave differently than Pages Router - -**What to Check:** -1. Vercel build logs for Next.js version detection -2. Any warnings about incompatible features -3. Check Vercel's Next.js 16 support status - -**Potential Fix:** -Downgrade to Next.js 15.x temporarily to test: -```json -{ - "dependencies": { - "next": "^15.0.0" - } -} -``` - -#### Theory 4: Environment Variable Issue -**Likelihood:** LOW - -**Evidence:** -- DATABASE_URL is configured -- Pages work (they might not need env vars) -- API routes use Prisma (requires DATABASE_URL) - -**What to Check:** -1. Vercel Dashboard → Settings → Environment Variables - - Verify DATABASE_URL is set for Production - - Verify it's not blocked or empty - - Check if other vars are needed - -2. Build logs for Prisma generation errors - -**Potential Fix:** -None - user confirmed DATABASE_URL is set. - -#### Theory 5: Build Output Issue -**Likelihood:** MEDIUM-HIGH - -**Evidence:** -- `vercel inspect` doesn't show API routes -- Only pages are listed as functions -- Build completes successfully (38-41 seconds) - -**What to Check:** -1. Build logs: Does Next.js report building API routes? - - Look for "Route (app)" or "λ" indicators for API routes - - Compare to local build output - -2. Check if Vercel is using correct build output structure - - App Router uses `.next/server/app/` - - Pages Router uses `.next/server/pages/` - -**Potential Fix:** -Try forcing Vercel to recognize the build: -```json -{ - "builds": [ - { - "src": "package.json", - "use": "@vercel/next" - } - ] -} -``` - -(Note: `builds` is legacy, modern Next.js should auto-detect) - -## Recommended Next Steps - -### Immediate Actions (High Priority) - -1. **Check Vercel Project Settings** - - Go to Vercel Dashboard → tpmjs-web project - - Verify Framework Preset is "Next.js" - - Verify Root Directory is `apps/web` - - Screenshot settings for reference - -2. **Review Build Logs** - - Go to latest deployment - - Download complete build logs - - Search for: - - "Route (app)" - should show API routes - - "λ" - should show API functions - - "api" - any mentions - - Errors or warnings - -3. **Check Domain Configuration** - - Verify only ONE project has tpmjs.com domain - - Remove domain from `v0-tool-registry-page` project if present - - Check DNS settings aren't redirecting - -4. **Test Simple API Route** - - Create minimal API route: - ```typescript - // apps/web/src/app/api/test/route.ts - export async function GET() { - return new Response('Hello from API', { status: 200 }); - } - ``` - - Deploy and test - - If this doesn't work, confirms platform issue - -### Investigation Actions (Medium Priority) - -5. **Compare Working vs Non-Working** - - Find a deployment where pages DO work - - Compare build output between page routes and API routes - - Look for differences in how they're compiled - -6. **Test Vercel CLI Deploy** - - Deploy directly via CLI: `vercel --prod` - - Check if behavior differs from Git-based deploy - - Might reveal configuration issues - -7. **Check Vercel Function Logs** - - Even though functions aren't in build output, try: - - `vercel logs --since 1h` - - Look for any API route invocations or errors - -8. **Review Turbo Configuration** - ```bash - # Check turbo.json for Next.js build config - cat /turbo.json - - # Verify build runs correctly locally - pnpm --filter=@tpmjs/web build - ``` - -### Alternative Approaches (If Above Fails) - -9. **Create New Vercel Project** - - Import from Git fresh - - Use identical settings - - Test if fresh project works - -10. **Contact Vercel Support** - - This may be a platform bug with Next.js 16 - - Provide this document as context - - Ask specifically why API routes aren't in build output - -11. **Temporary Workaround** - - Deploy API routes separately (different service) - - Use Vercel proxy to route `/api/*` to separate deployment - - Not ideal but unblocks development - -## Environment Variables Needed - -```bash -# Required for API routes -DATABASE_URL="postgresql://..." - -# Optional (check if needed) -NODE_ENV="production" -NEXT_PUBLIC_* # Any public env vars -``` - -## Build Commands Reference - -### Local Development -```bash -# Install dependencies -pnpm install - -# Generate Prisma client -pnpm --filter=@tpmjs/db db:generate - -# Run development server -pnpm --filter=@tpmjs/web dev - -# Build for production -pnpm --filter=@tpmjs/web build - -# Test build locally -pnpm --filter=@tpmjs/web start -``` - -### Vercel Configuration -**Current:** -```json -{ - "buildCommand": "cd ../.. && pnpm --filter=@tpmjs/web build", - "installCommand": "pnpm install" -} -``` - -**Alternative to try:** -```json -{ - "buildCommand": "cd ../.. && turbo build --filter=@tpmjs/web", - "installCommand": "pnpm install", - "framework": "nextjs" -} -``` - -## Key Files to Review - -1. `/apps/web/next.config.ts` - Next.js configuration -2. `/apps/web/vercel.json` - Vercel app-level config -3. `/vercel.json` - Vercel root config -4. `/turbo.json` - Turborepo configuration -5. `/apps/web/.next/routes-manifest.json` - Route definitions -6. `/apps/web/.next/build-manifest.json` - Build output -7. Vercel build logs (from dashboard) - -## Questions for Vercel Support - -If escalating to Vercel support, ask: - -1. Why are API routes not appearing in the build output (`vercel inspect`) when pages are deploying correctly? - -2. Is there a known issue with Next.js 16 App Router API routes in Turborepo monorepos? - -3. What's the correct way to configure `vercel.json` for a Next.js 16 app in a monorepo with custom build commands? - -4. Could having two projects (`tpmjs` and `v0-tool-registry-page`) with the same domain cause routing issues? - -5. Are there any specific requirements for deploying Next.js 16 API routes that differ from Next.js 15? - -## Related Documentation - -- [Next.js 16 Upgrade Guide](https://nextjs.org/docs/app/guides/upgrading/version-16) -- [Vercel Next.js Deployment](https://vercel.com/docs/frameworks/nextjs) -- [Vercel Functions Configuration](https://vercel.com/docs/functions/configuring-functions) -- [Turborepo with Vercel](https://vercel.com/docs/monorepos/turborepo) -- [Next.js App Router API Routes](https://nextjs.org/docs/app/api-reference/file-conventions/route) - -## Recent Commits Related to This Issue - -``` -065196d fix(build): simplify Vercel build command -8281f8f fix(build): disable Turbopack for Vercel deployment -748ca4d fix(api): configure Vercel functions for API routes with maxDuration -b93cd42 fix: remove redirects to resolve redirect loop -c42bfb6 fix(redirects): exclude API routes from www redirect -9be3af7 fix(routing): move www redirect from vercel.json to Next.js config -a92dfff fix(build): add workspace packages to Next.js transpilePackages -cc6c824 fix(vercel): configure Turborepo monorepo build for apps/web -``` - -## ✅ CONCLUSION - ROOT CAUSE IDENTIFIED - -### The Real Problem - -**Vercel is NOT detecting this project as a Next.js application.** - -When Vercel doesn't detect Next.js, it: -- Uses `@vercel/static-builder` instead of `@vercel/next` -- Treats the deployment as a static site -- Deploys pages (static HTML) successfully -- **Completely drops all App Router API routes** -- Never generates serverless functions for `/api/*` routes - -This explains EVERY symptom: -- ✅ Pages work (they're static files) -- ❌ API routes timeout (they were never deployed) -- ❌ No `λ api/*` in build output (functions don't exist) -- ❌ Direct Vercel URLs timeout (not a DNS issue) -- ❌ "Redirecting..." on custom domain (wrong project owns the domain) - -### Why Vercel Doesn't Detect Next.js - -**1. Wrong Root Directory** -- Vercel project likely has Root Directory set to `.` or empty -- Should be exactly: `apps/web` -- A single character difference breaks Next.js detection - -**2. Wrong Framework Preset** -- When Vercel can't auto-detect Next.js (due to monorepo + wrong root) -- It defaults to Framework Preset = "Other" -- "Other" uses static builder, not Next.js builder - -**3. Domain Conflict** -- Two projects exist: `tpmjs` and `v0-tool-registry-page` -- Both have `tpmjs.com` domain assigned -- Requests randomly route to wrong project -- "Redirecting..." comes from the old project, not your code - -**4. Custom Build Commands** -- Custom build commands can bypass Vercel's auto-detection -- Should let Vercel auto-detect and use default commands - -### Evidence - -**Local build works:** -```bash -$ ls apps/web/.next/server/app/api/ -health/ stats/ sync/ tools/ -# All API routes compile correctly -``` - -**Vercel deployment missing API routes:** -```bash -$ vercel inspect https://tpmjs-1chh44d1u-tpmjs.vercel.app -Builds - ├── λ tool/[slug] # Pages present - ├── λ _global-error # Pages present - └── 56 output items hidden -# NO api/health, NO api/tools, NO api/* at all -``` - -This is **not a Next.js bug, not a Turborepo bug, not a code issue**. -This is **pure Vercel project misconfiguration**. - -### The Fix (4 Steps, 5 Minutes) - -See `VERCEL_FIX_CHECKLIST.md` for detailed instructions. - -**Quick version:** -1. Set Root Directory to `apps/web` (exactly) -2. Set Framework Preset to "Next.js" -3. Remove `tpmjs.com` domain from `v0-tool-registry-page` project -4. Clear custom build commands (let Vercel auto-detect) - -**No code changes needed. Just fix Vercel dashboard settings.** - -### After the Fix - -Next deployment will show: -```bash -$ vercel inspect -Builds - ├── λ api/health - ├── λ api/tools - ├── λ api/sync/changes - ├── λ api/tools/[id] - ├── λ api/tools/[slug] - ├── λ tool/[slug] - ... -``` - -And API routes will work instantly: -```bash -$ curl https://tpmjs.com/api/health -{"status":"ok","timestamp":"..."} -``` - ---- - -## Summary for ChatGPT - -The core issue is that **Vercel is not detecting the project as Next.js** due to incorrect Root Directory, Framework Preset set to "Other", domain conflicts between two projects, and custom build commands bypassing auto-detection. - -When Vercel doesn't detect Next.js, it uses a static site builder which deploys pages but **completely drops all App Router API routes** from the build. This is why pages work but all `/api/*` requests timeout - the API route serverless functions were never created. - -**The fix is purely configuration** - no code changes needed. Set Root Directory to `apps/web`, Framework Preset to "Next.js", remove the domain from the old project, and clear custom build commands. See `VERCEL_FIX_CHECKLIST.md` for step-by-step instructions. diff --git a/CLAUDE.md b/CLAUDE.md index 3c9063c..da7946e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -678,4 +678,423 @@ API timeouts in serverless environments often stem from build configuration issu 4. Use `vercel inspect` to verify lambda deployment 5. Test database performance locally before deploying -The full working implementation is live at [tpmjs.com](https://tpmjs.com). \ No newline at end of file +The full working implementation is live at [tpmjs.com](https://tpmjs.com). + +--- + +## NPM Package Syncing System + +TPMJS.com automatically mirrors npm packages with the `tpmjs` keyword to keep the tool registry up-to-date. This section documents how the syncing system works. + +### Overview + +The sync system uses three automated strategies running on Vercel Cron to discover and update TPMJS tools: + +1. **Changes Feed** - Monitors npm's real-time changes feed for all package updates +2. **Keyword Search** - Actively searches npm for packages with the `tpmjs` keyword +3. **Metrics Sync** - Updates download stats and calculates quality scores + +### Sync Endpoints + +All sync endpoints are located in `apps/web/src/app/api/sync/`: + +#### 1. Changes Feed Sync (`/api/sync/changes`) + +**Purpose:** Monitors npm's changes feed to catch new packages and updates in real-time. + +**Schedule:** Every 2 minutes (`*/2 * * * *`) + +**How it works:** +1. Fetches the last checkpoint sequence number from the database +2. Calls npm's `/_changes` endpoint with `since=` (limit 100 per run) +3. For each changed package, fetches full metadata with `fetchLatestPackageWithMetadata()` +4. Validates that the package has a valid `tpmjs` field using `validateTpmjsField()` +5. Upserts the tool to the database with `discoveryMethod: 'changes-feed'` +6. Updates the checkpoint with the new sequence number for next run + +**Key Features:** +- Uses checkpoints to track progress and avoid reprocessing +- Processes up to 100 changes per run to avoid timeouts +- Logs all sync operations to `syncLog` table +- Requires `Authorization: Bearer ` header + +**Example Response:** +```json +{ + "success": true, + "data": { + "processed": 5, + "skipped": 93, + "errors": 0, + "lastSeq": "12345678", + "pending": 1250, + "durationMs": 2834 + } +} +``` + +#### 2. Keyword Search Sync (`/api/sync/keyword`) + +**Purpose:** Actively searches npm for packages with the `tpmjs` keyword. + +**Schedule:** Every 15 minutes (`*/15 * * * *`) + +**How it works:** +1. Searches npm registry for packages with keyword `tpmjs` (up to 250 results) +2. Fetches full metadata for each package +3. Validates the `tpmjs` field +4. Upserts tools with `discoveryMethod: 'keyword'` +5. Updates checkpoint with last run timestamp + +**Key Features:** +- Catches packages that might be missed by changes feed +- Useful for backfilling existing packages +- Processes up to 250 packages per run + +**Example Response:** +```json +{ + "success": true, + "data": { + "processed": 12, + "skipped": 3, + "errors": 0, + "packagesFound": 15, + "durationMs": 4521 + } +} +``` + +#### 3. Metrics Sync (`/api/sync/metrics`) + +**Purpose:** Updates download statistics and calculates quality scores for all tools. + +**Schedule:** Every hour (`0 * * * *`) + +**How it works:** +1. Fetches all tools from the database +2. For each tool, calls `fetchDownloadStats()` to get last 30 days of downloads +3. Calculates quality score based on: + - Tier (rich = 0.6, minimal = 0.4) + - Downloads (logarithmic scale, max 0.3) + - GitHub stars (logarithmic scale, max 0.1) +4. Updates `npmDownloadsLastMonth` and `qualityScore` fields + +**Quality Score Formula:** +```typescript +function calculateQualityScore(params: { + tier: string; + downloads: number; + githubStars: number; +}): number { + const tierScore = tier === 'rich' ? 0.6 : 0.4; + const downloadsScore = Math.min(0.3, Math.log10(downloads + 1) / 10); + const starsScore = Math.min(0.1, Math.log10(githubStars + 1) / 10); + return Math.min(1.0, tierScore + downloadsScore + starsScore); +} +``` + +**Example Response:** +```json +{ + "success": true, + "data": { + "processed": 25, + "skipped": 0, + "errors": 0, + "totalTools": 25, + "durationMs": 8234 + } +} +``` + +### Automated Sync Configuration + +The sync system can run via two methods: + +#### Option 1: Vercel Cron (Primary) + +Cron jobs are configured in `vercel.json` at the repository root: + +```json +{ + "crons": [ + { + "path": "/api/sync/changes", + "schedule": "*/2 * * * *" + }, + { + "path": "/api/sync/keyword", + "schedule": "*/15 * * * *" + }, + { + "path": "/api/sync/metrics", + "schedule": "0 * * * *" + } + ] +} +``` + +**Pros:** +- Native Vercel integration +- Automatic authentication with `CRON_SECRET` +- Same infrastructure as the app +- No setup required (works automatically on deploy) + +#### Option 2: GitHub Actions (Backup) + +A GitHub Actions workflow (`.github/workflows/sync.yml`) provides redundancy: + +```yaml +name: NPM Package Sync + +on: + schedule: + - cron: '*/2 * * * *' # Changes feed + - cron: '*/15 * * * *' # Keyword search + - cron: '0 * * * *' # Metrics + workflow_dispatch: # Manual trigger +``` + +**Pros:** +- Redundancy if Vercel Cron fails +- Manual trigger via GitHub UI +- Free on GitHub (included in free tier) +- Runs from GitHub's infrastructure + +**Setup:** + +1. Add secrets to GitHub repository settings: + - `VERCEL_PRODUCTION_URL` - Your production URL (e.g., `https://tpmjs.com`) + - `CRON_SECRET` - Same secret used in Vercel environment variables + +2. Enable GitHub Actions in repository settings + +3. The workflow will run automatically on schedule OR manually via: + - GitHub Actions tab → NPM Package Sync → Run workflow → Select sync type + +**Schedule Breakdown:** +- Changes feed: Every 2 minutes (30 times per hour) +- Keyword search: Every 15 minutes (4 times per hour) +- Metrics: Every hour (once per hour) + +**Recommendation:** Use Vercel Cron as primary and GitHub Actions as backup. Both can run simultaneously - the sync endpoints are idempotent. + +### Database Schema + +The sync system uses these Prisma models: + +**`Tool` - The main tool registry:** +```prisma +model Tool { + id String @id @default(cuid()) + npmPackageName String @unique + npmVersion String + npmDownloadsLastMonth Int @default(0) + qualityScore Float? + discoveryMethod String // 'changes-feed' | 'keyword' + tier String // 'minimal' | 'rich' + // ... other fields + + @@index([qualityScore]) + @@index([npmDownloadsLastMonth]) +} +``` + +**`SyncCheckpoint` - Tracks sync progress:** +```prisma +model SyncCheckpoint { + id String @id @default(cuid()) + source String @unique // 'changes-feed' | 'keyword-search' | 'metrics' + checkpoint Json // { lastSeq: string, lastRun: string, ... } +} +``` + +**`SyncLog` - Records all sync operations:** +```prisma +model SyncLog { + id String @id @default(cuid()) + source String + status String // 'success' | 'partial' | 'error' + processed Int + skipped Int + errors Int + message String? + metadata Json? + createdAt DateTime @default(now()) +} +``` + +### Manual Sync Triggers + +To manually trigger a sync (useful for testing or debugging): + +```bash +# Trigger changes feed sync +curl -X POST https://tpmjs.com/api/sync/changes \ + -H "Authorization: Bearer $CRON_SECRET" + +# Trigger keyword search +curl -X POST https://tpmjs.com/api/sync/keyword \ + -H "Authorization: Bearer $CRON_SECRET" + +# Trigger metrics update +curl -X POST https://tpmjs.com/api/sync/metrics \ + -H "Authorization: Bearer $CRON_SECRET" +``` + +**Note:** You need the `CRON_SECRET` environment variable set in Vercel. The endpoints return 401 Unauthorized without it. + +### Monitoring Sync Health + +Check sync logs in the database: + +```typescript +// Get recent sync operations +const recentSyncs = await prisma.syncLog.findMany({ + orderBy: { createdAt: 'desc' }, + take: 20, +}); + +// Check last successful sync for each source +const checkpoints = await prisma.syncCheckpoint.findMany(); +``` + +**Sync Log Example:** +```json +{ + "id": "clx...", + "source": "changes-feed", + "status": "success", + "processed": 5, + "skipped": 93, + "errors": 0, + "message": "Successfully processed 5 packages", + "metadata": { + "durationMs": 2834, + "lastSeq": "12345678", + "pending": 1250 + }, + "createdAt": "2025-11-30T12:00:00Z" +} +``` + +### Error Handling + +All sync endpoints follow this error handling pattern: + +1. **Partial Success:** If some packages fail but others succeed, status is `partial` +2. **Complete Failure:** If the entire sync fails, status is `error` +3. **Error Messages:** First 3 errors are included in the response +4. **Logging:** All operations are logged to `syncLog` regardless of success + +**Example Partial Failure:** +```json +{ + "success": true, + "data": { + "processed": 5, + "skipped": 2, + "errors": 3, + "durationMs": 5234 + } +} +``` + +The sync log will contain: +```json +{ + "status": "partial", + "message": "Processed with errors: Failed to process pkg1: Network timeout; Failed to process pkg2: Invalid tpmjs field; ..." +} +``` + +### Configuration + +Required environment variables in Vercel: + +```bash +# Database connection +DATABASE_URL="postgresql://..." + +# Cron job authentication +CRON_SECRET="your-secret-key" +``` + +**Important:** Vercel Cron automatically adds the `Authorization: Bearer $CRON_SECRET` header when calling the endpoints. No manual configuration needed. + +### Performance Considerations + +**Timeouts:** +- All sync routes have `maxDuration: 300` (5 minutes) +- Changes feed processes max 100 packages per run to avoid timeouts +- Keyword search processes max 250 packages per run +- Metrics sync processes all tools but runs only once per hour + +**Rate Limiting:** +- npm API has rate limits - be cautious when testing manually +- Vercel Cron jobs run from Vercel's infrastructure (different IP than dev) +- Consider implementing exponential backoff for npm API errors + +**Cold Starts:** +- First request to each sync endpoint may be slow due to Prisma initialization +- Subsequent requests are faster with warm Prisma Client +- This is acceptable for background cron jobs + +### Debugging Sync Issues + +**Check if cron jobs are running:** + +```bash +# View recent deployments +vercel ls + +# Check logs for a specific deployment +vercel logs + +# Filter for sync-related logs +vercel logs | grep sync +``` + +**Common issues:** + +1. **"Unauthorized" errors:** Check that `CRON_SECRET` is set in Vercel environment variables +2. **Timeouts:** Reduce batch size in changes feed (currently 100) +3. **Missing packages:** Check `syncLog` for errors during processing +4. **Stale data:** Verify metrics sync is running every hour + +**Test sync locally:** + +```bash +# Start dev server +pnpm dev --filter=@tpmjs/web + +# Trigger sync (requires CRON_SECRET in .env.local) +curl -X POST http://localhost:3000/api/sync/changes \ + -H "Authorization: Bearer $CRON_SECRET" +``` + +### Package Discovery Flow + +Here's how a new TPMJS tool gets discovered: + +1. **Developer publishes package to npm** with `tpmjs` keyword and `tpmjs` field in package.json +2. **Within 2 minutes:** Changes feed sync picks it up from npm's `/_changes` endpoint +3. **Validation:** `validateTpmjsField()` checks that the `tpmjs` field meets requirements +4. **Database Insert:** Tool is upserted with initial data +5. **Within 1 hour:** Metrics sync updates download stats and calculates quality score +6. **Visible on tpmjs.com:** Tool appears in search results and category pages + +**Backup Discovery:** If changes feed misses a package, the keyword search (every 15 minutes) will catch it. + +### Future Improvements + +Potential enhancements to the sync system: + +- [ ] Add webhook endpoint for instant npm package notifications +- [ ] Implement exponential backoff for npm API rate limits +- [ ] Add Slack/Discord notifications for sync failures +- [ ] Create admin dashboard to monitor sync health +- [ ] Support GitHub stars syncing (requires GitHub API integration) +- [ ] Add sync metrics to Vercel Analytics +- [ ] Implement differential sync to reduce database writes \ No newline at end of file diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 914560e..dd4d51c 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -167,7 +167,7 @@ Not needed for Option 1 (Deployment Protection). Add to README.md to show CI status: ```markdown -[![CI](https://github.com/YOUR_ORG/YOUR_REPO/actions/workflows/ci.yml/badge.svg)](https://github.com/YOUR_ORG/YOUR_REPO/actions/workflows/ci.yml) +[![CI](https://github.com/tpmjs/tpmjs/actions/workflows/ci.yml/badge.svg)](https://github.com/tpmjs/tpmjs/actions/workflows/ci.yml) ``` ## Summary diff --git a/HOW_TO_PUBLISH_A_TOOL.md b/HOW_TO_PUBLISH_A_TOOL.md new file mode 100644 index 0000000..9ef0fc4 --- /dev/null +++ b/HOW_TO_PUBLISH_A_TOOL.md @@ -0,0 +1,424 @@ +# How to Publish a TPMJS Tool + +This guide shows you how to create and publish an AI tool that will be automatically discovered and listed on tpmjs.com. + +## Quick Start + +1. Create a new NPM package +2. Add `"tpmjs"` to the `keywords` array in package.json +3. Add a `tpmjs` field with your tool's metadata +4. Publish to NPM +5. Your tool will automatically appear on tpmjs.com within 15 minutes + +## Step-by-Step Guide + +### 1. Create Your NPM Package + +Create a standard NPM package with your tool implementation: + +```bash +mkdir my-awesome-tool +cd my-awesome-tool +npm init -y +``` + +### 2. Add the Required Keyword + +In your `package.json`, add `"tpmjs"` to the keywords array: + +```json +{ + "name": "@yourname/my-awesome-tool", + "version": "1.0.0", + "keywords": ["tpmjs", "ai", "other-keywords"], + ... +} +``` + +**Important:** The `"tpmjs"` keyword is REQUIRED for automatic discovery! + +### 3. Add TPMJS Metadata + +Add a `tpmjs` field to your `package.json` with your tool's metadata. There are three tiers: + +#### Tier 1: Minimal (Required Fields Only) + +The bare minimum to get listed: + +```json +{ + "tpmjs": { + "category": "text-analysis", + "description": "A concise description of what your tool does" + } +} +``` + +**Required fields:** +- `category` - One of: `text-analysis`, `code-generation`, `data-processing`, `image-generation`, `audio-processing`, `search`, `integration`, `other` +- `description` - Clear description of what the tool does (1-3 sentences) + +#### Tier 2: Basic (Recommended) + +Add parameter and return type information: + +```json +{ + "tpmjs": { + "category": "text-analysis", + "description": "Analyzes sentiment in text and returns a score", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The text to analyze", + "required": true + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en', 'es')", + "required": false, + "default": "en" + } + ], + "returns": { + "type": "SentimentResult", + "description": "Object containing score (-1 to 1) and label (positive/negative/neutral)" + } + } +} +``` + +#### Tier 3: Rich (Full Documentation) + +Complete metadata for maximum visibility: + +```json +{ + "tpmjs": { + "category": "text-analysis", + "description": "Advanced sentiment analysis with emotion detection", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The text to analyze", + "required": true + }, + { + "name": "language", + "type": "string", + "description": "Language code", + "required": false, + "default": "en" + }, + { + "name": "includeEmotions", + "type": "boolean", + "description": "Whether to include emotion breakdown", + "required": false, + "default": false + } + ], + "returns": { + "type": "SentimentResult", + "description": "Object with score, label, and optional emotions array" + }, + "env": [ + { + "name": "SENTIMENT_API_KEY", + "description": "API key for sentiment analysis service", + "required": true + } + ], + "frameworks": ["vercel-ai", "langchain"], + "aiAgent": { + "useCase": "Use this tool when users need to analyze sentiment in text, detect emotions, or understand the tone of customer feedback, reviews, or social media posts.", + "limitations": "Only supports English and Spanish. Maximum 10,000 characters per request.", + "examples": [ + "Analyze customer review sentiment", + "Detect emotions in user feedback", + "Monitor social media sentiment" + ] + } + } +} +``` + +### 4. Implement Your Tool + +Write your tool's implementation. Here's the example from `@tpmjs/createblogpost`: + +```typescript +// src/index.ts +export interface BlogPostOptions { + title: string; + author: string; + content: string; + tags?: string[]; + format?: 'markdown' | 'mdx'; + excerpt?: string; +} + +export interface BlogPost { + frontmatter: { + title: string; + author: string; + date: string; + tags: string[]; + excerpt?: string; + slug: string; + wordCount: number; + readingTime: number; + }; + content: string; + formattedOutput: string; +} + +export async function createBlogPost(options: BlogPostOptions): Promise { + // Your implementation here + const { title, author, content, tags = [], format = 'markdown', excerpt } = options; + + // Validate inputs + if (!title || !author || !content) { + throw new Error('Title, author, and content are required'); + } + + // Process and return result + return { + frontmatter: { /* ... */ }, + content, + formattedOutput: '...' + }; +} + +export default createBlogPost; +``` + +### 5. Build and Publish + +Build your package and publish to NPM: + +```bash +# Build your package +npm run build + +# Publish to NPM +npm publish --access public +``` + +### 6. Verification + +Your tool will be automatically discovered through: + +1. **Keyword Search** - Runs every 15 minutes, searches NPM for `"tpmjs"` +2. **Changes Feed** - Monitors NPM publishes in real-time (every 2 minutes) + +After publishing, your tool should appear on https://tpmjs.com within 15 minutes! + +You can verify by searching: https://tpmjs.com/api/tools?q=yourpackagename + +## Real Example: @tpmjs/createblogpost + +Here's the complete `package.json` from the published example: + +```json +{ + "name": "@tpmjs/createblogpost", + "version": "0.2.0", + "description": "A tool for creating structured blog posts with AI-generated content", + "type": "module", + "keywords": ["tpmjs", "blog", "content", "ai", "writing"], + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "files": ["dist"], + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "type-check": "tsc --noEmit" + }, + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/ajaxdavis/tpmjs.git", + "directory": "packages/tools/createBlogPost" + }, + "homepage": "https://tpmjs.com", + "license": "MIT", + "tpmjs": { + "category": "text-analysis", + "description": "Creates structured blog posts with customizable frontmatter, content sections, and SEO metadata. Supports multiple output formats including Markdown and MDX.", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title of the blog post", + "required": true + }, + { + "name": "author", + "type": "string", + "description": "The author of the blog post", + "required": true + }, + { + "name": "content", + "type": "string", + "description": "The main content of the blog post", + "required": true + }, + { + "name": "tags", + "type": "string[]", + "description": "Array of tags for categorization", + "required": false, + "default": [] + }, + { + "name": "format", + "type": "'markdown' | 'mdx'", + "description": "Output format for the blog post", + "required": false, + "default": "markdown" + }, + { + "name": "excerpt", + "type": "string", + "description": "Short excerpt or summary of the post", + "required": false + } + ], + "returns": { + "type": "BlogPost", + "description": "A structured blog post object with frontmatter, content, and metadata including slug, wordCount, readingTime, and formattedOutput" + }, + "frameworks": ["vercel-ai", "langchain"], + "aiAgent": { + "useCase": "Use this tool when users need to generate blog posts, articles, or structured content with proper frontmatter and metadata. Ideal for content management systems, static site generators, and documentation sites.", + "limitations": "Does not include AI content generation - you must provide the content. Only formats and structures existing content.", + "examples": [ + "Create a blog post about TypeScript best practices", + "Generate a tutorial post with code examples", + "Format an article with SEO metadata" + ] + } + } +} +``` + +## Field Reference + +### Required Fields (Tier 1 - Minimal) + +| Field | Type | Description | +|-------|------|-------------| +| `category` | string | Tool category (see categories below) | +| `description` | string | Clear description (1-3 sentences) | + +### Optional Fields (Tier 2 - Basic) + +| Field | Type | Description | +|-------|------|-------------| +| `parameters` | array | Array of parameter objects | +| `returns` | object | Return type information | + +### Optional Fields (Tier 3 - Rich) + +| Field | Type | Description | +|-------|------|-------------| +| `env` | array | Required environment variables | +| `frameworks` | array | Compatible frameworks | +| `aiAgent` | object | AI agent integration info | + +### Categories + +Choose one of these for the `category` field: + +- `text-analysis` - NLP, sentiment, summarization +- `code-generation` - Code generation and transformation +- `data-processing` - Data manipulation and transformation +- `image-generation` - Image creation and editing +- `audio-processing` - Audio/speech processing +- `search` - Search and retrieval +- `integration` - Third-party integrations +- `other` - Anything else + +### Environment Variables + +If your tool requires environment variables: + +```json +"env": [ + { + "name": "OPENAI_API_KEY", + "description": "API key for OpenAI services", + "required": true + }, + { + "name": "API_ENDPOINT", + "description": "Custom API endpoint URL", + "required": false, + "default": "https://api.example.com" + } +] +``` + +## Quality Score + +Your tool gets a quality score based on: + +- **Tier**: Rich (1.0) > Basic (0.5) > Minimal (0.25) +- **Downloads**: Logarithmic scale based on monthly NPM downloads +- **GitHub Stars**: Logarithmic scale based on repository stars + +Higher scores = better visibility on tpmjs.com! + +## Tips for Success + +1. **Use descriptive names** - Make your package name clear and searchable +2. **Complete metadata** - Tier 3 (Rich) tools get 4x the base score +3. **Good documentation** - Add documentation URL to package.json homepage or repository fields +4. **Active maintenance** - Regular updates boost download counts +5. **AI-friendly descriptions** - Write the `aiAgent.useCase` field as guidance for AI agents + +## Testing Locally + +Before publishing, you can validate your `tpmjs` field using the validation schema: + +```bash +# In the tpmjs monorepo +pnpm --filter=@tpmjs/types test +``` + +Or manually check the structure matches the examples above. + +## Troubleshooting + +**Tool not appearing after 15 minutes?** +- Check that you added `"tpmjs"` to keywords +- Verify your `tpmjs` field has required fields (category, description) +- Check the NPM package is public: `npm view yourpackage` + +**Tool showing as "minimal" tier?** +- Add `parameters` and `returns` fields for Basic tier +- Add all Rich tier fields for maximum visibility + +**Want to force a sync?** +You can manually trigger a sync (requires auth): +```bash +curl -X POST "https://tpmjs.com/api/sync/keyword" \ + -H "Authorization: Bearer YOUR_CRON_SECRET" +``` + +## Support + +Questions or issues? +- File an issue: https://github.com/ajaxdavis/tpmjs/issues +- Check the API: https://tpmjs.com/api/tools diff --git a/IMPLEMENTATION_CHECKLIST.md b/IMPLEMENTATION_CHECKLIST.md deleted file mode 100644 index f5afd62..0000000 --- a/IMPLEMENTATION_CHECKLIST.md +++ /dev/null @@ -1,782 +0,0 @@ -# TPMJS NPM Registry - Implementation Checklist - -> **Reference:** See [NPM_MIRROR.md](./NPM_MIRROR.md) for complete architecture details - -**Stack Decision:** Vercel + Neon + Vercel Cron (polling-based sync) - ---- - -## 🎯 Implementation Strategy - -### Architecture Simplification - -**Original Plan (NPM_MIRROR.md):** -- Separate Node.js sync service with persistent changes feed connection -- Self-hosted PostgreSQL -- More complex deployment - -**Revised Plan (This Checklist):** -- All-in-one Next.js app on Vercel -- Neon Postgres (serverless) -- Vercel Cron for sync jobs (polling-based, no persistent connections) -- Simpler, faster to ship - -### Why This Approach? - -✅ **Simpler Infrastructure** -- One deployment (Vercel) -- Managed database (Neon) -- Built-in cron (Vercel Cron) - -✅ **Lower Cost** -- No separate sync service hosting -- Neon free tier generous -- Vercel free/hobby tier sufficient for MVP - -✅ **Same Functionality** -- Poll NPM changes feed every 1-2 minutes (effectively real-time) -- All discovery features from NPM_MIRROR.md maintained -- Quality scoring, validation, etc. all work the same - ---- - -## 📋 Phase 1: Foundation (Week 1) - -**Goal:** Set up database, types, and NPM client - -### 1.1 Database Setup - -- [ ] **Create Neon project** - - Go to https://neon.tech/ - - Create new project - - Save connection string - -- [ ] **Create `packages/db` package** - ```bash - mkdir -p packages/db - cd packages/db - pnpm init - pnpm add prisma @prisma/client - pnpm add -D typescript @types/node - ``` - -- [ ] **Initialize Prisma** - ```bash - npx prisma init - ``` - -- [ ] **Create Prisma schema** - - Copy schema from NPM_MIRROR.md Database Design section - - File: `packages/db/prisma/schema.prisma` - - Include all three models: `Tool`, `SyncCheckpoint`, `SyncLog` - -- [ ] **Add database URL to `.env`** - ```env - DATABASE_URL="postgresql://..." - ``` - -- [ ] **Run first migration** - ```bash - npx prisma migrate dev --name init - npx prisma generate - ``` - -- [ ] **Create Prisma client singleton** - - File: `packages/db/src/client.ts` - ```typescript - import { PrismaClient } from '@prisma/client'; - - const globalForPrisma = globalThis as unknown as { - prisma: PrismaClient | undefined; - }; - - export const prisma = globalForPrisma.prisma ?? new PrismaClient(); - - if (process.env.NODE_ENV !== 'production') { - globalForPrisma.prisma = prisma; - } - ``` - -- [ ] **Export from package** - - File: `packages/db/src/index.ts` - ```typescript - export { prisma } from './client'; - export * from '@prisma/client'; - ``` - -- [ ] **Update package.json** - ```json - { - "name": "@tpmjs/db", - "main": "./src/index.ts", - "types": "./src/index.ts" - } - ``` - -- [ ] **Seed initial sync state** - ```sql - INSERT INTO sync_checkpoints (source, checkpoint) - VALUES - ('changes-feed', '{"sequence": 0}'::jsonb), - ('keyword-search', '{"lastRun": null}'::jsonb), - ('metrics', '{"lastRun": null}'::jsonb) - ON CONFLICT (source) DO NOTHING; - ``` - -**Verification:** -```bash -cd packages/db -npx prisma studio # Should open DB browser with empty tables -``` - ---- - -### 1.2 Types Package - -**Reference:** See NPM_MIRROR.md "The 'tpmjs' Field Schema" section - -- [ ] **Update `packages/types/src/tool.ts`** - - Add `TpmjsMinimalSchema` with Zod - - Add `TpmjsRichSchema` extending minimal - - Export both schemas and inferred types - -- [ ] **Create validation helper** - - File: `packages/types/src/validator.ts` - ```typescript - export function validateTpmjsField(tpmjs: unknown): { - valid: boolean; - tier: 'minimal' | 'rich' | null; - data?: unknown; - errors?: ZodError[]; - } - ``` - -- [ ] **Update exports** - - File: `packages/types/src/index.ts` - - Export all schemas and validators - -**Verification:** -```typescript -import { validateTpmjsField } from '@tpmjs/types'; - -const result = validateTpmjsField({ - category: 'web-scraping', - description: 'Test description that is long enough', - example: 'const x = await tool.test()' -}); - -console.log(result); // Should be { valid: true, tier: 'minimal', ... } -``` - ---- - -### 1.3 NPM Client Package - -**Reference:** See NPM_MIRROR.md "NPM Integration Strategy" section - -- [ ] **Create `packages/npm-client`** - ```bash - mkdir -p packages/npm-client/src - cd packages/npm-client - pnpm init - pnpm add zod - pnpm add -D typescript @types/node - ``` - -- [ ] **Implement changes feed client** - - File: `packages/npm-client/src/changes.ts` - ```typescript - export async function fetchChanges(since: string, limit = 100): Promise<{ - results: Array<{ id: string; seq: string }>; - lastSeq: string; - }> - ``` - - Use endpoint: `https://replicate.npmjs.com/registry/_changes` - - Poll-based (no EventSource needed) - -- [ ] **Implement keyword search** - - File: `packages/npm-client/src/search.ts` - ```typescript - export async function searchByKeyword( - keyword: string, - size = 250, - from = 0 - ): Promise> - ``` - - Use endpoint: `/-/v1/search?text=keywords:${keyword}` - -- [ ] **Implement package metadata fetcher** - - File: `packages/npm-client/src/package.ts` - ```typescript - export async function fetchPackageMetadata(packageName: string): Promise<{ - name: string; - 'dist-tags': { latest: string }; - versions: Record; - time: Record; - } | null> - ``` - - Use endpoint: `https://registry.npmjs.org/${packageName}` - -- [ ] **Implement download stats** - - File: `packages/npm-client/src/stats.ts` - ```typescript - export async function fetchDownloadStats( - packageName: string - ): Promise - ``` - - Use endpoint: `https://api.npmjs.org/downloads/point/last-month/${packageName}` - -- [ ] **Implement GitHub stats** (optional Phase 4) - - File: `packages/npm-client/src/github.ts` - ```typescript - export async function fetchGithubStars( - repoUrl: string - ): Promise - ``` - -- [ ] **Add rate limiting helper** - - File: `packages/npm-client/src/rate-limiter.ts` - - Simple delay between requests - - Exponential backoff on 429 - -- [ ] **Export all functions** - - File: `packages/npm-client/src/index.ts` - -**Verification:** -```typescript -import { fetchPackageMetadata } from '@tpmjs/npm-client'; - -const pkg = await fetchPackageMetadata('express'); -console.log(pkg?.name); // Should print 'express' -``` - ---- - -## 📋 Phase 2: Core API Routes (Week 2) - -**Goal:** Build public API for searching/listing tools - -### 2.1 Tool Search/List API - -**Reference:** See NPM_MIRROR.md "API Routes" section - -- [ ] **Create `apps/web/src/app/api/tools/route.ts`** - - Implement `GET` handler - - Query params: `q`, `category`, `official`, `limit`, `offset` - - Use Prisma to query `tools` table - - Return paginated results with metadata - -- [ ] **Add full-text search** - - Use Postgres `ts_vector` for search - - Or simple `ILIKE` for MVP - - Search across: `npmPackageName`, `description`, `tags` - -- [ ] **Add filtering** - - By `category` - - By `isOfficial` - - By `tier` (optional) - -- [ ] **Add sorting** - - Default: `qualityScore DESC`, `npmDownloadsLastMonth DESC` - - Optional: `createdAt DESC`, `npmPackageName ASC` - -**Verification:** -```bash -curl "http://localhost:3001/api/tools?q=web&limit=5" -# Should return JSON with tools array and pagination -``` - ---- - -### 2.2 Tool Detail API - -- [ ] **Create `apps/web/src/app/api/tools/[id]/route.ts`** - - Implement `GET` handler - - Accept ID or package name - - Return full tool details - -**Verification:** -```bash -curl "http://localhost:3001/api/tools/1" -# Should return single tool object -``` - ---- - -### 2.3 Validation API - -- [ ] **Create `apps/web/src/app/api/tools/validate/route.ts`** - - Implement `POST` handler - - Accept JSON body with `tpmjs` field - - Use `@tpmjs/types` validator - - Return validation result with errors - -**Verification:** -```bash -curl -X POST http://localhost:3001/api/tools/validate \ - -H "Content-Type: application/json" \ - -d '{"category":"web-scraping","description":"Test tool for validation","example":"const x = await tool.test()"}' -# Should return { valid: true, tier: "minimal" } -``` - ---- - -### 2.4 Stats API - -- [ ] **Create `apps/web/src/app/api/stats/route.ts`** - - Implement `GET` handler - - Aggregate counts by category - - Total tools, official tools, etc. - -**Verification:** -```bash -curl "http://localhost:3001/api/stats" -# Should return { totalTools: 0, officialTools: 0, categories: {} } -``` - ---- - -## 📋 Phase 3: Sync Workers (Week 2-3) - -**Goal:** Implement automatic NPM package discovery - -**Reference:** See NPM_MIRROR.md "NPM Integration Strategy" section - -### 3.1 Changes Feed Sync - -- [ ] **Create `apps/web/src/app/api/sync/changes/route.ts`** - -- [ ] **Implement POST handler** - ```typescript - export async function POST(request: Request) { - // 1. Verify CRON_SECRET header - // 2. Get last sequence from sync_checkpoints - // 3. Fetch changes from NPM (limit 100-500) - // 4. For each change: - // - Fetch package metadata - // - Check for tpmjs field - // - Validate with @tpmjs/types - // - Upsert to tools table - // - Log to sync_logs - // 5. Update checkpoint with new sequence - // 6. Return summary (processed, skipped, errors) - } - ``` - -- [ ] **Add secret protection** - ```typescript - const secret = request.headers.get('x-cron-secret'); - if (secret !== process.env.CRON_SECRET) { - return new Response('Unauthorized', { status: 401 }); - } - ``` - -- [ ] **Add timeout protection** - - Limit processing to 50 packages per run - - Or 50 seconds max execution time - - Save checkpoint frequently - -- [ ] **Add error handling** - - Try/catch around each package - - Log errors to `sync_logs` - - Continue processing other packages - -**Verification:** -```bash -curl -X POST http://localhost:3001/api/sync/changes \ - -H "x-cron-secret: your-secret" -# Should process changes and return summary -``` - ---- - -### 3.2 Keyword Search Sync - -- [ ] **Create `apps/web/src/app/api/sync/keyword/route.ts`** - -- [ ] **Implement POST handler** - ```typescript - export async function POST(request: Request) { - // 1. Verify CRON_SECRET header - // 2. Search NPM for keyword 'tpmjs-tool' - // 3. For each result: - // - Fetch package metadata - // - Validate tpmjs field - // - Upsert with isOfficial=true - // - Log to sync_logs - // 4. Update checkpoint - // 5. Return summary - } - ``` - -- [ ] **Handle pagination** - - NPM allows `size` up to 250 - - May need multiple requests for all results - -**Verification:** -```bash -curl -X POST http://localhost:3001/api/sync/keyword \ - -H "x-cron-secret: your-secret" -# Should search and process keyword packages -``` - ---- - -### 3.3 Metrics Sync (Phase 4) - -- [ ] **Create `apps/web/src/app/api/sync/metrics/route.ts`** - -- [ ] **Implement POST handler** - ```typescript - export async function POST(request: Request) { - // 1. Verify CRON_SECRET - // 2. Select tools to update (recent, popular, or sample) - // 3. For each tool: - // - Fetch NPM download stats - // - Fetch GitHub stars (if repo exists) - // - Calculate quality score - // - Update tools table - // 4. Update checkpoint - // 5. Return summary - } - ``` - -**Verification:** -```bash -curl -X POST http://localhost:3001/api/sync/metrics \ - -H "x-cron-secret: your-secret" -# Should update metrics for tools -``` - ---- - -### 3.4 Vercel Cron Configuration - -- [ ] **Add to `vercel.json`** - ```json - { - "crons": [ - { - "path": "/api/sync/changes", - "schedule": "*/2 * * * *" - }, - { - "path": "/api/sync/keyword", - "schedule": "*/15 * * * *" - }, - { - "path": "/api/sync/metrics", - "schedule": "0 * * * *" - } - ] - } - ``` - -- [ ] **Set up environment variables in Vercel** - - `DATABASE_URL` - Neon connection string - - `CRON_SECRET` - Generate random secret - - `NPM_REGISTRY_URL` - https://registry.npmjs.org - - `NPM_CHANGES_URL` - https://replicate.npmjs.com/registry - ---- - -## 📋 Phase 4: Frontend Integration (Week 3) - -**Goal:** Replace mock data with real API calls - -### 4.1 Update Tool Listing Page - -- [ ] **Update `apps/web/src/app/tools/page.tsx`** - - Remove mock data import - - Fetch from `/api/tools` - - Add loading state - - Add error handling - -- [ ] **Add search functionality** - - Search input component - - Debounced API calls - - Update URL with search params - -- [ ] **Add category filter** - - Category dropdown/pills - - Filter API calls by category - -- [ ] **Add pagination** - - Next/previous buttons - - Or infinite scroll - -**Verification:** -- Visit http://localhost:3001/tools -- Should show real tools from database -- Search should work -- Filters should work - ---- - -### 4.2 Update Tool Detail Page - -- [ ] **Update `apps/web/src/app/tools/[id]/page.tsx`** - - Fetch from `/api/tools/[id]` - - Display all tool metadata - - Show rich tier fields if available - -- [ ] **Add install instructions** - - npm install command - - Usage example from `tpmjs.example` - -- [ ] **Add links** - - NPM package page - - GitHub repository - - Documentation - - Playground (if available) - -**Verification:** -- Visit http://localhost:3001/tools/some-package -- Should show full tool details - ---- - -### 4.3 Update Homepage - -**Reference:** See NPM_MIRROR.md for stats display - -- [ ] **Update stats in hero section** - - Fetch from `/api/stats` - - Show real tool count - - Show category breakdown - -- [ ] **Update live metrics** - - Real download counts - - Real tool counts - - Update frequently (client-side polling or static) - -**Verification:** -- Visit http://localhost:3001 -- Stats should be real, not mock - ---- - -## 📋 Phase 5: Testing & Polish (Week 4) - -### 5.1 Create Test Packages - -- [ ] **Publish 3-5 real NPM packages with `tpmjs` field** - - At least one with minimal tier - - At least one with rich tier - - Use `tpmjs-tool` keyword for official listing - -- [ ] **Verify automatic discovery** - - Wait for next sync run - - Check they appear in database - - Check they appear on website - ---- - -### 5.2 Documentation - -- [ ] **Create docs section** - - `apps/web/src/app/docs/page.tsx` - - Getting started guide - - Schema reference - - Examples - -- [ ] **Add validation playground** - - `apps/web/src/app/docs/validate/page.tsx` - - Form to test `tpmjs` field - - Real-time validation feedback - - Uses `/api/tools/validate` - ---- - -### 5.3 CLI Tool (Optional) - -- [ ] **Create `packages/cli`** - - Command: `tpmjs validate` - - Reads local `package.json` - - Validates `tpmjs` field - - Calls `/api/tools/validate` - ---- - -### 5.4 Monitoring - -- [ ] **Add health endpoint** - - `apps/web/src/app/api/health/route.ts` - - Check database connectivity - - Check sync status (last run times) - -- [ ] **Set up uptime monitoring** - - Use UptimeRobot or Better Stack - - Monitor `/api/health` - - Alert if down or sync stale - -- [ ] **Add error tracking** - - Set up Sentry for Next.js - - Track API errors - - Track sync errors - -**Verification:** -```bash -curl http://localhost:3001/api/health -# Should return { status: "ok", db: "ok", sync: { ... } } -``` - ---- - -## 📋 Phase 6: Launch (Week 5) - -### 6.1 Pre-Launch Checklist - -- [ ] **Database** - - ✓ Prisma schema deployed - - ✓ Indexes created - - ✓ Backups enabled in Neon - -- [ ] **Environment Variables** - - ✓ All secrets in Vercel - - ✓ `CRON_SECRET` set - - ✓ `DATABASE_URL` set - -- [ ] **API Routes** - - ✓ All endpoints working - - ✓ Rate limiting added (optional) - - ✓ Error handling complete - -- [ ] **Sync Workers** - - ✓ Changes feed running every 2 min - - ✓ Keyword search running every 15 min - - ✓ Checkpoints updating correctly - -- [ ] **Frontend** - - ✓ All pages loading real data - - ✓ Search working - - ✓ Mobile responsive - -- [ ] **Monitoring** - - ✓ Health check endpoint live - - ✓ Uptime monitoring active - - ✓ Error tracking active - ---- - -### 6.2 Launch Steps - -- [ ] **Deploy to production** - ```bash - git push origin main - # Vercel auto-deploys - ``` - -- [ ] **Verify deployment** - - Check all pages load - - Check API endpoints work - - Check cron jobs run - -- [ ] **Publish announcement** - - Tweet/post about TPMJS - - Explain how to add `tpmjs` field - - Share validation endpoint - -- [ ] **Monitor for 24 hours** - - Watch error logs - - Check sync is working - - Fix any issues - ---- - -## 📋 Phase 7: Post-Launch (Ongoing) - -### Enhancements - -- [ ] **Semantic search** - - Add embeddings to tools table - - Use OpenAI/Cohere for semantic search - -- [ ] **Usage analytics** - - Track tool views - - Track search queries - - Popular tools widget - -- [ ] **Tool recommendations** - - "Similar tools" section - - "You might also like" - -- [ ] **GitHub Actions** - - Validate `tpmjs` field in CI - - Auto-comment validation results - -- [ ] **NPM webhooks** - - Listen for package updates - - Immediate sync (instead of polling) - ---- - -## 🎯 Success Criteria - -Check these metrics after launch: - -### Week 1 -- [ ] 10+ official tools listed -- [ ] All sync jobs running successfully -- [ ] Zero API errors - -### Month 1 -- [ ] 50+ official tools -- [ ] 5+ package authors using TPMJS -- [ ] <200ms API response time (p95) - -### Month 3 -- [ ] 200+ tools -- [ ] 20+ package authors -- [ ] Community contributions - -### Month 6 -- [ ] 1000+ tools -- [ ] 50+ active package authors -- [ ] Established as go-to AI tool registry - ---- - -## 🔄 Ongoing Maintenance - -Weekly: -- [ ] Check sync logs for errors -- [ ] Review new tools for quality -- [ ] Update documentation - -Monthly: -- [ ] Database optimization (indexes, vacuum) -- [ ] Review and adjust quality scoring -- [ ] Update NPM_MIRROR.md with learnings - ---- - -## 📚 Key Documents - -**Read frequently during implementation:** - -1. **NPM_MIRROR.md** - Complete architecture reference - - Database schema - - API specifications - - Validation rules - - Quality scoring - - All examples - -2. **This checklist** - Implementation order and verification steps - -3. **Plan file** - `.claude/plans/goofy-inventing-stearns.md` - Detailed planning notes - ---- - -## 🚀 Ready to Build - -This checklist is your complete implementation guide. Work through it phase by phase, checking off items as you go. - -**Start with Phase 1, Step 1.1** and work sequentially. Each step has verification instructions to ensure it's working before moving on. - -Good luck! 🎉 diff --git a/LAUNCH_REVIEW.md b/LAUNCH_REVIEW.md new file mode 100644 index 0000000..38d77b8 --- /dev/null +++ b/LAUNCH_REVIEW.md @@ -0,0 +1,331 @@ +# TPMJS Launch Review & Checklist + +**STATUS: COMPLETED** - All critical issues have been fixed. + +A comprehensive review of all public-facing content for Hacker News launch readiness. + +--- + +## Executive Summary + +**Overall Readiness: 7/10 - Needs Work Before Launch** + +The website has excellent technical content and professional design, but fails the "5-second test" - a first-time visitor cannot quickly understand what TPMJS is or why they need it. The documentation is strong for existing users but assumes too much prior knowledge about AI agents and tooling. + +### Critical Issues (Must Fix) +1. **Landing page doesn't explain what TPMJS is** - Hero section uses jargon without definition +2. **"Tool" vs "Package" never defined** - Core concepts assumed, not explained +3. **Knowledge gaps** - Assumes familiarity with AI agents, Zod, semantic search +4. **Category inconsistency** - HOW_TO_PUBLISH and NPM_MIRROR have different category lists +5. **NPM_MIRROR.md conflicts with other docs** - Appears outdated, creates confusion + +### What's Working Well +- Publishing guide (HOW_TO_PUBLISH_A_TOOL.md) is excellent +- How It Works page has great technical depth +- Developer testimonials are concrete with real metrics +- No obvious AI-generated language on website +- Code examples are practical and well-placed + +--- + +## The 5-Second Test: FAILED + +**Question:** Can a developer understand what TPMJS is within 5 seconds of landing on the homepage? + +**Answer:** No. + +### What They See First +``` +TOOL REGISTRY FOR AI AGENTS +Discover, share, and integrate tools that give your agents superpowers +``` + +### What's Missing +- What is a "tool" in this context? +- What is an "AI agent"? +- Why would I use this vs npm directly? +- Is this a package manager? A marketplace? An SDK? + +### The "Aha Moment" is Unclear +A visitor still doesn't know: +- WHO should use TPMJS (tool builders? agent developers? both?) +- WHEN they would use it (at development time? runtime?) +- HOW it differs from regular npm packages +- WHY they can't just install packages normally + +--- + +## Page-by-Page Clarity Ratings + +| Page | Clarity | Human Feel | Issues | +|------|---------|------------|--------| +| **Landing Page** | 5/10 | Yes | No 5-second explanation, jargon-heavy | +| **Hero Section** | 3/10 | Yes | "Tool registry" undefined, circular language | +| **Problem Section** | 7/10 | Yes | Best section - concrete pain points | +| **Vision Section** | 5/10 | Yes | "Semantic search" unexplained | +| **Developer Stories** | 7/10 | Yes | Good metrics, but code unexplained | +| **Publish Section** | 6/10 | Yes | Assumes visitor is a tool builder | +| **How It Works** | 9/10 | Excellent | Minor density issues | +| **FAQ** | 8/10 | Yes | Missing some common questions | +| **Publish Guide** | 8.5/10 | Yes | Tier system could be clearer upfront | +| **Spec Page** | 8.5/10 | Yes | Assumes Zod/AI SDK knowledge | +| **Docs Page** | 9/10 | Excellent | Overwhelming length | +| **SDK Page** | 8.5/10 | Yes | Assumes Vercel AI SDK familiarity | +| **Privacy** | 8/10 | Yes | Hardcoded email address | +| **Terms** | 8/10 | Yes | Hardcoded date | + +--- + +## Documentation Clarity Ratings + +| Document | Clarity | Necessary | Critical Issues | +|----------|---------|-----------|-----------------| +| README.md | 8/10 | YES | Missing "what is TPMJS" explanation | +| HOW_TO_PUBLISH_A_TOOL.md | 9/10 | YES | Minor - excellent overall | +| DEPLOYMENT.md | 8/10 | YES | Confusing exit code explanation | +| QUALITY-GATES.md | 7/10 | OPTIONAL | Could merge into README | +| MANUAL_TOOLS.md | 8.5/10 | YES | Good for maintainers | +| NPM_MIRROR.md | 6.5/10 | **REMOVE** | **Conflicts with other docs, appears outdated** | + +--- + +## Knowledge Gaps (Things Visitors Won't Understand) + +### Not Explained Anywhere +1. **What is an "AI Agent"?** - The entire site assumes you know this +2. **What is a "Tool" vs a "Package"?** - Used interchangeably, never defined +3. **Why semantic search matters** - Just says "semantic" without explaining benefit +4. **What frameworks are supported** - Mentioned in FAQ but not prominently +5. **The Package → Tool relationship** - Can one package have multiple tools? + +### Assumed Technical Knowledge +- Zod schemas (used throughout, never introduced) +- AI SDK tool format (referenced as "standard" but what standard?) +- esm.sh and Deno sandboxing (mentioned in How It Works) +- BM25 ranking algorithm (mentioned in docs) + +### Missing Use Cases +- "Use TPMJS when..." section doesn't exist +- No comparison to alternatives (why not just npm?) +- No "before/after" showing the problem solved + +--- + +## Human-Written Assessment + +### Reads Like Human: YES ✓ +- Developer stories use specific metrics ("500 lines to 3") +- Technical explanations show genuine understanding +- Problem section addresses real pain points +- No buzzword soup or meaningless marketing phrases + +### Minor AI-Sounding Phrases Found +| Location | Phrase | Issue | +|----------|--------|-------| +| NPM_MIRROR.md:7 | "automated NPM-integrated registry" | Marketing speak | +| NPM_MIRROR.md:27 | "✨ Listed automatically" | Emoji in technical doc | +| NPM_MIRROR.md:500 | "Built with ❤️" | Remove emoji | +| HOW_TO_PUBLISH:389 | "AI-friendly descriptions" | Vague - what makes it "AI-friendly"? | +| Vision Section | "gives agents superpowers" | Metaphor without substance | + +--- + +## Critical Inconsistencies Found + +### Category Lists Don't Match +**HOW_TO_PUBLISH_A_TOOL.md says:** +``` +text-analysis, code-generation, data-processing, +image-generation, audio-processing, search, integration, other +``` + +**NPM_MIRROR.md says:** +``` +web-scraping, data-processing, file-operations, communication, +database, api-integration, image-processing, text-analysis, +automation, ai-ml, security, monitoring +``` + +**These are completely different!** Which is correct? + +### Quality Score Formula Conflicts +- HOW_TO_PUBLISH: "Tier: Rich (1.0) > Basic (0.5) > Minimal (0.25)" +- MANUAL_TOOLS: "Rich tier tools get 4x quality score multiplier" +- NPM_MIRROR: Different formula entirely + +### Field Names Inconsistent +- `exportName` used in MANUAL_TOOLS but not in HOW_TO_PUBLISH +- Deprecated fields (`parameters`, `returns`) mentioned but unclear when deprecated + +--- + +## Hardcoded Values to Fix + +| File | Issue | Line | +|------|-------|------| +| FAQ, Privacy, Terms | `thomasalwyndavis@gmail.com` hardcoded | Multiple | +| Privacy, Terms | Date "December 14, 2025" hardcoded | Multiple | +| Changelog page | Package list hardcoded in code | ~95-110 | +| Developer Stories | Fictional company names (Support.ai, DocFlow) | homePageData.ts | + +--- + +## Launch Checklist + +### Must Fix Before Launch (Blocking) - ALL DONE ✓ + +- [x] **Rewrite hero section** to explain TPMJS in one sentence + - Current: "TOOL REGISTRY FOR AI AGENTS" + - Suggested: "TPMJS lets AI agents discover and use npm packages as tools at runtime. Publish once to npm, get discovered automatically." + +- [x] **Add "What is TPMJS?" section** to landing page + - Define: What is an AI agent? + - Define: What is a "tool" in this context? + - Explain: Why not just use npm directly? + - Show: 3-step "how it works" visual + +- [x] **Reconcile category lists** between docs (deleted NPM_MIRROR.md) + - Pick one canonical list + - Update all docs to match + - Add categories to types package + +- [x] **Delete or archive NPM_MIRROR.md** (deleted) + - Conflicts with HOW_TO_PUBLISH + - Appears to be old design doc, not current state + - Move to `/docs/internal/` if historical value + +- [x] **Fix hardcoded values** (emails → hello@tpmjs.com, dates → December 2024) + - Email addresses → environment variable + - Dates → dynamic or remove + - Package lists → generated from filesystem + +### Should Fix (High Priority) - MOSTLY DONE + +- [x] **Add "Use TPMJS when..." section** to landing page (covered in "What is TPMJS?" section) + - List concrete scenarios: "Building a chatbot that needs web access" + - "Agent that processes different file formats" + - "Tool that should be discoverable by other agents" + +- [x] **Explain Package vs Tool distinction** (covered in "What is TPMJS?" section) + - Add glossary or definitions section + - Clarify: 1 package can have N tools + +- [x] **Add framework compatibility section** (mentioned in hero and publish sections) + - Which AI frameworks work with TPMJS? + - Are there adapters needed? + - Show code for each framework + +- [ ] **Simplify developer stories code** + - Current code snippet unexplained: + ```js + const agent = new Agent({ tools: await tpmjs.search(...) }) + ``` + - Add: Where does `Agent` come from? What's happening here? + +- [x] **Add README context** (completely rewritten with clear explanation) + - What is TPMJS for? + - Link to tpmjs.com + - Explain discovery mechanism + +### Nice to Have (Post-Launch) + +- [ ] Add video walkthrough (30-60 seconds) +- [ ] Interactive playground link from homepage +- [ ] "Compare to alternatives" section +- [ ] Case studies with real company names +- [ ] Quick links sidebar for docs page +- [ ] Status badges for each quality gate + +--- + +## Recommended Hero Section Rewrite + +### Current +``` +TOOL REGISTRY FOR AI AGENTS +Discover, share, and integrate tools that give your agents superpowers +The registry for AI tools +``` + +### Suggested +``` +MAKE YOUR AI AGENT SMARTER +TPMJS connects your AI agent to 2,500+ npm packages at runtime. +No config files. No manual imports. Just describe what you need. + +"Find me a tool that can scrape websites" → Your agent gets web-scraper +"I need to process markdown" → Your agent gets markdown-formatter + +Publish your npm package → It's discoverable by every AI agent in 15 minutes. +``` + +This version: +- Explains what it DOES (connects agents to npm packages) +- Shows HOW it works (natural language → tool) +- States the VALUE (no config, automatic discovery) +- Gives concrete examples + +--- + +## Recommended "What is TPMJS?" Section + +Add after hero, before featured tools: + +```markdown +## What is TPMJS? + +**The Problem:** AI agents need tools (web scraping, file processing, API calls) +but developers must manually configure each one. As the ecosystem grows, +this becomes unmanageable. + +**The Solution:** TPMJS is a registry that automatically discovers npm packages +designed for AI agents. Agents can search for tools by description and load them +at runtime. + +**For Tool Builders:** Add `tpmjs` keyword to your package.json. +Your tool appears on tpmjs.com within 15 minutes. + +**For Agent Developers:** Use semantic search to find tools: +```javascript +import { searchRegistry } from '@tpmjs/sdk'; +const tools = await searchRegistry('send emails and slack messages'); +// Returns: email-sender, slack-notifier, ... +``` + +**One registry. Thousands of tools. Zero configuration.** +``` + +--- + +## Final Assessment + +### Ready for Launch? +**Not yet.** The core product is solid but messaging fails first-time visitors. + +### Estimated Fixes +- Hero rewrite: 30 minutes +- "What is TPMJS?" section: 1 hour +- Category reconciliation: 1 hour +- Hardcoded values: 30 minutes +- README updates: 30 minutes +- NPM_MIRROR cleanup: 15 minutes + +**Total: ~4 hours of work** + +### After Fixes +The site will be launch-ready. The technical content is excellent - it just needs a better front door. + +--- + +## Appendix: Positive Highlights + +Things that are already great and should NOT change: + +1. **How It Works page** - Excellent technical depth, clear structure +2. **Publishing guide** - Best-in-class documentation, real examples +3. **Problem section** - Concrete pain points, relatable issues +4. **Spec page** - Clear field reference, good validation info +5. **SDK documentation** - Quick start is excellent +6. **Code examples throughout** - Practical, copy-pasteable +7. **Visual design** - Clean, professional, developer-focused +8. **Quality scoring explanation** - Transparent, well-documented diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7d72b03 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024-2025 TPMJS + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/MANUAL_TOOLS.md b/MANUAL_TOOLS.md new file mode 100644 index 0000000..fe27e30 --- /dev/null +++ b/MANUAL_TOOLS.md @@ -0,0 +1,293 @@ +# Manual Tools Registry + +## Overview + +This system allows TPMJS to include high-quality tools that don't follow the standard `tpmjs` field specification in their package.json. These tools are manually curated and synced to the database. + +## Why Manual Tools? + +Some excellent tools (like Vercel's code execution, Exa search, Firecrawl, etc.) don't include the `tpmjs` field in their package.json. Rather than wait for these package maintainers to adopt the spec, we manually curate metadata for these tools. + +## Architecture + +### Files + +1. **`manual-tools.ts`** - The registry of manually curated tools +2. **`sync-manual-tools.ts`** - Script to sync manual tools to database +3. **`MANUAL_TOOLS.md`** - This documentation + +### How It Works + +1. **Manual Tool Registry** (`manual-tools.ts`) + - Exports a `manualTools` array with metadata for each tool + - Each entry includes npm package name, export name, category, description, parameters, etc. + - Follows the same schema as the standard `tpmjs` field + +2. **Sync Script** (`sync-manual-tools.ts`) + - Fetches latest package metadata from npm + - Combines npm metadata with manual metadata + - Upserts Package + Tool records to database + - Marks tools with `discoveryMethod: 'manual'` + +3. **Database Storage** + - Manual tools stored in same `packages` and `tools` tables as auto-discovered tools + - No special handling needed in API or frontend + - `discoveryMethod: 'manual'` field distinguishes them + +## Adding a New Manual Tool + +### Step 1: Add to Registry + +Edit `manual-tools.ts` and add a new entry: + +```typescript +{ + npmPackageName: 'example-package', + category: 'search', + frameworks: ['vercel-ai'], + exportName: 'exampleTool', + description: 'A clear, concise description of what this tool does', + + // Optional but recommended for 'rich' tier + parameters: [ + { + name: 'query', + type: 'string', + description: 'The search query', + required: true, + }, + ], + + returns: { + type: 'array', + description: 'Array of search results', + }, + + aiAgent: { + useCase: 'Use when you need to search for X', + limitations: 'Rate limits apply', + examples: [ + 'Search for current news', + 'Find specific information', + ], + }, + + // Environment variables + env: [ + { + name: 'EXAMPLE_API_KEY', + description: 'API key for the service', + required: true, + }, + ], + + // Additional metadata + tags: ['search', 'web'], + docsUrl: 'https://example.com/docs', + apiKeyUrl: 'https://example.com/api-keys', + websiteUrl: 'https://example.com', +} +``` + +### Step 2: Run Sync Script + +```bash +# From repository root +pnpm tsx sync-manual-tools.ts +``` + +This will: +1. Fetch the package from npm +2. Create/update Package record +3. Create/update Tool record(s) +4. Set `discoveryMethod: 'manual'` + +### Step 3: Verify + +Check that the tool appears on tpmjs.com: + +```bash +# Start dev server +pnpm dev --filter=@tpmjs/web + +# Visit http://localhost:3000/tool/tool-search +# Search for your package name +``` + +## Multi-Tool Packages + +If a package exports multiple tools, add multiple entries with the same `npmPackageName` but different `exportName`: + +```typescript +{ + npmPackageName: 'firecrawl-aisdk', + exportName: 'scrapeTool', + description: 'Scrape websites...', + // ... +}, +{ + npmPackageName: 'firecrawl-aisdk', + exportName: 'searchTool', + description: 'Search the web...', + // ... +}, +{ + npmPackageName: 'firecrawl-aisdk', + exportName: 'crawlTool', + description: 'Crawl entire websites...', + // ... +}, +``` + +## Tier Calculation + +Tools are automatically assigned a tier: + +- **Rich tier**: Has `parameters` OR `returns` OR `aiAgent` fields +- **Minimal tier**: Only has basic metadata + +Rich tier tools get 4x quality score multiplier, so add detailed metadata when possible. + +## Maintenance + +### Updating Manual Tools + +1. Edit the entry in `manual-tools.ts` +2. Run `pnpm tsx sync-manual-tools.ts` +3. The upsert will update existing records + +### Removing Manual Tools + +1. Remove the entry from `manual-tools.ts` +2. Manually delete from database OR wait for metrics sync to mark as stale + +### Version Updates + +The sync script automatically fetches the latest version from npm unless you specify `npmVersion` in the manual tool entry. + +## Production Deployment + +### Option 1: Manual Sync on Deploy + +Add to your deployment workflow: + +```yaml +# .github/workflows/deploy.yml +- name: Sync manual tools + run: pnpm tsx sync-manual-tools.ts + env: + DATABASE_URL: ${{ secrets.DATABASE_URL }} +``` + +### Option 2: Scheduled Sync + +Create a cron job or GitHub Action to sync periodically: + +```yaml +# .github/workflows/sync-manual.yml +name: Sync Manual Tools + +on: + schedule: + - cron: '0 0 * * 0' # Weekly on Sunday + workflow_dispatch: # Manual trigger + +jobs: + sync: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v2 + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'pnpm' + - run: pnpm install + - run: pnpm tsx sync-manual-tools.ts + env: + DATABASE_URL: ${{ secrets.DATABASE_URL }} +``` + +### Option 3: API Endpoint + +Create a sync endpoint (similar to keyword/changes sync): + +```typescript +// apps/web/src/app/api/sync/manual/route.ts +import { manualTools } from '@/manual-tools'; +// ... sync logic + +export async function POST(request: Request) { + // Verify CRON_SECRET + // Run manual sync + // Return results +} +``` + +## Currently Included Manual Tools + +As of this documentation: + +- **ai-sdk-tool-code-execution** - Vercel Sandbox code execution +- **@exalabs/ai-sdk** - Exa web search +- **@parallel-web/ai-sdk-tools** - Parallel search and extraction (2 tools) +- **ctx-zip** - MCP + Vercel Sandbox integration +- **@perplexity-ai/ai-sdk** - Perplexity search +- **@tavily/ai-sdk** - Tavily web research +- **firecrawl-aisdk** - Firecrawl scraping, search, crawling (3 tools) +- **bedrock-agentcore** - AWS Bedrock code interpreter and browser (2 tools) +- **@superagent-ai/ai-sdk** - Superagent security tools (3 tools) +- **@valyu/ai-sdk** - Valyu domain-specific search tools (8 tools) + +**Total: 24 manually curated tools across 10 packages** + +## FAQ + +### Why not just ask package maintainers to add the tpmjs field? + +We should! But: +1. Some packages are from large companies (Vercel, AWS, etc.) with slow adoption cycles +2. We want these tools available on TPMJS now +3. Manual curation lets us provide better metadata than package authors might + +### Will manual tools be replaced by auto-discovered ones? + +Yes! If a package adds a proper `tpmjs` field, the auto-discovery sync will update it with `discoveryMethod: 'keyword'` or `'changes-feed'`. Manual entries can then be removed from `manual-tools.ts`. + +### Can I mix manual and auto-discovered tools from the same package? + +Yes. If a package has some tools in the `tpmjs` field but is missing others, you can manually add the missing ones. The sync scripts will coexist peacefully. + +### How do I know if a tool is manually curated? + +Check the `discoveryMethod` field in the database: +- `'manual'` = Manually curated +- `'keyword'` = Auto-discovered via keyword search +- `'changes-feed'` = Auto-discovered via npm changes feed + +## Best Practices + +1. **Complete Metadata** - Provide as much metadata as possible for rich tier +2. **Accurate Descriptions** - Tool descriptions should be clear and specific +3. **AI-Friendly** - Write `aiAgent.useCase` as guidance for LLMs +4. **Keep Updated** - Periodically check if packages have added native `tpmjs` support +5. **Link to Docs** - Always include `docsUrl` when available +6. **API Key URLs** - Include `apiKeyUrl` for tools requiring authentication + +## Contributing + +To contribute new manual tools: + +1. Fork the repository +2. Add your tool to `manual-tools.ts` +3. Test with `pnpm tsx sync-manual-tools.ts` +4. Open a pull request with: + - Why this tool should be included + - Link to the npm package + - Screenshot of it working in TPMJS + +## Related Documentation + +- [HOW_TO_PUBLISH_A_TOOL.md](./HOW_TO_PUBLISH_A_TOOL.md) - Standard tpmjs field spec +- [CLAUDE.md](./CLAUDE.md) - General project documentation +- [packages/types/src/tpmjs.ts](./packages/types/src/tpmjs.ts) - TypeScript schema definitions diff --git a/NPM_MIRROR.md b/NPM_MIRROR.md deleted file mode 100644 index 61d05cb..0000000 --- a/NPM_MIRROR.md +++ /dev/null @@ -1,500 +0,0 @@ -# TPMJS NPM-Integrated Registry Architecture - -> **Automated tool discovery from NPM with zero-click submission** - -## Vision - -Transform TPMJS from a manual directory into an **automated NPM-integrated registry** where package authors simply publish to NPM with a `tpmjs` field in their `package.json` and their tools are discovered and listed within seconds—no manual submission, no forms, no waiting. - -## Quick Start for Package Authors - -```json -{ - "name": "my-awesome-tool", - "version": "1.0.0", - "keywords": ["tpmjs-tool"], - "tpmjs": { - "category": "web-scraping", - "description": "Extract product data from e-commerce websites with ease", - "example": "const data = await scraper.extract('https://shop.com')" - } -} -``` - -```bash -npm publish -# ✨ Listed automatically within 15 minutes (keyword) or seconds (changes feed) -``` - ---- - -## Architecture Overview - -``` -NPM Ecosystem - ↓ -Changes Feed + Keyword Search - ↓ -Package Validator (Zod) - ↓ -PostgreSQL Database - ↓ -Next.js API Routes - ↓ -TPMJS Web App -``` - -### Core Components - -1. **NPM Sync Service** (Node.js) - Monitors NPM registry for new packages -2. **PostgreSQL Database** - Stores validated tool metadata -3. **Next.js API** - Serves tool data with search/filtering -4. **Web Frontend** - Browse, search, and discover tools - ---- - -## Discovery Mechanism: Hybrid Approach - -### Method 1: Keyword Search (Official) -- Search NPM for packages with `tpmjs-tool` keyword -- Runs every 15 minutes via cron -- Packages marked as "Official" - -### Method 2: Changes Feed (Automatic) -- Monitors `replicate.npmjs.com/registry/_changes` in real-time -- Detects packages with `tpmjs` field instantly -- Packages marked as "Community" (unless they also have keyword) - -### Why Hybrid? -- **Keywords** = Clear opt-in, queryable, respects NPM conventions -- **Changes Feed** = Real-time, catches packages without keywords -- **Together** = Best discoverability with fallback - ---- - -## The "tpmjs" Field: Tiered Schema - -### Minimal Tier (Required) - -```json -{ - "tpmjs": { - "category": "web-scraping", - "description": "Extract structured data from websites using CSS selectors", - "example": "const data = await tool.scrape({ url: 'https://example.com', selector: '.price' })" - } -} -``` - -**Categories:** -- web-scraping -- data-processing -- file-operations -- communication -- database -- api-integration -- image-processing -- text-analysis -- automation -- ai-ml -- security -- monitoring - -### Rich Tier (Optional) - -Extend with any of these optional fields: - -```json -{ - "tpmjs": { - // ... Required fields ... - - "parameters": [ - { - "name": "url", - "type": "string", - "description": "Target URL to scrape", - "required": true - } - ], - "returns": { - "type": "object", - "description": "Extracted data matching the selector" - }, - "authentication": { - "required": false, - "type": "api-key", - "envVar": "SCRAPER_API_KEY", - "docsUrl": "https://docs.example.com/auth" - }, - "pricing": { - "model": "freemium", - "freeLimit": "100 requests/month", - "paidUrl": "https://example.com/pricing" - }, - "frameworks": ["vercel-ai", "langchain", "llamaindex"], - "links": { - "documentation": "https://docs.example.com", - "playground": "https://example.com/try", - "repository": "https://github.com/user/repo" - }, - "tags": ["web", "scraping", "html", "css"], - "status": "stable", - "aiAgent": { - "useCase": "Use when agent needs to extract data from websites", - "limitations": "Cannot handle JavaScript-heavy SPAs" - } - } -} -``` - ---- - -## Database Schema - -### Tools Table - -```sql -CREATE TABLE tools ( - -- NPM Metadata - npm_package_name VARCHAR(214) UNIQUE NOT NULL, - npm_version VARCHAR(50) NOT NULL, - npm_published_at TIMESTAMP NOT NULL, - npm_description TEXT, - npm_repository JSONB, - npm_homepage TEXT, - npm_license VARCHAR(50), - - -- TPMJS Metadata - category VARCHAR(50) NOT NULL, - description TEXT NOT NULL, - example TEXT NOT NULL, - parameters JSONB, - authentication JSONB, - pricing JSONB, - frameworks TEXT[], - links JSONB, - tags TEXT[], - status VARCHAR(20), - - -- Discovery - discovery_method VARCHAR(20) NOT NULL, -- 'keyword' | 'changes-feed' - is_official BOOLEAN DEFAULT false, - tier VARCHAR(20) NOT NULL, -- 'minimal' | 'rich' - - -- Metrics - npm_downloads_last_month INTEGER DEFAULT 0, - github_stars INTEGER DEFAULT 0, - quality_score DECIMAL(3,2), -- 0.00 to 1.00 - - -- Timestamps - created_at TIMESTAMP DEFAULT NOW(), - updated_at TIMESTAMP DEFAULT NOW() -); -``` - ---- - -## Sync Service Architecture - -### Workers - -**1. Changes Feed Worker** -- Connects to `replicate.npmjs.com/registry/_changes` -- Receives real-time change events -- Fetches package metadata for each change -- Checks for `tpmjs` field -- Validates and inserts to database - -**2. Keyword Search Worker** -- Runs every 15 minutes (cron) -- Searches `/-/v1/search?text=keywords:tpmjs-tool` -- Processes all results -- Marks as "Official" - -**3. Metrics Worker** (Optional Phase 4) -- Updates download counts from NPM API -- Fetches GitHub stars -- Calculates quality scores - -### Package Processing Pipeline - -``` -1. Fetch package metadata from NPM -2. Extract `tpmjs` field from latest version -3. Validate against Zod schema -4. If valid → Insert/Update database -5. If invalid → Log error -6. If no field → Skip -``` - ---- - -## API Routes - -### GET /api/tools -Search and list tools - -**Query Parameters:** -- `q` - Search query -- `category` - Filter by category -- `official` - Only official tools (true/false) -- `limit` - Results per page (default 20) -- `offset` - Pagination offset - -**Response:** -```json -{ - "tools": [...], - "pagination": { - "total": 150, - "limit": 20, - "offset": 0, - "hasMore": true - } -} -``` - -### GET /api/tools/[id] -Get tool details by ID - -### POST /api/tools/validate -Validate a `tpmjs` field before publishing - -**Request:** -```json -{ - "category": "web-scraping", - "description": "...", - "example": "..." -} -``` - -**Response:** -```json -{ - "valid": true, - "tier": "minimal", - "errors": [] -} -``` - -### GET /api/stats -Registry statistics - -```json -{ - "totalTools": 2847, - "officialTools": 150, - "categories": { - "web-scraping": 320, - "communication": 280, - ... - } -} -``` - ---- - -## Quality Scoring Algorithm - -Tools are scored 0.00 to 1.00 based on: - -- **Base validity** (0.3) - Has valid schema -- **Tier** (0.1-0.2) - Rich tier > Minimal tier -- **NPM downloads** (0.2) - Based on monthly downloads -- **GitHub stars** (0.15) - Repository popularity -- **Documentation** (0.1) - Has docs URL -- **Example quality** (0.05) - Example length > 100 chars - -Score is used for default sorting and quality indicators. - ---- - -## Implementation Phases - -### Phase 1: Foundation (Week 1-2) -- Set up PostgreSQL + Prisma -- Create Zod schemas in `@tpmjs/types` -- Build sync service structure -- Implement NPM API client - -### Phase 2: Discovery (Week 2-3) -- Implement changes feed worker -- Implement keyword search worker -- Deploy sync service (Railway/Fly.io) -- Test with real packages - -### Phase 3: API & Frontend (Week 3-4) -- Build Next.js API routes -- Update tool listing page -- Update tool detail pages -- Add validation endpoint - -### Phase 4: Polish (Week 4-5) -- Add metrics worker -- Create documentation -- Build CLI validator -- Launch to community - -### Phase 5: Enhancements (Post-Launch) -- Semantic search (embeddings) -- Usage analytics -- Tool recommendations -- GitHub Actions integration - ---- - -## Infrastructure Requirements - -### Sync Service -- **Platform:** Railway or Fly.io -- **Runtime:** Node.js 22+ -- **Resources:** 512MB RAM, 1 CPU -- **Cost:** ~$5-10/month - -### Database -- **Platform:** Neon Postgres (serverless) -- **Size:** Free tier (start), scale as needed -- **Backups:** Automatic with Neon -- **Cost:** Free tier available, ~$10-20/month for production - -### Web App -- **Platform:** Vercel (existing) -- **No changes required** - ---- - -## Monitoring & Health - -### Metrics to Track - -1. **Sync Health** - - Changes feed uptime - - Packages processed per hour - - Validation success rate - -2. **Database** - - Total tools - - Official vs community ratio - - Tier distribution - -3. **API** - - Request latency (p95 < 200ms) - - Search performance - - Error rates - -### Alerts - -- Sync service down > 5 minutes -- Database connection failures -- Validation error rate > 10% - ---- - -## Developer Experience - -### Validation Before Publishing - -```bash -# Using TPMJS CLI (to be built) -npx tpmjs validate - -# Or via API -curl -X POST https://tpmjs.com/api/tools/validate \ - -H "Content-Type: application/json" \ - -d '{"category":"web-scraping","description":"...","example":"..."}' -``` - -### Documentation Pages Needed - -1. **Getting Started** - Adding TPMJS support -2. **Schema Reference** - Complete field docs -3. **Best Practices** - Tips for quality tools -4. **Examples** - Sample configurations -5. **FAQ** - Common questions - ---- - -## Migration from Mock Data - -### Current State -- 12 mock tools in `toolData.ts` -- Client-side search -- Hard-coded categories - -### Migration Strategy - -1. **Publish Real Packages** - - Create NPM packages for mock tools - - Add `tpmjs` fields - - Publish with `tpmjs-tool` keyword - -2. **Update Frontend** - - Replace mock data with API calls - - Keep existing UI components - - Update types to match Prisma models - -3. **Gradual Rollout** - - Dual mode (mock + real) - - Real data primary, mock fallback - - Remove mock entirely - ---- - -## Success Metrics - -### Technical -- ✓ Discovery latency < 60 seconds -- ✓ API response time < 200ms p95 -- ✓ Support 10,000+ tools -- ✓ 99.9% uptime - -### User Experience -- ✓ 0-click submission (automatic) -- ✓ Instant validation feedback -- ✓ <100ms search speed -- ✓ 100% mobile features - -### Business -- Week 1: 10 official tools -- Month 1: 50 official tools -- Month 3: 200+ tools -- Month 6: 1000+ tools -- 50+ active package authors - ---- - -## Comparison to Vercel's Approach - -| Feature | Vercel AI SDK | TPMJS | -|---------|---------------|-------| -| **Submission** | Manual file edit + PR | Automatic via NPM | -| **Discovery** | None | Real-time changes feed | -| **Validation** | Manual review | Automated Zod schema | -| **Updates** | New PR required | Automatic on publish | -| **Search** | Static array | Full-text + categories | -| **Scale** | 6 tools | 1000+ tools ready | - ---- - -## Next Steps - -1. Review this architecture plan -2. Approve database schema and API design -3. Set up infrastructure (Railway + Postgres) -4. Start Phase 1: Foundation -5. Launch MVP in 4-5 weeks - ---- - -## References - -- [NPM Registry API Docs](https://github.com/npm/registry/blob/main/docs/REGISTRY-API.md) -- [NPM Changes Feed](https://github.com/npm/registry/blob/main/docs/REPLICATE-API.md) -- [Vercel AI Tools Registry](https://github.com/vercel/ai/blob/main/content/tools-registry/registry.ts) -- [TPMJS Architecture Plan](/.claude/plans/goofy-inventing-stearns.md) (Full details) - ---- - -**Built with ❤️ for the AI agent ecosystem** diff --git a/README.md b/README.md index 484cd9f..057aaff 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,59 @@ -# TPMJS Monorepo +# TPMJS -[![CI](https://github.com/YOUR_ORG/tpmjs/actions/workflows/ci.yml/badge.svg)](https://github.com/YOUR_ORG/tpmjs/actions/workflows/ci.yml) +[![CI](https://github.com/tpmjs/tpmjs/actions/workflows/ci.yml/badge.svg)](https://github.com/tpmjs/tpmjs/actions/workflows/ci.yml) -Tool Package Manager for AI Agents - A Turborepo monorepo with strict TypeScript, Next.js 16, and best practices. +**TPMJS is a registry for discovering AI tools published to npm.** -## Structure +Browse, search, and find tools at [tpmjs.com](https://tpmjs.com). Publish your tool by adding the `tpmjs` keyword to your package.json—it appears in the registry within 15 minutes. + +## Why TPMJS? + +- **Discover tools** - Search and browse AI tools by category, quality score, and popularity +- **Publish easily** - Add one keyword to package.json, publish to npm, done +- **Quality metrics** - Tools are scored based on documentation, downloads, and metadata completeness +- **Agent integration** - Optional SDK for agents to search and execute tools at runtime + +## Quick Start + +### Publishing a Tool + +```bash +npx @tpmjs/create-basic-tools +``` + +Or add manually to your package.json: +```json +{ + "keywords": ["tpmjs"], + "tpmjs": { + "category": "text-analysis" + } +} +``` + +Publish to npm and your tool appears on [tpmjs.com](https://tpmjs.com) within 15 minutes. + +See [HOW_TO_PUBLISH_A_TOOL.md](./HOW_TO_PUBLISH_A_TOOL.md) for the full guide. + +### For AI Agents (Optional) + +Agents can search and execute tools from the registry: + +```bash +npm install @tpmjs/registry-search @tpmjs/registry-execute +``` + +```typescript +import { registrySearchTool } from '@tpmjs/registry-search'; +import { registryExecuteTool } from '@tpmjs/registry-execute'; + +// Add to your agent's tools +const tools = [registrySearchTool, registryExecuteTool]; +``` + +--- + +## Monorepo Structure ``` apps/ diff --git a/TPMJS_TALK.md b/TPMJS_TALK.md new file mode 100644 index 0000000..5a2b8ed --- /dev/null +++ b/TPMJS_TALK.md @@ -0,0 +1,391 @@ +# TPMJS: The Missing Layer Between "LLMs Can Call Tools" and "Which Tool, Exactly?" + +--- + +## The Setup + +You're building an AI agent. It needs to do things in the world—scrape a webpage, send an email, query a database, generate an image. These capabilities come from **tools**. + +The problem isn't that tools don't exist. They do. Thousands of them. The problem is: + +- **You can't find them.** npm has 2 million packages. Which ones are AI-callable tools? Which ones actually work? +- **You can't trust them.** No schema. No examples. README says "AI-ready" but the function signature is `(opts: any) => Promise`. +- **You can't compare them.** Three packages do "web scraping." Which one handles JavaScript rendering? Which one returns structured data? Which one is maintained? + +Discovery is the bottleneck. Not capability—discovery. + +--- + +## What TPMJS Actually Is + +TPMJS is infrastructure. Specifically: + +1. **A registry** that indexes npm packages designed for AI tool use +2. **A metadata extraction pipeline** that pulls schemas directly from code +3. **A quality scoring system** that ranks tools by completeness and adoption +4. **A health monitoring system** that verifies tools actually work +5. **A playground** where you can test tools before integrating them + +It's not magic. It's plumbing. Good plumbing. + +--- + +## How It Works (The Technical Reality) + +### Discovery: Finding Tools in the Wild + +TPMJS runs three automated sync jobs: + +**1. npm Changes Feed (every 2 minutes)** +``` +npm registry → /_changes endpoint → filter for tpmjs keyword → process +``` +This catches new packages and updates in near-real-time. We track sequence numbers so we never reprocess. + +**2. Keyword Search (every 15 minutes)** +``` +npm search "tpmjs" → up to 250 results → validate → ingest +``` +Backup mechanism. Catches anything the changes feed missed. + +**3. Metrics Sync (hourly)** +``` +for each package → fetch download stats → recalculate quality scores → update health status +``` +Keeps the registry fresh. + +### The Publisher Contract + +To get indexed, a package needs two things: + +```json +{ + "name": "@acme/my-tool", + "keywords": ["tpmjs"], + "tpmjs": { + "category": "web-scraping", + "description": "Scrapes URLs and returns structured markdown" + } +} +``` + +That's the minimum. Category + description. Everything else is either optional or auto-extracted. + +**Categories are fixed** (12 total): web-scraping, data-processing, file-operations, communication, database, api-integration, image-processing, text-analysis, automation, ai-ml, security, monitoring. + +Why fixed? Because agents need to filter. "Give me all database tools" has to mean something. + +### Schema Extraction: The Hard Part + +Here's what makes TPMJS different from a glorified npm search. + +When we ingest a package, we don't just read the README. We **execute it in a sandbox** and extract the actual schema: + +``` +1. Spin up isolated executor (Railway) +2. npm install the package +3. Import and inspect exports +4. Extract JSON Schema from TypeScript types +5. Store schema in database +``` + +The result: + +```json +{ + "name": "scrapeUrl", + "inputSchema": { + "type": "object", + "properties": { + "url": { "type": "string", "format": "uri" }, + "waitForSelector": { "type": "string" }, + "timeout": { "type": "number", "default": 30000 } + }, + "required": ["url"] + } +} +``` + +This isn't documentation. This is **extracted from the actual function signature**. It's ground truth. + +If the author provides a schema in the `tpmjs` field, we use that. If not, we extract it. Either way, every tool in the registry has a schema. + +### Quality Scoring: Ranking What Matters + +Every tool gets a score from 0.00 to 1.00: + +```typescript +// Base score from metadata completeness +const tierScore = tier === 'rich' ? 0.6 : 0.4; + +// Adoption signals +const downloadsScore = Math.min(0.2, Math.log10(downloads + 1) / 15); +const starsScore = Math.min(0.1, Math.log10(githubStars + 1) / 10); + +// Metadata richness bonus +let richnessScore = 0; +if (hasParameters) richnessScore += 0.04; +if (hasReturns) richnessScore += 0.03; +if (hasEnvVars) richnessScore += 0.03; +``` + +**Tier** is binary: +- **Minimal**: Just category + description (40% base) +- **Rich**: Has parameters, returns, env vars, or framework tags (60% base) + +The formula is deliberately simple. We're not trying to be clever. We're trying to surface tools that are well-documented and actually used. + +### Health Checks: Does It Actually Work? + +Two checks, run during sync and periodically: + +**1. Import Health** +``` +Can we require() this package without it exploding? +``` +You'd be surprised how many npm packages fail this. + +**2. Execution Health** +``` +Can we call the main function with minimal parameters without throwing? +``` +Not a full test suite. Just "does it run at all?" + +Results: `HEALTHY`, `BROKEN`, or `UNKNOWN`. + +Broken tools still appear in the registry (with a warning). We don't hide them—we label them. + +--- + +## The Data Model + +Here's what we actually store: + +### Package (npm package level) +``` +npmPackageName (unique) +npmVersion, npmDescription, npmRepository, npmLicense +npmKeywords[], npmReadme, npmAuthor +category (enum) +tier ('minimal' | 'rich') +discoveryMethod ('changes-feed' | 'keyword') +npmDownloadsLastMonth, githubStars +frameworks[] (vercel-ai, langchain, etc.) +env[] (required environment variables) +``` + +### Tool (individual callable within a package) +``` +packageId (FK) +name (export name: "scrapeUrl", "default", etc.) +description +inputSchema (JSON Schema) +schemaSource ('extracted' | 'author') +qualityScore (0.00-1.00) +importHealth, executionHealth (HEALTHY | BROKEN | UNKNOWN) +toolDiscoverySource ('auto' | 'manual') +``` + +One package can have multiple tools. `@acme/web-tools` might export `scrapeUrl`, `screenshotPage`, and `extractLinks`. Each is a separate tool with its own schema and health status. + +### Simulation (playground execution) +``` +toolId +userPrompt (what the user asked) +parameters (JSON, what was passed to the tool) +status (pending | running | success | error | timeout) +executionTimeMs, output, error +model, agentSteps +``` + +We track every playground execution. Not for surveillance—for debugging and improving the system. + +--- + +## The API + +### Search & Discovery + +``` +GET /api/tools + ?q=scrape + &category=web-scraping + &importHealth=HEALTHY + &executionHealth=HEALTHY + &limit=20 + &offset=0 + +→ Returns tools sorted by quality score +``` + +``` +GET /api/tools/search + ?q=I need to extract text from PDFs + +→ BM25-ranked semantic search +``` + +### Execution + +``` +POST /api/tools/execute/{toolId} +{ + "prompt": "Scrape the homepage of Hacker News", + "parameters": { "url": "https://news.ycombinator.com" } +} + +→ Server-Sent Events stream with: + - Agent reasoning steps + - Tool call results + - Final output +``` + +Rate limited: 10 requests per IP per hour. We're not a free compute platform. + +### Schema Operations + +``` +POST /api/tools/extract-schema +{ "packageName": "@acme/my-tool", "toolName": "scrapeUrl" } + +→ Forces re-extraction of schema from source +``` + +--- + +## The Playground + +A Next.js app where you can: + +1. **Browse tools** by category, health status, quality score +2. **Inspect schemas** before you commit to anything +3. **Test execution** with an AI agent +4. **See real responses** with actual latency and token usage + +It's not a demo. It's a debugging tool. "Does this tool do what I think it does?" Answer that question in 30 seconds instead of 30 minutes. + +--- + +## What This Enables + +### For Engineers Building Agents + +Before TPMJS: +``` +1. Search npm for "web scraper" +2. Get 500 results +3. Click through 20 of them +4. Read READMEs that say "easy to use!" +5. npm install three of them +6. Write test code for each +7. Find out two are broken +8. Pick the one that works +9. Hope it keeps working +``` + +After TPMJS: +``` +1. Search tpmjs.com for "web scraper" +2. Filter by HEALTHY status +3. Sort by quality score +4. Click top result +5. See exact input schema +6. Test in playground +7. Integrate +``` + +### For Tool Authors + +Before TPMJS: +``` +Publish to npm → hope someone finds it → no visibility into usage +``` + +After TPMJS: +``` +Publish to npm with tpmjs keyword → indexed within 2 minutes → +schema auto-extracted → quality scored → discoverable by search → +execution stats tracked +``` + +Your tool becomes findable. Not just by humans grepping npm, but by agents querying the registry API. + +### For Agents (Yes, Really) + +Agents can query TPMJS at runtime: + +```typescript +const tools = await fetch('https://tpmjs.com/api/tools?' + new URLSearchParams({ + q: 'send email', + executionHealth: 'HEALTHY', + limit: '5' +})).then(r => r.json()); + +// Agent now has 5 working email tools with full schemas +// It can pick the best one for this specific task +``` + +This is the endgame. Not humans browsing a registry—agents dynamically selecting tools based on capability, health, and fit. + +--- + +## What TPMJS Is Not + +**Not a package manager.** We don't host packages. npm does that. We index and enrich. + +**Not an execution platform.** The playground runs tools for testing. Production execution is your responsibility. + +**Not a security guarantee.** We check if tools work. We don't audit them for malice. Same rules as npm: don't run untrusted code. + +**Not magic.** We're not using AI to understand what tools do. We're extracting schemas and running health checks. Boring, reliable, debuggable. + +--- + +## The Technical Stack + +- **Database**: PostgreSQL via Prisma +- **Web**: Next.js 16 (App Router) +- **Deployment**: Vercel (web) + Railway (sandbox executor) +- **Sync**: Vercel Cron + GitHub Actions backup +- **AI**: Vercel AI SDK for playground execution +- **Monorepo**: Turborepo + pnpm + +Key internal packages: +- `@tpmjs/npm-client` — npm registry integration +- `@tpmjs/package-executor` — sandbox execution client +- `@tpmjs/types` — schema validation and migration +- `@tpmjs/db` — Prisma client and models + +--- + +## Current State + +- **~100 tools indexed** (and growing with every npm publish) +- **12 categories** covering most agent use cases +- **Automated sync** running 24/7 +- **Health checks** on every tool +- **Schema extraction** working for TypeScript and JavaScript +- **Playground** functional for testing + +--- + +## The Pitch (Finally) + +Tools are the API surface of AI agents. The ecosystem is a mess. TPMJS is the index. + +We don't compete with npm—we sit on top of it. We don't replace tool authors—we make them discoverable. We don't build agents—we give agents a way to find their tools. + +Discovery is the bottleneck. We're fixing discovery. + +--- + +## Try It + +- **Browse**: https://tpmjs.com/tool-search +- **Playground**: https://tpmjs.com/playground +- **Publish**: Add `tpmjs` keyword + `tpmjs` field to your package.json +- **API**: `GET https://tpmjs.com/api/tools` + +--- + +*Tools are inevitable. Discovery chaos isn't.* diff --git a/VERCEL_FIX_CHECKLIST.md b/VERCEL_FIX_CHECKLIST.md deleted file mode 100644 index c3c184b..0000000 --- a/VERCEL_FIX_CHECKLIST.md +++ /dev/null @@ -1,324 +0,0 @@ -# 🔥 Vercel API Routes Fix - Action Checklist - -## Problem Summary - -**API routes are not deploying because Vercel is not detecting your project as Next.js.** - -When Vercel doesn't detect Next.js, it treats your deployment as a static site and **drops all App Router API routes** from the build output. Pages work because they're static files, but API routes require serverless function generation which only happens when Next.js is properly detected. - ---- - -## ✅ Fix Checklist (Complete in Order) - -### 1️⃣ Fix Root Directory - -**Where:** Vercel Dashboard → Project `tpmjs-web` → Settings → General → Root Directory - -**Current (likely):** Empty, `.`, or wrong path -**Required:** `apps/web` (exactly this, no leading/trailing slashes) - -**Validation:** -``` -✓ Must be exactly: apps/web -✗ NOT: /apps/web/ -✗ NOT: ./apps/web -✗ NOT: tpmjs/apps/web -``` - ---- - -### 2️⃣ Set Framework Preset - -**Where:** Vercel Dashboard → Project `tpmjs-web` → Settings → General → Framework Preset - -**Current (likely):** "Other" -**Required:** "Next.js" - -**Why this matters:** -- Framework = "Other" → Uses `@vercel/static-builder` → No API routes -- Framework = "Next.js" → Uses `@vercel/next` → API routes deployed - ---- - -### 3️⃣ Remove Domain from Old Project - -**Where:** Vercel Dashboard → Project `v0-tool-registry-page` → Settings → Domains - -**Action:** Remove these domains: -- `tpmjs.com` -- `www.tpmjs.com` - -**Then:** Verify both domains are ONLY assigned to the `tpmjs` project - -**Why this matters:** -The "Redirecting..." message is coming from the old project. Having two projects with the same domain causes shadow routing and API requests hitting the wrong deployment. - ---- - -### 4️⃣ Clear Custom Build Commands - -**Where:** Vercel Dashboard → Project `tpmjs-web` → Settings → Build & Development Settings - -**Set ALL to default/empty:** -``` -Build Command: (empty - let Vercel auto-detect) -Install Command: (empty - let Vercel auto-detect) -Output Directory: .next (default) -``` - -**Why this matters:** -Custom build commands bypass Vercel's Next.js detection. Vercel should automatically: -- Detect monorepo structure -- Run `pnpm install` -- Run `pnpm build` in the correct workspace -- Use `@vercel/next` builder - -**If you must use custom commands, use:** -``` -Build Command: pnpm turbo run build --filter=@tpmjs/web -Install Command: pnpm install -``` - -But try empty first. - ---- - -## 🧪 Verification Steps - -### Before Deploying - -Run this locally to confirm Next.js detection: -```bash -cd apps/web -vercel build -``` - -**Expected output should include:** -``` -● route (app) /api/health -● route (app) /api/tools -● route (app) /api/sync/changes -λ /api/health -λ /api/tools -λ /api/sync/changes -``` - -**If you DON'T see this, Vercel won't deploy API routes.** - -### After Deploying - -1. **Check Build Output:** -```bash -vercel inspect -``` - -Should show: -``` -Builds - ├── λ api/health (XXX KB) [region] - ├── λ api/tools (XXX KB) [region] - ├── λ api/sync/changes (XXX KB) [region] - ├── λ tool/[slug] (XXX KB) [region] - ... -``` - -2. **Test API Routes:** -```bash -# Should return JSON (not timeout, not "Redirecting...") -curl https://tpmjs.com/api/health - -# Should return tool data -curl https://tpmjs.com/api/tools -``` - ---- - -## 📋 Expected Results - -### ✅ Success Indicators - -- [ ] `vercel inspect` shows API routes as `λ` functions -- [ ] `curl https://tpmjs.com/api/health` returns JSON -- [ ] `curl https://tpmjs.com/api/tools` returns tool data -- [ ] No "Redirecting..." messages -- [ ] No timeouts on direct Vercel URLs -- [ ] Build logs show "route (app) /api/*" - -### ❌ Failure Indicators (Need to revisit steps) - -- [ ] Only pages listed in `vercel inspect`, no API routes -- [ ] API endpoints return "Redirecting..." -- [ ] API endpoints timeout (exit code 28) -- [ ] Build logs don't mention API routes -- [ ] Framework Preset still shows "Other" - ---- - -## 🚨 Common Mistakes - -### Mistake 1: Wrong Root Directory Format -``` -✗ /apps/web/ (leading/trailing slashes) -✗ ./apps/web (relative path notation) -✗ apps/web/ (trailing slash) -✓ apps/web (correct) -``` - -### Mistake 2: Leaving Custom Build Commands -If you have: -```json -{ - "buildCommand": "cd ../.. && turbo build --filter=@tpmjs/web" -} -``` - -This MIGHT work, but can break Next.js detection. Start with empty and only add if needed. - -### Mistake 3: Not Removing Domain from Old Project -If `v0-tool-registry-page` still has `tpmjs.com`, your requests will route to the wrong project randomly based on: -- DNS propagation -- Edge cache -- Vercel's routing priority - -### Mistake 4: Not Verifying Framework Preset -"Other" is Vercel's default when it can't detect a framework. This is the #1 cause of missing API routes in monorepos. - ---- - -## 🔧 Troubleshooting - -### If API routes STILL don't deploy after all 4 steps: - -1. **Check Build Logs:** - - Does it say "Detected Next.js"? - - Does it list "route (app) /api/*"? - - Does it show `@vercel/next` builder? - -2. **Check package.json location:** - ``` - ✓ Should exist: apps/web/package.json - ✗ Should NOT be at root ONLY - ``` - -3. **Check next.config.ts location:** - ``` - ✓ Should exist: apps/web/next.config.ts - ``` - -4. **Verify pnpm workspace:** - ```bash - # Should show @tpmjs/web - pnpm list --depth 0 --filter @tpmjs/web - ``` - -5. **Test local build with Vercel CLI:** - ```bash - cd apps/web - vercel build --debug - ``` - Look for "Framework: nextjs" in output. - ---- - -## 📞 When to Contact Vercel Support - -If after completing all 4 steps: -- Build logs show "Detected Next.js" -- Build logs show "route (app) /api/*" -- BUT `vercel inspect` still doesn't list API functions - -Then you have a Vercel platform bug. Contact support with: -- This checklist -- Build logs -- `vercel inspect` output -- Link to `API_ROUTES_TIMEOUT_INVESTIGATION.md` - ---- - -## 🎯 Quick Win Test - -**Don't want to change production settings yet?** - -1. Create a NEW Vercel project -2. Import the SAME repo -3. Set Root Directory to `apps/web` -4. Set Framework Preset to "Next.js" -5. Deploy - -If API routes work in the new project → confirms the fix -If API routes still fail → deeper issue (contact support) - ---- - -## ✨ Post-Fix Cleanup - -Once API routes are working: - -### Optional: Re-add www redirect - -Now that API routes work, you can safely add the www redirect back: - -**Option A - Vercel Project Settings:** -Vercel Dashboard → Domains → tpmjs.com → Redirect www to apex - -**Option B - Next.js config:** -```typescript -// apps/web/next.config.ts -async redirects() { - return [ - { - source: '/:path((?!api).*)*', // Exclude /api/* - has: [{ type: 'host', value: 'www.tpmjs.com' }], - destination: 'https://tpmjs.com/:path*', - permanent: true, - }, - ]; -} -``` - -**Option C - vercel.json (not recommended):** -Only use if you understand the implications. - -### Optional: Remove maxDuration exports - -The `export const maxDuration = 60;` in your route files isn't needed unless you actually need longer timeouts. Default is 10s (Hobby) or 15s (Pro). - ---- - -## 📊 Summary - -| Issue | Root Cause | Fix | -|-------|------------|-----| -| API routes timeout | Vercel doesn't detect Next.js | Set Framework Preset to "Next.js" | -| No λ functions in build | Wrong Root Directory | Set to `apps/web` exactly | -| "Redirecting..." on API calls | Domain on two projects | Remove from old project | -| Build doesn't find API routes | Custom build commands break detection | Clear custom commands | - -**Time to fix:** 5 minutes (just changing dashboard settings) -**Deployments needed:** 1 (changes take effect on next deploy) -**Code changes needed:** 0 (this is pure configuration) - ---- - -## 🎉 When It Works - -You'll know it's fixed when: - -```bash -$ curl https://tpmjs.com/api/health -{"status":"ok","timestamp":"2025-11-28T...","env":{"hasDatabase":true,"nodeEnv":"production"}} - -$ curl https://tpmjs.com/api/tools -{"data":[...],"pagination":{...}} -``` - -And `vercel inspect ` shows: -``` -Builds - ├── λ api/health - ├── λ api/tools - ├── λ api/stats - ... (ALL your API routes) -``` - -**That's it. No code changes. Just fix the Vercel project configuration.** diff --git a/alien.sh b/alien.sh new file mode 100755 index 0000000..de88096 --- /dev/null +++ b/alien.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +printf "\n\033[1m WALKING DOWN\033[0m\n\n" +printf " Frame 1 Frame 2 Frame 3 Frame 4\n\n" +printf " \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m\n" +printf " \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m\n" +printf " \033[38;2;255;200;50m▄███▄\033[0m \033[38;2;255;200;50m▄███▄\033[0m \033[38;2;255;200;50m▄███▄\033[0m \033[38;2;255;200;50m▄███▄\033[0m\n" +printf " \033[38;2;255;200;50m███████\033[0m \033[38;2;255;200;50m███████\033[0m \033[38;2;255;200;50m███████\033[0m \033[38;2;255;200;50m███████\033[0m\n" +printf " \033[38;2;255;200;50m█\033[38;2;0;0;0m██\033[38;2;255;200;50m█\033[38;2;0;0;0m██\033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[38;2;0;0;0m██\033[38;2;255;200;50m█\033[38;2;0;0;0m██\033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[38;2;0;0;0m██\033[38;2;255;200;50m█\033[38;2;0;0;0m██\033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[38;2;0;0;0m██\033[38;2;255;200;50m█\033[38;2;0;0;0m██\033[38;2;255;200;50m█\033[0m\n" +printf " \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m\n" +printf " \033[38;2;255;200;50m███\033[0m \033[38;2;255;200;50m███\033[0m \033[38;2;255;200;50m███\033[0m \033[38;2;255;200;50m███\033[0m\n" +printf " \033[38;2;139;90;43m▄█████▄\033[0m \033[38;2;139;90;43m▄█████▄\033[0m \033[38;2;139;90;43m▄█████▄\033[0m \033[38;2;139;90;43m▄█████▄\033[0m\n" +printf " \033[38;2;139;90;43m███\033[38;2;255;215;0m█\033[38;2;139;90;43m███\033[0m \033[38;2;139;90;43m███\033[38;2;255;215;0m█\033[38;2;139;90;43m███\033[0m \033[38;2;139;90;43m███\033[38;2;255;215;0m█\033[38;2;139;90;43m███\033[0m \033[38;2;139;90;43m███\033[38;2;255;215;0m█\033[38;2;139;90;43m███\033[0m\n" +printf " \033[38;2;139;90;43m███████\033[0m \033[38;2;139;90;43m███████\033[0m \033[38;2;139;90;43m███████\033[0m \033[38;2;139;90;43m███████\033[0m\n" +printf " \033[38;2;139;90;43m█████\033[0m \033[38;2;139;90;43m█████\033[0m \033[38;2;139;90;43m█████\033[0m \033[38;2;139;90;43m█████\033[0m\n" +printf " \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m\n" +printf " \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m██\033[0m\n" + +printf "\n\033[1m WALKING UP\033[0m\n\n" +printf " Frame 1 Frame 2 Frame 3 Frame 4\n\n" +printf " \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m\n" +printf " \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m\n" +printf " \033[38;2;255;200;50m▄███▄\033[0m \033[38;2;255;200;50m▄███▄\033[0m \033[38;2;255;200;50m▄███▄\033[0m \033[38;2;255;200;50m▄███▄\033[0m\n" +printf " \033[38;2;255;200;50m███████\033[0m \033[38;2;255;200;50m███████\033[0m \033[38;2;255;200;50m███████\033[0m \033[38;2;255;200;50m███████\033[0m\n" +printf " \033[38;2;255;200;50m███████\033[0m \033[38;2;255;200;50m███████\033[0m \033[38;2;255;200;50m███████\033[0m \033[38;2;255;200;50m███████\033[0m\n" +printf " \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m\n" +printf " \033[38;2;255;200;50m███\033[0m \033[38;2;255;200;50m███\033[0m \033[38;2;255;200;50m███\033[0m \033[38;2;255;200;50m███\033[0m\n" +printf " \033[38;2;139;90;43m▄█████▄\033[0m \033[38;2;139;90;43m▄█████▄\033[0m \033[38;2;139;90;43m▄█████▄\033[0m \033[38;2;139;90;43m▄█████▄\033[0m\n" +printf " \033[38;2;139;90;43m███████\033[0m \033[38;2;139;90;43m███████\033[0m \033[38;2;139;90;43m███████\033[0m \033[38;2;139;90;43m███████\033[0m\n" +printf " \033[38;2;139;90;43m███████\033[0m \033[38;2;139;90;43m███████\033[0m \033[38;2;139;90;43m███████\033[0m \033[38;2;139;90;43m███████\033[0m\n" +printf " \033[38;2;139;90;43m█████\033[0m \033[38;2;139;90;43m█████\033[0m \033[38;2;139;90;43m█████\033[0m \033[38;2;139;90;43m█████\033[0m\n" +printf " \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m\n" +printf " \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m██\033[0m\n" + +printf "\n\033[1m WALKING LEFT\033[0m\n\n" +printf " Frame 1 Frame 2 Frame 3 Frame 4\n\n" +printf " \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m\n" +printf " \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m\n" +printf " \033[38;2;255;200;50m▄███\033[0m \033[38;2;255;200;50m▄███\033[0m \033[38;2;255;200;50m▄███\033[0m \033[38;2;255;200;50m▄███\033[0m\n" +printf " \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m\n" +printf " \033[38;2;0;0;0m██\033[38;2;255;200;50m███\033[0m \033[38;2;0;0;0m██\033[38;2;255;200;50m███\033[0m \033[38;2;0;0;0m██\033[38;2;255;200;50m███\033[0m \033[38;2;0;0;0m██\033[38;2;255;200;50m███\033[0m\n" +printf " \033[38;2;255;200;50m████\033[0m \033[38;2;255;200;50m████\033[0m \033[38;2;255;200;50m████\033[0m \033[38;2;255;200;50m████\033[0m\n" +printf " \033[38;2;255;200;50m██\033[0m \033[38;2;255;200;50m██\033[0m \033[38;2;255;200;50m██\033[0m \033[38;2;255;200;50m██\033[0m\n" +printf " \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m\n" +printf " \033[38;2;139;90;43m██\033[38;2;255;215;0m█\033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[38;2;255;215;0m█\033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[38;2;255;215;0m█\033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[38;2;255;215;0m█\033[38;2;139;90;43m██\033[0m\n" +printf " \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m\n" +printf " \033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[0m\n" +printf " \033[38;2;255;200;50m██\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m██\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m\n" +printf " \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m██\033[0m\n" + +printf "\n\033[1m WALKING RIGHT\033[0m\n\n" +printf " Frame 1 Frame 2 Frame 3 Frame 4\n\n" +printf " \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m\n" +printf " \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m \033[38;2;139;90;43m█\033[0m\n" +printf " \033[38;2;255;200;50m███▄\033[0m \033[38;2;255;200;50m███▄\033[0m \033[38;2;255;200;50m███▄\033[0m \033[38;2;255;200;50m███▄\033[0m\n" +printf " \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m \033[38;2;255;200;50m█████\033[0m\n" +printf " \033[38;2;255;200;50m███\033[38;2;0;0;0m██\033[0m \033[38;2;255;200;50m███\033[38;2;0;0;0m██\033[0m \033[38;2;255;200;50m███\033[38;2;0;0;0m██\033[0m \033[38;2;255;200;50m███\033[38;2;0;0;0m██\033[0m\n" +printf " \033[38;2;255;200;50m████\033[0m \033[38;2;255;200;50m████\033[0m \033[38;2;255;200;50m████\033[0m \033[38;2;255;200;50m████\033[0m\n" +printf " \033[38;2;255;200;50m██\033[0m \033[38;2;255;200;50m██\033[0m \033[38;2;255;200;50m██\033[0m \033[38;2;255;200;50m██\033[0m\n" +printf " \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m\n" +printf " \033[38;2;139;90;43m██\033[38;2;255;215;0m█\033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[38;2;255;215;0m█\033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[38;2;255;215;0m█\033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[38;2;255;215;0m█\033[38;2;139;90;43m██\033[0m\n" +printf " \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m \033[38;2;139;90;43m████\033[0m\n" +printf " \033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[0m \033[38;2;139;90;43m██\033[0m\n" +printf " \033[38;2;255;200;50m██\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m██\033[0m \033[38;2;255;200;50m█\033[0m \033[38;2;255;200;50m█\033[0m\n" +printf " \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m█\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m██\033[0m \033[38;2;101;67;33m█\033[0m\n" + +printf "\n" diff --git a/apps/playground/.env.local.example b/apps/playground/.env.local.example new file mode 100644 index 0000000..ad3ac40 --- /dev/null +++ b/apps/playground/.env.local.example @@ -0,0 +1,2 @@ +# Required: OpenAI API key +OPENAI_API_KEY=sk-... diff --git a/apps/playground/eslint.config.mjs b/apps/playground/eslint.config.mjs new file mode 100644 index 0000000..f2ac8a1 --- /dev/null +++ b/apps/playground/eslint.config.mjs @@ -0,0 +1,16 @@ +import reactConfig from '@tpmjs/eslint-config/react.js'; + +export default [ + { + ignores: [ + '.next/**', + '.turbo/**', + 'node_modules/**', + '*.config.js', + '*.config.ts', + 'next-env.d.ts', + 'eslint.config.mjs', + ], + }, + ...reactConfig, +]; diff --git a/apps/playground/next-env.d.ts b/apps/playground/next-env.d.ts new file mode 100644 index 0000000..9edff1c --- /dev/null +++ b/apps/playground/next-env.d.ts @@ -0,0 +1,6 @@ +/// +/// +import "./.next/types/routes.d.ts"; + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/playground/next.config.ts b/apps/playground/next.config.ts new file mode 100644 index 0000000..b94699c --- /dev/null +++ b/apps/playground/next.config.ts @@ -0,0 +1,11 @@ +import type { NextConfig } from 'next'; + +const nextConfig: NextConfig = { + transpilePackages: ['@tpmjs/ui', '@tpmjs/utils', '@tpmjs/types', '@tpmjs/env'], + reactStrictMode: true, + experimental: { + urlImports: ['https://esm.sh/', 'https://cdn.jsdelivr.net/npm/'], + }, +}; + +export default nextConfig; diff --git a/apps/playground/package.json b/apps/playground/package.json new file mode 100644 index 0000000..df5104d --- /dev/null +++ b/apps/playground/package.json @@ -0,0 +1,50 @@ +{ + "name": "@tpmjs/playground", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "next dev --port 3001", + "build": "next build", + "start": "next start", + "lint": "eslint .", + "type-check": "tsc --noEmit", + "clean": "rm -rf .next .turbo" + }, + "dependencies": { + "@ai-sdk/openai": "3.0.1", + "@ai-sdk/react": "3.0.3", + "@tpmjs/db": "workspace:*", + "@tpmjs/env": "workspace:*", + "@tpmjs/hello": "workspace:*", + "@tpmjs/search-registry": "workspace:*", + "@tpmjs/types": "workspace:*", + "@tpmjs/ui": "workspace:*", + "@tpmjs/utils": "workspace:*", + "@vercel/analytics": "^1.6.1", + "ai": "6.0.3", + "firecrawl-aisdk": "^0.7.2", + "nanoid": "^5.1.6", + "next": "^16.0.8", + "next-themes": "^0.4.6", + "openai": "^6.9.1", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "streamdown": "^1.6.9", + "zod": "^4.0.0" + }, + "devDependencies": { + "@tailwindcss/typography": "^0.5.19", + "@tpmjs/eslint-config": "workspace:*", + "@tpmjs/tailwind-config": "workspace:*", + "@tpmjs/tsconfig": "workspace:*", + "@types/node": "^22.10.2", + "@types/react": "^19.0.2", + "@types/react-dom": "^19.0.2", + "autoprefixer": "^10.4.20", + "eslint": "^9.39.1", + "eslint-config-next": "^16.0.4", + "postcss": "^8.5.1", + "tailwindcss": "^3.4.17", + "typescript": "^5.9.3" + } +} diff --git a/apps/playground/postcss.config.mjs b/apps/playground/postcss.config.mjs new file mode 100644 index 0000000..a982c64 --- /dev/null +++ b/apps/playground/postcss.config.mjs @@ -0,0 +1,8 @@ +const config = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; + +export default config; diff --git a/apps/playground/src/app/api/chat/route.ts b/apps/playground/src/app/api/chat/route.ts new file mode 100644 index 0000000..243368e --- /dev/null +++ b/apps/playground/src/app/api/chat/route.ts @@ -0,0 +1,252 @@ +import { createOpenAI } from '@ai-sdk/openai'; +import { searchTpmjsToolsTool } from '@tpmjs/search-registry'; +import { type UIMessage, convertToModelMessages, stepCountIs, streamText } from 'ai'; +import type { NextRequest } from 'next/server'; +import { env } from '~/env'; +import { + addConversationTools, + loadToolsBatch, + setConversationEnv, +} from '~/lib/dynamic-tool-loader'; +import { loadAllTools, sanitizeToolName } from '~/lib/tool-loader'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; +export const maxDuration = 300; // 5 minutes for complex tool loading + +// Add conversation state tracking (in-memory for MVP) +// biome-ignore lint/suspicious/noExplicitAny: Tool types from AI SDK are complex +const conversationStates = new Map }>(); + +/** + * POST /api/chat + * Chat with AI agent that can execute TPMJS tools + */ +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + console.log('📥 Request body:', JSON.stringify(body, null, 2)); + + const messages: UIMessage[] = body.messages || []; + const conversationId: string = body.conversationId || 'default'; + const clientEnv: Record = body.env || {}; + + console.log(`🔑 Conversation ID: ${conversationId}`); + console.log( + `🔐 Client env vars: ${Object.keys(clientEnv).length} keys`, + Object.keys(clientEnv) + ); + + // Store env vars for this conversation (so cached tools can access them) + setConversationEnv(conversationId, clientEnv); + + // Initialize OpenAI with client-provided or server API key + const apiKey = clientEnv.OPENAI_API_KEY || env.OPENAI_API_KEY; + if (!apiKey) { + return new Response( + JSON.stringify({ + success: false, + error: 'OPENAI_API_KEY is required. Please add it in the Settings sidebar.', + }), + { + status: 400, + headers: { 'Content-Type': 'application/json' }, + } + ); + } + + const openai = createOpenAI({ + apiKey, + }); + + // Get or create conversation state + if (!conversationStates.has(conversationId)) { + console.log('✨ Creating new conversation state'); + conversationStates.set(conversationId, { loadedTools: {} }); + } + // biome-ignore lint/style/noNonNullAssertion: We just ensured the value exists above + const state = conversationStates.get(conversationId)!; + console.log( + `📊 Current loaded tools in conversation: ${Object.keys(state.loadedTools).length}` + ); + + // 1. Load static tools + search tool + const staticTools = await loadAllTools(); + console.log(`🔧 Loaded ${Object.keys(staticTools).length} static tools`); + + staticTools.searchTpmjsTools = searchTpmjsToolsTool; + console.log('✅ Added searchTpmjsTools to static tools'); + + // Debug: Check the search tool structure + console.log('🔍 Search tool structure:', { + description: searchTpmjsToolsTool.description, + inputSchema: typeof searchTpmjsToolsTool.inputSchema, + execute: typeof searchTpmjsToolsTool.execute, + }); + + // 2. Extract user query and last 3 user messages for tool search + const lastMessage = messages[messages.length - 1]; + let userQuery = ''; + if (lastMessage?.role === 'user') { + // Extract text from message parts + const parts = (lastMessage as any).parts || []; + for (const part of parts) { + if (part.type === 'text') { + userQuery = part.text; + break; + } + } + } + + // Get last 3 user messages for context + const recentUserMessages = messages + .filter((msg) => msg.role === 'user') + .slice(-3) + .map((msg) => { + // Extract text from parts + const parts = (msg as any).parts || []; + for (const part of parts) { + if (part.type === 'text') { + return part.text; + } + } + return ''; + }) + .filter(Boolean); + + console.log(`💬 User query: "${userQuery}"`); + console.log(`📝 Recent messages: ${recentUserMessages.length}`); + + // 3. Automatically search for relevant tools based on the user's message + if (userQuery && userQuery.trim().length > 0) { + console.log('🔎 Searching for relevant tools...'); + + try { + // biome-ignore lint/style/noNonNullAssertion: Tool created with tool() always has execute + const result = await searchTpmjsToolsTool.execute!( + { + query: userQuery, + limit: 5, // Get top 5 relevant tools + recentMessages: recentUserMessages, + }, + {} as any + ); + + // Type assertion: searchTpmjsToolsTool returns direct result, not AsyncIterable + const searchResult = result as { + query: string; + matchCount: number; + tools: any[]; + }; + + console.log(`📦 Found ${searchResult.matchCount} matching tools`); + + if (searchResult.tools && searchResult.tools.length > 0) { + console.log( + '🔧 Tools found:', + searchResult.tools.map((t: any) => `${t.packageName}/${t.name}`) + ); + + // Dynamically load tools from esm.sh + console.log(`📥 Loading ${searchResult.tools.length} tools dynamically...`); + + const toolsToLoad = searchResult.tools.map((meta: any) => ({ + packageName: meta.packageName, + name: meta.name, + version: meta.version, + importUrl: meta.importUrl, + })); + + try { + const loadedTools = await loadToolsBatch(toolsToLoad, conversationId, clientEnv); + console.log(`✅ Successfully loaded ${Object.keys(loadedTools).length} tools`); + + // Add sanitized tools to conversation state + for (const [key, tool] of Object.entries(loadedTools)) { + const [pkg, exp] = key.split('::'); + const sanitizedKey = sanitizeToolName(`${pkg}-${exp}`); + state.loadedTools[sanitizedKey] = tool; + console.log(`✅ Added to conversation: ${sanitizedKey}`); + } + + // Track for this conversation + addConversationTools(conversationId, Object.keys(state.loadedTools)); + } catch (error) { + console.error('❌ Error loading tools:', error); + } + } else { + console.log('ℹ️ No matching tools found for this query'); + } + } catch (error) { + console.error('❌ Error searching for tools:', error); + } + } + + // 4. Merge with conversation's dynamically loaded tools + // biome-ignore lint/suspicious/noExplicitAny: Tool types from AI SDK are complex + const allTools: Record = { ...staticTools, ...state.loadedTools }; + + // 5. Build system prompt with available tools + const toolsList = Object.keys(allTools) + .map((name) => { + const tool = allTools[name] as { description?: string } | undefined; + return `- ${name}: ${tool?.description || 'No description'}`; + }) + .join('\n'); + + const system = `You are an AI assistant with access to a dynamic tool registry containing thousands of tools. Your job is to EXECUTE tools to help users accomplish tasks. + +## Tool Execution Rules + +1. **When a user asks you to "call", "use", "run", or "execute" a tool** - you MUST invoke that tool immediately. Do not just describe it or search for it. + +2. **When a user asks a question that could be answered by a tool** - invoke the appropriate tool to get real data, don't make up answers. + +3. **searchTpmjsTools is for DISCOVERY only** - use it when you need to find tools you don't have loaded yet. Once a tool is loaded (listed below), call it directly. + +4. **Tool names are sanitized** - if user says "extractTool from @parallel-web/ai-sdk-tools", look for a loaded tool like "parallel-web_ai-sdk-tools-extractTool". + +5. **Always execute, then explain** - after calling a tool, summarize the results for the user. + +## Currently Loaded Tools +${toolsList} + +## Examples + +User: "call extractTool on https://example.com" +→ Invoke the extractTool with url parameter, then explain results + +User: "search for web scraping tools" +→ Use searchTpmjsTools to find tools, then tell user what's available + +User: "what's the weather in Tokyo" +→ Search for a weather tool, load it, then invoke it + +Remember: Your value is in EXECUTING tools to get real results, not just describing what tools could do.`; + + // 6. Stream response with all available tools + const result = streamText({ + model: openai('gpt-4o-mini'), + system, + messages: await convertToModelMessages(messages), + tools: allTools, + stopWhen: stepCountIs(5), // Allow model to call tools AND generate text response + }); + + // Return UI message stream with tool calls and text + return result.toUIMessageStreamResponse(); + } catch (error) { + console.error('Chat API error:', error); + + return new Response( + JSON.stringify({ + success: false, + error: error instanceof Error ? error.message : 'Unknown error', + }), + { + status: 500, + headers: { 'Content-Type': 'application/json' }, + } + ); + } +} diff --git a/apps/playground/src/app/api/tools/route.ts b/apps/playground/src/app/api/tools/route.ts new file mode 100644 index 0000000..b892796 --- /dev/null +++ b/apps/playground/src/app/api/tools/route.ts @@ -0,0 +1,85 @@ +import { NextResponse } from 'next/server'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; + +interface RawTool { + id: string; + name: string; + description: string; + qualityScore: number; + importHealth: 'HEALTHY' | 'BROKEN' | 'UNKNOWN'; + executionHealth: 'HEALTHY' | 'BROKEN' | 'UNKNOWN'; + healthCheckError: string | null; + lastHealthCheck: string | null; + package?: { + npmPackageName: string; + npmVersion: string; + category: string; + frameworks: string[]; + env: Array<{ name: string; description: string; required?: boolean; default?: string }>; + }; +} + +function transformTool(tool: RawTool) { + return { + toolId: tool.id, + packageName: tool.package?.npmPackageName, + name: tool.name, + description: tool.description, + category: tool.package?.category, + version: tool.package?.npmVersion, + qualityScore: tool.qualityScore, + frameworks: tool.package?.frameworks, + env: tool.package?.env, + importUrl: `https://esm.sh/${tool.package?.npmPackageName}@${tool.package?.npmVersion}`, + importHealth: tool.importHealth, + executionHealth: tool.executionHealth, + healthCheckError: tool.healthCheckError, + lastHealthCheck: tool.lastHealthCheck, + }; +} + +export async function GET() { + try { + const baseUrl = process.env.TPMJS_API_URL || 'https://tpmjs.com'; + const allTools: RawTool[] = []; + let offset = 0; + const limit = 50; // Max allowed by the API + let hasMore = true; + + // Paginate through all tools + while (hasMore) { + const response = await fetch(`${baseUrl}/api/tools?limit=${limit}&offset=${offset}`); + + if (!response.ok) { + throw new Error(`Failed to fetch tools: ${response.statusText}`); + } + + const data = await response.json(); + const tools = data.data || []; + allTools.push(...tools); + + hasMore = data.pagination?.hasMore ?? false; + offset += limit; + + // Safety limit to prevent infinite loops + if (offset > 1000) break; + } + + return NextResponse.json({ + success: true, + tools: allTools.map(transformTool), + total: allTools.length, + }); + } catch (error) { + console.error('Failed to fetch tools:', error); + return NextResponse.json( + { + success: false, + error: error instanceof Error ? error.message : 'Failed to fetch tools', + }, + { status: 500 } + ); + } +} diff --git a/apps/playground/src/app/globals.css b/apps/playground/src/app/globals.css new file mode 100644 index 0000000..13600ad --- /dev/null +++ b/apps/playground/src/app/globals.css @@ -0,0 +1,30 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + /* Light mode (default) */ + :root { + /* Status Colors */ + --error: 0 65% 51%; /* Red */ + --error-foreground: 0 0% 100%; /* White text */ + --warning: 36 100% 50%; /* Amber */ + --warning-foreground: 0 0% 100%; + --success: 152 57% 45%; /* Green */ + --success-foreground: 0 0% 100%; + --info: 210 100% 56%; /* Blue */ + --info-foreground: 0 0% 100%; + } + + /* Dark mode */ + .dark { + --error: 0 65% 58%; /* Brighter red for dark mode */ + --error-foreground: 0 0% 100%; + --warning: 36 100% 55%; + --warning-foreground: 0 0% 100%; + --success: 152 57% 50%; + --success-foreground: 0 0% 100%; + --info: 210 100% 60%; + --info-foreground: 0 0% 100%; + } +} diff --git a/apps/playground/src/app/layout.tsx b/apps/playground/src/app/layout.tsx new file mode 100644 index 0000000..cac4e42 --- /dev/null +++ b/apps/playground/src/app/layout.tsx @@ -0,0 +1,44 @@ +import { Analytics } from '@vercel/analytics/next'; +import type { Metadata } from 'next'; +import { ThemeProvider } from 'next-themes'; +import { Space_Grotesk, Space_Mono } from 'next/font/google'; +import './globals.css'; + +const spaceGrotesk = Space_Grotesk({ + subsets: ['latin'], + variable: '--font-sans', + display: 'swap', +}); + +const spaceMono = Space_Mono({ + subsets: ['latin'], + weight: ['400', '700'], + variable: '--font-mono', + display: 'swap', +}); + +export const metadata: Metadata = { + title: 'TPMJS Playground - Test AI Tools', + description: 'Interactive playground for testing TPMJS tools with AI agents', +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}): React.ReactElement { + return ( + + + + {children} + + + + + ); +} diff --git a/apps/playground/src/app/page.tsx b/apps/playground/src/app/page.tsx new file mode 100644 index 0000000..f616fbc --- /dev/null +++ b/apps/playground/src/app/page.tsx @@ -0,0 +1,24 @@ +'use client'; + +import { ChatHeader } from '~/components/chat/ChatHeader'; +import { ChatInterface } from '~/components/chat/ChatInterface'; +import { SettingsSidebar } from '~/components/sidebar/SettingsSidebar'; +import { ToolsSidebar } from '~/components/sidebar/ToolsSidebar'; + +export default function PlaygroundPage(): React.ReactElement { + const handleClearChat = () => { + // Refresh the page to clear chat + window.location.reload(); + }; + + return ( +
+ +
+ + + +
+
+ ); +} diff --git a/apps/playground/src/components/chat/ChatHeader.tsx b/apps/playground/src/components/chat/ChatHeader.tsx new file mode 100644 index 0000000..2f6a3bd --- /dev/null +++ b/apps/playground/src/components/chat/ChatHeader.tsx @@ -0,0 +1,52 @@ +'use client'; + +import { Button } from '@tpmjs/ui/Button/Button'; +import { useTheme } from 'next-themes'; +import Link from 'next/link'; +import { useEffect, useState } from 'react'; + +interface ChatHeaderProps { + onClear: () => void; +} + +export function ChatHeader({ onClear }: ChatHeaderProps): React.ReactElement { + const { theme, setTheme } = useTheme(); + const [mounted, setMounted] = useState(false); + + // Avoid hydration mismatch + useEffect(() => { + setMounted(true); + }, []); + + const toggleTheme = () => { + setTheme(theme === 'dark' ? 'light' : 'dark'); + }; + + return ( +
+
+
+

TPMJS Playground

+ + View Registry → + +
+
+ {mounted && ( + + )} + +
+
+
+ ); +} diff --git a/apps/playground/src/components/chat/ChatInput.tsx b/apps/playground/src/components/chat/ChatInput.tsx new file mode 100644 index 0000000..a9e38d5 --- /dev/null +++ b/apps/playground/src/components/chat/ChatInput.tsx @@ -0,0 +1,63 @@ +'use client'; + +import { Button } from '@tpmjs/ui/Button/Button'; +import { Textarea } from '@tpmjs/ui/Textarea/Textarea'; +import type { FormEvent } from 'react'; + +interface ChatInputProps { + input: string; + isLoading: boolean; + onInputChange: (e: React.ChangeEvent) => void; + onSubmit: (e: FormEvent) => void; + setInput: (value: string) => void; +} + +export function ChatInput({ + input, + isLoading, + onInputChange, + onSubmit, +}: ChatInputProps): React.ReactElement { + const handleKeyDown = (e: React.KeyboardEvent) => { + if (e.key === 'Enter' && !e.shiftKey) { + e.preventDefault(); + if (input.trim() && !isLoading) { + // Trigger form submission + const form = e.currentTarget.form; + if (form) { + form.requestSubmit(); + } + } + } + }; + + return ( +
+
+
+ \",\"maxPromptLength\":200,\"checkForAIKeywords\":false,\"extractPrompts\":true}", + "description": "Analyze HTML with a textarea prompt but skip AI keyword checking." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "HTML", + "context": null + } + }, + { + "name": "prompt-engineering.analyzeIncident", + "description": "Analyzes a detailed incident report prompt to identify key elements, potential ambiguities, and improvement suggestions. Accepts incident description and optional context to evaluate prompt clarity and completeness, returning an analysis with extracted entities, identified issues, and recommendations to optimize prompt quality for AI incident assessment models.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "incidentPrompt", + "type": "string", + "description": "The complete text of the incident report prompt to analyze for clarity and quality.", + "required": true, + "defaultValue": "" + }, + { + "name": "context", + "type": "string", + "description": "Optional background or domain context for incident to inform analysis and improve relevance of suggestions.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "Flag to include actionable suggestions for improving the incident prompt clarity and informativeness.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An analysis object containing extracted incident entities, detected prompt ambiguities or missing information, and a list of actionable recommendations for prompt enhancement." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to assess the quality of an incident report prompt to ensure accurate, clear, and complete input before issuing further tasks like summarization, classification, or response generation. It helps enhance prompt engineering by identifying weaknesses and suggesting improvements specific to security incident contexts.", + "limitations": "Cannot access or verify factual accuracy of incident content; analysis is limited to prompt text quality, clarity, and structure, not incident validity or real-world data.", + "examples": [ + "Analyze the given incident prompt for missing details and clarity issues.", + "Check if the incident description includes key security event attributes and suggest improvements.", + "Evaluate ambiguity in the incident prompt and recommend ways to enhance model understanding." + ] + }, + "tags": [ + "prompt-engineering", + "incident-analysis", + "security", + "AI-prompt-optimization", + "clarity-check", + "recommendations" + ], + "examples": [ + { + "inputJson": "{\"incidentPrompt\":\"Unauthorized access was detected on server X. Details are unclear.\",\"context\":\"Security breach in corporate IT environment.\",\"includeRecommendations\":true}", + "description": "Analyze a vague incident prompt describing an unauthorized access event with insufficient details, requesting recommendations." + }, + { + "inputJson": "{\"incidentPrompt\":\"Multiple failed login attempts followed by account lockout for user123.\",\"context\":\"Authentication system monitoring.\",\"includeRecommendations\":false}", + "description": "Analyze a more detailed incident prompt about login failures without requesting recommendations, focusing on entity extraction and ambiguity detection." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Incident", + "context": null + } + }, + { + "name": "prompt-engineering.analyzeThread", + "description": "Analyzes a conversation thread consisting of multiple messages to identify prompt themes, evaluate clarity and relevance, detect potential ambiguities, and provide suggestions to improve overall prompt effectiveness. Accepts input as an array of message objects and outputs a detailed analysis report.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "threadMessages", + "type": "array", + "description": "An array of message objects forming the conversation thread to analyze. Each message should include properties like sender and content.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en') of the messages for accurate linguistic analysis.", + "required": false, + "defaultValue": "\"en\"" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Whether to include sentiment analysis for emotional context of messages.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum number of words allowed in the summary section of the output.", + "required": false, + "defaultValue": "150" + } + ], + "returns": { + "type": "object", + "description": "An analysis report including identified prompt themes, clarity scores, ambiguity flags, sentiment insights if requested, and improvement suggestions." + }, + "aiAgent": { + "useCase": "Use this tool to analyze multi-message prompt threads from users or conversation logs to understand overall prompt quality, clarity, and thematic consistency before generating or refining AI prompts.", + "limitations": "The tool does not generate new prompts or rephrase messages. It relies on clear input structure and may have limited accuracy on very informal or highly technical conversations.", + "examples": [ + "Analyze a customer support chat to identify unclear or ambiguous prompts.", + "Evaluate a user's multi-turn prompt for theme consistency and clarity.", + "Provide improvement suggestions on a developer's discussion thread regarding prompt design." + ] + }, + "tags": [ + "analysis", + "prompt", + "thread", + "conversation", + "clarity", + "sentiment", + "optimization" + ], + "examples": [ + { + "inputJson": "{\"threadMessages\":[{\"sender\":\"user\",\"content\":\"How do I write better prompts for AI?\"},{\"sender\":\"assistant\",\"content\":\"Can you clarify which AI model you are targeting?\"},{\"sender\":\"user\",\"content\":\"Mainly GPT-4, focusing on summarization.\"}] , \"language\":\"en\",\"includeSentimentAnalysis\":true,\"maxSummaryLength\":100}", + "description": "Analyzing a short thread about prompt writing for GPT-4 summarization to assess clarity and themes." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Thread", + "context": null + } + }, + { + "name": "prompt-engineering.analyzeThreat", + "description": "This tool accepts a natural language prompt related to security or potential attacks and analyzes it to identify any embedded or implied cybersecurity threats. It processes the prompt text using threat detection techniques, returning a structured assessment that highlights threat types, severity, and mitigation recommendations.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "promptText", + "type": "string", + "description": "The natural language text prompt containing potential security threats to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "threatModel", + "type": "string", + "description": "Optional threat model or framework to use for the analysis (e.g., STRIDE, MITRE ATT&CK).", + "required": false, + "defaultValue": "STRIDE" + }, + { + "name": "enableMitigationSuggestions", + "type": "boolean", + "description": "Whether to include mitigation strategies along with the threat analysis.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxThreats", + "type": "number", + "description": "Maximum number of distinct threats to identify and report.", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "An object containing identified threats with details such as type, description, severity score, and mitigation suggestions if enabled." + }, + "aiAgent": { + "useCase": "Use this tool when you need to interpret and analyze prompts that may harbor cybersecurity risks or threats, for example evaluating prompt content for injection attacks, data leakage, or malicious intent. This helps ensure prompt safety and helps generate safer AI interactions by flagging threats and suggesting mitigations.", + "limitations": "This tool cannot detect highly novel or zero-day threats not represented in the underlying threat models. It also cannot execute real-time penetration tests or guarantee 100% security validation. It relies on textual analysis and known threat patterns.", + "examples": [ + "Analyze the following prompt for potential security threats: 'Extract user credentials from the system logs.'", + "Assess the prompt: 'Generate SQL queries that bypass authentication.'", + "Check if the prompt suggests any harmful instructions or exploitation techniques." + ] + }, + "tags": [ + "prompt-engineering", + "security", + "threat-analysis", + "AI-safety", + "cybersecurity", + "prompt-safety" + ], + "examples": [ + { + "inputJson": "{\"promptText\":\"Create a script that accesses confidential user data without permission.\",\"threatModel\":\"MITRE ATT&CK\",\"enableMitigationSuggestions\":true,\"maxThreats\":3}", + "description": "Analyze a prompt that explicitly asks for unauthorized data access to identify threats and mitigations." + }, + { + "inputJson": "{\"promptText\":\"Generate code to hash passwords securely.\",\"enableMitigationSuggestions\":true}", + "description": "Analyze a prompt related to security best practices, expected to find no threats or to confirm secure intent." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Threat", + "context": null + } + }, + { + "name": "prompt-engineering.analyzeDeal", + "description": "Analyzes the content and structure of a business deal prompt, evaluating clarity, completeness, bias, and potential improvements. Accepts a deal prompt as input, processes it by applying NLP techniques and prompt engineering best practices, and returns a detailed analysis with suggestions to optimize the prompt for AI consumption.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "dealPrompt", + "type": "string", + "description": "The textual prompt describing the business deal to be analyzed. Required for evaluation.", + "required": true, + "defaultValue": "" + }, + { + "name": "contextualInformation", + "type": "string", + "description": "Optional additional context or background information related to the deal for enhanced analysis.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the prompt input to tailor the analysis accordingly (e.g., 'en' for English).", + "required": false, + "defaultValue": "en" + }, + { + "name": "detailedAnalysis", + "type": "boolean", + "description": "If true, the tool provides an in-depth breakdown of prompt components and suggestions. Defaults to false for concise output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object detailing the prompt analysis including clarity score, completeness score, detected biases, identified issues, and recommendations for improvement." + }, + "aiAgent": { + "useCase": "This tool is intended for AI agents tasked with optimizing or validating business deal prompts before they are fed to language models. It helps improve prompt quality by identifying ambiguities, missing information, or potential bias, thereby enhancing AI output relevance and fairness.", + "limitations": "Cannot provide legal advice or verify factual accuracy of the deal content. Analysis is limited to prompt construction and linguistic clarity.", + "examples": [ + "Analyze a deal prompt to check for clarity and bias.", + "Optimize a sales negotiation prompt for completeness and neutral tone.", + "Review a proposed partnership deal prompt for missing critical information." + ] + }, + "tags": [ + "prompt-analysis", + "business-deal", + "nlp", + "deal-optimization", + "prompt-engineering" + ], + "examples": [ + { + "inputJson": "{\"dealPrompt\":\"Draft a proposal to purchase 1000 units of product X at a discounted price.\",\"contextualInformation\":\"Targeting a supplier with a history of bulk discounts.\",\"language\":\"en\",\"detailedAnalysis\":true}", + "description": "Analyze a purchase proposal prompt with additional context to identify improvement areas." + }, + { + "inputJson": "{\"dealPrompt\":\"Prepare a negotiation prompt for a partnership agreement.\",\"language\":\"en\",\"detailedAnalysis\":false}", + "description": "Quick evaluation of a partnership negotiation prompt for clarity." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Deal", + "context": null + } + }, + { + "name": "prompt-engineering.sendComment", + "description": "Sends a comment to a specified prompt engineering discussion thread or feedback system. Accepts the comment text, target thread identifier, optional author name, and visibility settings; processes and submits the comment to the system, returning confirmation and comment metadata.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "commentText", + "type": "string", + "description": "The content of the comment to be sent", + "required": true, + "defaultValue": "" + }, + { + "name": "threadId", + "type": "string", + "description": "Identifier of the discussion thread or prompt where the comment should be posted", + "required": true, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "Name of the comment author; if empty, defaults to anonymous", + "required": false, + "defaultValue": "\"\"" + }, + { + "name": "isVisibleToPublic", + "type": "boolean", + "description": "Flag indicating if the comment should be publicly visible or private", + "required": false, + "defaultValue": "true" + }, + { + "name": "tags", + "type": "array", + "description": "Optional tags or labels to associate with the comment to facilitate categorization", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing status of the submission, comment ID, timestamp of submission, and a summary of the submitted comment" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically participate in prompt engineering discussions by submitting comments, feedback, or suggestions to collaborative threads or systems. It facilitates interaction within prompt engineering platforms by automating comment posting based on AI-generated content.", + "limitations": "This tool does not handle authentication or access control; external systems must manage user identities and permissions. It also does not perform content moderation; submitted comments should be pre-validated for appropriateness.", + "examples": [ + "Post a suggestion comment to a specific prompt discussion thread.", + "Send anonymous feedback about a prompt to a feedback system.", + "Add a comment with specific tags for categorization on prompt improvement." + ] + }, + "tags": [ + "prompt-engineering", + "comment", + "communication", + "feedback", + "discussion", + "automation" + ], + "examples": [ + { + "inputJson": "{\"commentText\":\"I think adding more examples would improve clarity.\",\"threadId\":\"thread-12345\",\"authorName\":\"AI_HelperBot\",\"isVisibleToPublic\":true,\"tags\":[\"suggestion\",\"clarity\"]}", + "description": "Send a public comment suggesting adding examples, tagged as suggestion and clarity, authored by AI_HelperBot." + }, + { + "inputJson": "{\"commentText\":\"This prompt has edge cases that can cause errors.\",\"threadId\":\"thread-67890\",\"authorName\":\"\",\"isVisibleToPublic\":false,\"tags\":[]}", + "description": "Send a private, anonymous comment about edge cases in a prompt." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Comment", + "context": null + } + }, + { + "name": "prompt-engineering.analyzeXML", + "description": "Analyzes XML content focused on prompt engineering contexts by parsing the XML input, extracting tags, attributes, and textual content relevant to AI prompt structures. It generates a detailed report summarizing XML structure, anomalies, and potential prompt optimization insights.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "xmlString", + "type": "string", + "description": "The raw XML content as a string to be analyzed for prompt engineering purposes.", + "required": true, + "defaultValue": "" + }, + { + "name": "extractAttributes", + "type": "boolean", + "description": "Flag to indicate whether to extract and analyze attributes from XML tags, useful for detailed prompt element inspection.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxDepth", + "type": "number", + "description": "Limits the depth of XML tree traversal during analysis to avoid overly deep parsing in large documents.", + "required": false, + "defaultValue": "5" + }, + { + "name": "includeTextContent", + "type": "boolean", + "description": "Whether to include textual content inside XML elements in the analysis output for context understanding.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing a summary report of the XML structure including tag counts, attribute statistics, depth metrics, and any detected irregularities or optimization suggestions for prompt design." + }, + "aiAgent": { + "useCase": "This tool is ideal when an AI agent needs to understand or optimize prompts represented or structured in XML format, such as prompt templates, configurations, or AI interaction protocols. It helps identify structural patterns or issues that can affect prompt effectiveness.", + "limitations": "Cannot validate XML against schemas or DTDs; analysis is structural and heuristic without semantic understanding beyond prompt engineering context.", + "examples": [ + "Analyze an XML prompt template to identify potential redundancies in tag usage.", + "Extract attributes from XML-based prompt configurations to optimize variable placeholders.", + "Summarize text content within XML elements to improve prompt clarity and structure." + ] + }, + "tags": [ + "analysis", + "prompt-engineering", + "XML", + "structure", + "optimization" + ], + "examples": [ + { + "inputJson": "{\"xmlString\":\"Generate a summary.AI\",\"extractAttributes\":true,\"maxDepth\":3,\"includeTextContent\":true}", + "description": "Analyze a simple prompt XML snippet including attributes and text content." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "XML", + "context": null + } + }, + { + "name": "prompt-engineering.uploadCSV", + "description": "Uploads a CSV file containing prompt templates or prompt-related datasets, parses and validates the data, and converts it into a structured JSON object for use in prompt optimization tasks or further prompt engineering workflows.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "csvContent", + "type": "string", + "description": "The raw content of the CSV file as a string, including header row and data rows.", + "required": true, + "defaultValue": "" + }, + { + "name": "hasHeader", + "type": "boolean", + "description": "Indicates whether the CSV content contains a header row (true) or not (false).", + "required": false, + "defaultValue": "true" + }, + { + "name": "delimiter", + "type": "string", + "description": "The character used to separate columns in the CSV. Default is comma (,).", + "required": false, + "defaultValue": "," + }, + { + "name": "encoding", + "type": "string", + "description": "Character encoding of the CSV content, e.g., UTF-8.", + "required": false, + "defaultValue": "UTF-8" + }, + { + "name": "maxRows", + "type": "number", + "description": "Maximum number of rows to parse from the CSV. Use 0 for no limit.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An object containing the parsed CSV data as an array of prompt entries, validation status, and any errors encountered during parsing." + }, + "aiAgent": { + "useCase": "Use this tool when you receive prompt data or prompt templates in CSV format that need to be ingested and structured for use within prompt engineering workflows, such as prompt variant testing, evaluation, or dataset enrichment. It is useful when importing external prompt datasets or when batch uploading prompts for further processing.", + "limitations": "This tool only parses and validates CSV content; it does not execute prompt evaluation or analytics by itself. It also expects well-formed CSV data and may not handle malformed or complex escaped CSV content robustly.", + "examples": [ + "Upload a CSV file containing multiple prompt templates for sentiment analysis to structure them for batch prompt testing.", + "Parse a CSV file listing prompt variations and associated metadata to prepare for automated prompt optimization.", + "Ingest a CSV export from a prompt dataset to convert it into JSON objects for downstream processing." + ] + }, + "tags": [ + "csv", + "prompt-engineering", + "upload", + "data-ingestion", + "prompt-templates" + ], + "examples": [ + { + "inputJson": "{\"csvContent\":\"prompt,text,label\\nGreeting,Hello! How can I assist you today?,neutral\\nFarewell,Goodbye and have a great day!,positive\",\"hasHeader\":true,\"delimiter\":\",\",\"encoding\":\"UTF-8\",\"maxRows\":0}", + "description": "Uploading a CSV with prompt templates including prompt type, text, and sentiment label." + }, + { + "inputJson": "{\"csvContent\":\"prompt_id|prompt_text|category\\n1|What is your name?|basic\\n2|Describe your last vacation.|storytelling\",\"hasHeader\":true,\"delimiter\":\"|\",\"encoding\":\"UTF-8\",\"maxRows\":0}", + "description": "CSV data using pipe (|) as delimiter containing prompts with IDs and categories." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "CSV", + "context": null + } + }, + { + "name": "prompt-engineering.formatCSV", + "description": "Formats a CSV string input according to specified options such as delimiter, quote character, header inclusion, and whitespace trimming. Accepts raw CSV data as a string, processes it based on parameters, and outputs a clean, standardized CSV string ready for use in prompt engineering and AI model inputs.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "csvData", + "type": "string", + "description": "The raw CSV data string to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "delimiter", + "type": "string", + "description": "Character to use as the CSV field delimiter. Defaults to comma (,).", + "required": false, + "defaultValue": "," + }, + { + "name": "quoteChar", + "type": "string", + "description": "Character to use for quoting fields. Defaults to double quote (\").", + "required": false, + "defaultValue": "\"" + }, + { + "name": "includeHeader", + "type": "boolean", + "description": "Whether to include the header row in output. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "trimWhitespace", + "type": "boolean", + "description": "Whether to trim leading and trailing whitespace from each field. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "lineTerminator", + "type": "string", + "description": "Character(s) to terminate lines. Defaults to newline (\\n).", + "required": false, + "defaultValue": "\n" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted CSV string under the property 'formattedCSV'." + }, + "aiAgent": { + "useCase": "Use this tool when you need to cleanly format or reformat CSV data inputs for AI prompt engineering tasks to ensure proper parsing and model understanding, especially when dealing with inconsistent delimiters, quoting styles, or spacing issues. It helps prepare CSV data for injection into prompts or feeding to models needing structured inputs.", + "limitations": "This tool does not validate CSV correctness or fix malformed CSV beyond formatting. It cannot parse deeply nested CSV structures or convert between different data formats.", + "examples": [ + "Format a CSV string replacing semicolons with commas and ensuring quotes around fields.", + "Trim spaces and reformat CSV data before feeding it into a text-generation prompt.", + "Remove header row and output CSV with tab delimiters for specialized model input." + ] + }, + "tags": [ + "prompt-engineering", + "formatting", + "CSV", + "data-cleaning", + "AI-input" + ], + "examples": [ + { + "inputJson": "{\"csvData\":\"name;age;location\\nAlice ; 30 ; New York\\nBob ;25;Los Angeles\",\"delimiter\":\";\",\"quoteChar\":\"\\\"\",\"includeHeader\":true,\"trimWhitespace\":true,\"lineTerminator\":\"\\n\"}", + "description": "Input CSV with semicolon delimiters and spaces; outputs formatted CSV with commas and trimmed fields." + }, + { + "inputJson": "{\"csvData\":\"id,name\\n1,John\\n2,Emma\",\"delimiter\":\",\",\"quoteChar\":\"'\",\"includeHeader\":false,\"trimWhitespace\":false,\"lineTerminator\":\"\\r\\n\"}", + "description": "Omit headers and use single quotes with Windows line endings." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "CSV", + "context": null + } + }, + { + "name": "prompt-engineering.formatModule", + "description": "Formats code modules for prompt engineering by cleaning, indenting, and optionally adding syntax highlighting or comments. Accepts raw code as input and outputs a standardized, well-structured code block suitable for use in prompts or documentation.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "code", + "type": "string", + "description": "The raw source code module to format properly for prompt use.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language of the input code to apply language-specific formatting and syntax highlighting if enabled.", + "required": false, + "defaultValue": "python" + }, + { + "name": "indentationSpaces", + "type": "number", + "description": "Number of spaces for indentation in the formatted output code.", + "required": false, + "defaultValue": "4" + }, + { + "name": "addSyntaxHighlighting", + "type": "boolean", + "description": "Whether to add markdown or prompt-specific syntax highlighting tags around the code block.", + "required": false, + "defaultValue": "true" + }, + { + "name": "addHeaderComment", + "type": "boolean", + "description": "Whether to prepend a standardized header comment summarizing the module functionality.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted code as a string, ready to embed in prompts or documents, with optional syntax highlighting and header comments." + }, + "aiAgent": { + "useCase": "Use this tool when you need to prepare or clean up code modules for insertion into AI prompts, documentation, or examples, ensuring consistent formatting and readability. Ideal when the input code is raw, poorly formatted, or missing conventional structure.", + "limitations": "This tool does not perform semantic code analysis, optimization, or debugging. It supports common programming languages but may not perfectly format exotic or domain-specific languages.", + "examples": [ + "Format a raw Python function module with standard indentation and syntax highlighting.", + "Prepare a JavaScript code snippet for prompt embedding without header comments.", + "Format a multi-line code module, changing indentation to 2 spaces and enabling syntax highlighting." + ] + }, + "tags": [ + "formatting", + "prompt-engineering", + "code", + "module", + "syntax-highlighting", + "indentation" + ], + "examples": [ + { + "inputJson": "{\"code\":\"def add(a,b):\\nreturn a+b\",\"language\":\"python\",\"indentationSpaces\":4,\"addSyntaxHighlighting\":true,\"addHeaderComment\":false}", + "description": "Format a simple Python function with standard 4 space indentation and syntax highlighting." + }, + { + "inputJson": "{\"code\":\"function add(a,b){return a+b;}\",\"language\":\"javascript\",\"indentationSpaces\":2,\"addSyntaxHighlighting\":true,\"addHeaderComment\":true}", + "description": "Format a JavaScript function with 2 space indentation, add syntax highlighting and a header comment." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Module", + "context": null + } + }, + { + "name": "prompt-engineering.formatInvoice", + "description": "This tool accepts raw invoice data including client info, items, prices, and tax details as JSON, and transforms it into a well-structured, formatted invoice prompt suitable for AI generation or display. It outputs a clear, human-readable formatted invoice text based on specified formatting options.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "invoiceData", + "type": "object", + "description": "Structured invoice data including client details, items array, pricing, taxes, and totals.", + "required": true, + "defaultValue": "" + }, + { + "name": "currencySymbol", + "type": "string", + "description": "Currency symbol to display with prices (e.g., $, €, £).", + "required": false, + "defaultValue": "$" + }, + { + "name": "dateFormat", + "type": "string", + "description": "Format string for all date fields in the output (e.g., 'MM/DD/YYYY').", + "required": false, + "defaultValue": "MM/DD/YYYY" + }, + { + "name": "includeTaxDetails", + "type": "boolean", + "description": "Whether to include detailed tax breakdown in the formatted invoice.", + "required": false, + "defaultValue": "true" + }, + { + "name": "lineItemSeparator", + "type": "string", + "description": "String used to separate line items formatting (e.g., newline, dashed line).", + "required": false, + "defaultValue": "\\n" + }, + { + "name": "decimalPlaces", + "type": "number", + "description": "Number of decimal places to show for monetary values.", + "required": false, + "defaultValue": "2" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted invoice string under 'formattedInvoice' key." + }, + "aiAgent": { + "useCase": "Use this tool when you have raw invoice data and want to convert it into a clean, human-readable invoice text prompt for AI models or end-user display. It helps standardize invoices with configurable currency, date formats, and optionally detailed tax info to facilitate document generation or review.", + "limitations": "This tool formats invoice data into text but does not generate PDFs or graphical invoices. It assumes well-structured input data and does not validate accounting correctness or legal compliance.", + "examples": [ + "Format invoice data JSON into a customer-ready invoice text with USD and MM/DD/YYYY date format.", + "Create an invoice prompt that excludes tax details for a quick summary display.", + "Generate an invoice formatted with euro symbol and 3 decimals for precise pricing." + ] + }, + "tags": [ + "prompt-engineering", + "formatting", + "invoice", + "document", + "financial", + "text-generation" + ], + "examples": [ + { + "inputJson": "{\"invoiceData\":{\"clientName\":\"Acme Corp\",\"clientAddress\":\"123 Elm Street\",\"invoiceNumber\":\"INV-1001\",\"invoiceDate\":\"2024-05-20\",\"dueDate\":\"2024-06-20\",\"items\":[{\"description\":\"Widget A\",\"quantity\":10,\"unitPrice\":9.99},{\"description\":\"Widget B\",\"quantity\":5,\"unitPrice\":19.995}],\"taxes\":{\"VAT\":0.2},\"notes\":\"Thank you for your business.\"},\"currencySymbol\":\"$\",\"dateFormat\":\"MM/DD/YYYY\",\"includeTaxDetails\":true,\"lineItemSeparator\":\"\\n\",\"decimalPlaces\":2}", + "description": "Format a typical USD invoice for Acme Corp with tax details included and two decimal places." + }, + { + "inputJson": "{\"invoiceData\":{\"clientName\":\"Globex Inc\",\"clientAddress\":\"456 Oak Ave\",\"invoiceNumber\":\"2024-Invoice-007\",\"invoiceDate\":\"2024-01-15\",\"dueDate\":\"2024-02-15\",\"items\":[{\"description\":\"Consulting Services\",\"quantity\":30,\"unitPrice\":150}],\"taxes\":{},\"notes\":\"Payment due within 30 days.\"},\"currencySymbol\":\"€\",\"dateFormat\":\"DD-MM-YYYY\",\"includeTaxDetails\":false,\"lineItemSeparator\":\"---\\n\",\"decimalPlaces\":2}", + "description": "Format an invoice in euros without tax details and a custom line separator." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Invoice", + "context": null + } + }, + { + "name": "prompt-engineering.buildInstance", + "description": "Builds a customized prompt engineering instance tailored to user requirements. Accepts configuration parameters including prompt templates, optimization strategies, and testing criteria. Processes these inputs to generate a deployable prompt instance for iterative AI prompt management and optimization.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "instanceName", + "type": "string", + "description": "The unique name for the prompt engineering instance to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "promptTemplates", + "type": "array", + "description": "List of prompt template strings to seed the instance with initial prompts.", + "required": true, + "defaultValue": "" + }, + { + "name": "optimizationStrategy", + "type": "string", + "description": "The strategy or algorithm to optimize prompt performance, e.g., 'reinforcement-learning', 'genetic-algorithm'.", + "required": false, + "defaultValue": "rule-based" + }, + { + "name": "maxIterations", + "type": "number", + "description": "Maximum number of optimization iterations to perform.", + "required": false, + "defaultValue": "10" + }, + { + "name": "evaluationMetric", + "type": "string", + "description": "Metric used to evaluate prompt effectiveness, such as 'accuracy', 'perplexity', or 'user-satisfaction'.", + "required": false, + "defaultValue": "accuracy" + }, + { + "name": "autoTestCases", + "type": "array", + "description": "Optional set of test cases as inputs with expected outputs to validate prompt responses.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "enableLogging", + "type": "boolean", + "description": "Flag to enable detailed logging of prompt build and optimization phases.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object representing the constructed prompt engineering instance, including its configuration, optimization results, and a unique instance ID." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create a reusable, configurable prompt engineering instance that supports optimization and testing workflows for deploying AI prompts in production or experimental setups. It is ideal for scenarios requiring systematic prompt iteration and performance tuning.", + "limitations": "This tool does not execute prompts on external AI models directly; it only builds and manages the prompt instance configuration and optimization framework.", + "examples": [ + "Build a prompt instance named 'emailHelper' with 3 prompt templates using genetic algorithm optimization for 15 iterations.", + "Create a prompt instance called 'chatbotStarter' with default optimization, enabling logging for debugging.", + "Generate a prompt instance with custom test cases to validate prompt effectiveness against user queries." + ] + }, + "tags": [ + "prompt-engineering", + "build", + "instance", + "optimization", + "configuration", + "AI-models" + ], + "examples": [ + { + "inputJson": "{\"instanceName\":\"emailHelper\",\"promptTemplates\":[\"Generate a professional email.\",\"Write a follow-up email.\",\"Compose a thank-you note.\"],\"optimizationStrategy\":\"genetic-algorithm\",\"maxIterations\":15,\"evaluationMetric\":\"user-satisfaction\",\"enableLogging\":true}", + "description": "Creates a prompt instance named 'emailHelper' with specified templates and genetic algorithm based optimization with logging enabled." + }, + { + "inputJson": "{\"instanceName\":\"chatbotStarter\",\"promptTemplates\":[\"Greet the user.\",\"Handle user request.\",\"Provide help instructions.\"],\"enableLogging\":false}", + "description": "Builds a basic prompt instance named 'chatbotStarter' with default optimization and no logging." + }, + { + "inputJson": "{\"instanceName\":\"faqAssistant\",\"promptTemplates\":[\"Answer FAQ question.\"],\"autoTestCases\":[{\"input\":\"What is your return policy?\",\"expectedOutput\":\"You can return items within 30 days.\"}],\"evaluationMetric\":\"accuracy\"}", + "description": "Generates a prompt instance with a single template and automated test case to validate accuracy." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Instance", + "context": null + } + }, + { + "name": "prompt-engineering.buildVariable", + "description": "Constructs a prompt variable definition for AI prompt templates. Accepts a variable name, data type, and optional constraints or default value. Processes these inputs to output a structured variable object usable in prompt engineering to inject dynamic content or control input generation.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The identifier name of the variable to be used in the prompt template.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataType", + "type": "string", + "description": "The expected data type of the variable (e.g., string, number, boolean).", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Human-readable explanation of what this variable represents or its intended use.", + "required": false, + "defaultValue": "" + }, + { + "name": "defaultValue", + "type": "string", + "description": "Optional default value to use for this variable if none is provided at runtime.", + "required": false, + "defaultValue": "" + }, + { + "name": "constraints", + "type": "object", + "description": "Optional constraints like min/max for numbers, allowed values array, or regex pattern for strings to validate variable input.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object describing the variable definition including name, type, description, default value, and any constraints for use in prompt templates or AI input validation." + }, + "aiAgent": { + "useCase": "Use this tool when you need to formalize and build reusable prompt variables with clear typing, descriptions, and constraints to ensure consistent AI prompt generation and easier downstream input validation or substitution.", + "limitations": "Does not generate prompt text or handle variable substitution itself; only builds the variable definition metadata.", + "examples": [ + "Create a variable 'userName' of type string with description and default value.", + "Build a number-type variable 'maxAttempts' with min/max constraints.", + "Define a boolean variable 'isPremiumUser' without default but with description." + ] + }, + "tags": [ + "prompt-engineering", + "variable-definition", + "prompt-variables", + "input-validation", + "AI-prompting" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"userName\",\"dataType\":\"string\",\"description\":\"Name of the user to personalize the prompt.\",\"defaultValue\":\"Guest\",\"constraints\":{\"pattern\":\"^[A-Za-z ]+$\"}}", + "description": "Defines a string variable 'userName' with a regex constraint allowing alphabets and spaces, defaulting to 'Guest'." + }, + { + "inputJson": "{\"variableName\":\"retryCount\",\"dataType\":\"number\",\"description\":\"Number of retries allowed.\",\"defaultValue\":\"3\",\"constraints\":{\"min\":1,\"max\":10}}", + "description": "Creates a number variable 'retryCount' with minimum 1 and maximum 10, defaulting to 3." + }, + { + "inputJson": "{\"variableName\":\"isVerified\",\"dataType\":\"boolean\",\"description\":\"Flag indicating verification status.\",\"defaultValue\":\"false\"}", + "description": "Defines a boolean variable 'isVerified' defaulting to false." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Variable", + "context": null + } + }, + { + "name": "prompt-engineering.generateTrend", + "description": "Generates insightful trends from text-based prompt data by analyzing frequency, sentiment, and emerging themes over a specified time range. Accepts raw prompt logs or arrays of prompt texts, processes them with NLP techniques, and outputs summarized trend reports including keyword growth, sentiment evolution, and topic clusters.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "promptData", + "type": "array", + "description": "Array of prompt texts or objects containing prompt text and timestamp for analysis.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "ISO 8601 formatted start date to filter prompts for trend analysis (e.g., '2023-01-01T00:00:00Z').", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "ISO 8601 formatted end date to filter prompts for trend analysis (e.g., '2023-12-31T23:59:59Z').", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en') indicating the prompts' language for appropriate NLP processing.", + "required": false, + "defaultValue": "en" + }, + { + "name": "maxTopics", + "type": "number", + "description": "Maximum number of distinct trending topics or clusters to identify and report.", + "required": false, + "defaultValue": "5" + }, + { + "name": "includeSentiment", + "type": "boolean", + "description": "Flag to include sentiment analysis in the trend report.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing overall trend summary including keyword frequency over time, identified topic clusters with representative prompts, sentiment trend graph data, and optionally alerts on emerging or fading prompt themes." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to analyze a large corpus of text prompts to detect evolving trends, significant keywords, and sentiment changes over time. It is ideal for understanding user interests, model prompt optimization patterns, or monitoring domain-specific terminology shifts in prompt usage.", + "limitations": "This tool does not generate actual prompt suggestions or perform deep semantic generation. It focuses solely on analytical summarization of existing prompt data. Quality of trend detection depends on sufficient data volume and temporal distribution.", + "examples": [ + "Analyze prompt logs from the past quarter to identify trending topics and sentiment shifts.", + "Summarize emerging themes in prompts related to AI model usage for the last month.", + "Generate a trend report from an array of customer feedback prompts in English with sentiment included." + ] + }, + "tags": [ + "prompt-engineering", + "trend-analysis", + "nlp", + "sentiment-analysis", + "topic-modeling", + "analytics" + ], + "examples": [ + { + "inputJson": "{\"promptData\":[{\"text\":\"How to fine-tune GPT models?\",\"timestamp\":\"2024-01-10T12:00:00Z\"},{\"text\":\"Best prompt templates for summarization\",\"timestamp\":\"2024-01-15T08:30:00Z\"},{\"text\":\"Tips for writing debugging prompts\",\"timestamp\":\"2024-02-05T16:45:00Z\"}],\"startDate\":\"2024-01-01T00:00:00Z\",\"endDate\":\"2024-02-28T23:59:59Z\",\"language\":\"en\",\"maxTopics\":3,\"includeSentiment\":true}", + "description": "Analyze prompts from January to February 2024 to identify top 3 trending topics with sentiment included." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Trend", + "context": null + } + }, + { + "name": "prompt-engineering.generateChart", + "description": "Generates a detailed textual prompt to create various types of charts from provided data and specifications. Accepts chart type, data points, labels, and styling preferences, and returns a structured, clear prompt that can be used with AI models or visualization tools to render the specified chart.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "chartType", + "type": "string", + "description": "Type of chart to generate (e.g., bar, line, pie, scatter).", + "required": true, + "defaultValue": "" + }, + { + "name": "data", + "type": "array", + "description": "Array of data points or objects representing the values to be visualized.", + "required": true, + "defaultValue": "" + }, + { + "name": "labels", + "type": "array", + "description": "Optional array of labels corresponding to the data points or categories.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "title", + "type": "string", + "description": "Title of the chart.", + "required": false, + "defaultValue": "" + }, + { + "name": "xAxisLabel", + "type": "string", + "description": "Label for the x-axis, if applicable.", + "required": false, + "defaultValue": "" + }, + { + "name": "yAxisLabel", + "type": "string", + "description": "Label for the y-axis, if applicable.", + "required": false, + "defaultValue": "" + }, + { + "name": "colors", + "type": "array", + "description": "Optional array of color strings to style the chart elements.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "style", + "type": "string", + "description": "Additional style description or theme for the chart (e.g., minimalist, colorful, professional).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing a detailed textual prompt string to generate the specified chart using AI or visualization tools." + }, + "aiAgent": { + "useCase": "Use this tool when you need to produce detailed, clear textual prompts tailored for AI models or visualization tools to generate charts based on specific data and formatting requirements. It is ideal for automating prompt creation that drives visual chart outputs from textual inputs.", + "limitations": "This tool does not generate actual visual charts, only descriptive prompts. It relies on downstream systems to interpret the prompt and render the chart. Complex data transformations or data validation must be done separately.", + "examples": [ + "Generate a prompt for a bar chart showing monthly sales data with labels and custom colors.", + "Create a prompt for a pie chart displaying market share percentages with a professional style.", + "Produce a prompt for a line chart of temperature trends over time with axis labels and a title." + ] + }, + "tags": [ + "prompt-engineering", + "chart-generation", + "data-visualization", + "ai-prompt", + "media" + ], + "examples": [ + { + "inputJson": "{\"chartType\":\"bar\",\"data\":[12,19,3,5,2,3],\"labels\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\"],\"title\":\"Monthly Sales\",\"xAxisLabel\":\"Month\",\"yAxisLabel\":\"Sales Units\",\"colors\":[\"#4A90E2\",\"#50E3C2\",\"#9013FE\",\"#F5A623\"],\"style\":\"colorful\"}", + "description": "Generate a colorful bar chart prompt showing monthly sales data with labels and axis titles." + }, + { + "inputJson": "{\"chartType\":\"pie\",\"data\":[40,30,20,10],\"labels\":[\"Product A\",\"Product B\",\"Product C\",\"Product D\"],\"title\":\"Market Share\",\"style\":\"professional\"}", + "description": "Create a professional style pie chart prompt presenting market share percentages by product." + }, + { + "inputJson": "{\"chartType\":\"line\",\"data\":[22,24,19,23,25,28,30],\"labels\":[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"],\"title\":\"Weekly Temperature Trends\",\"xAxisLabel\":\"Day\",\"yAxisLabel\":\"Temperature (°C)\",\"style\":\"minimalist\"}", + "description": "Generate a minimalist line chart prompt for weekly temperature trends with axis labels and title." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Chart", + "context": null + } + }, + { + "name": "prompt-engineering.generateSession", + "description": "Generates an analytics session report based on a series of prompt interactions for AI models. Accepts an array of prompt-response pairs along with timestamps, analyzes engagement and success metrics, and outputs a comprehensive session summary with insights and statistics.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "promptResponses", + "type": "array", + "description": "An array of objects each containing 'prompt' (string), 'response' (string), and 'timestamp' (ISO string) representing the interactions in the session.", + "required": true, + "defaultValue": "" + }, + { + "name": "sessionId", + "type": "string", + "description": "A unique identifier for the session being generated.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Whether to include sentiment analysis of the responses in the session summary.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum character length for the generated session summary report.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing sessionId, totalPrompts, averageResponseLength, engagementScore, sentimentSummary (if requested), and a text summary of the session analytics." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to analyze and summarize a sequence of prompt-response interactions to assess performance, engagement, and user experience for a session. Helpful in improving prompt designs and understanding session dynamics.", + "limitations": "Does not execute prompts or validate factual correctness of responses; sentiment analysis may be approximate and context-dependent.", + "examples": [ + "Generate a session report for a user interaction with prompt-response logs to evaluate engagement.", + "Summarize prompt effectiveness and provide insights from a series of AI model interactions.", + "Include sentiment analysis to understand user satisfaction within a prompt response session." + ] + }, + "tags": [ + "prompt-engineering", + "analytics", + "session", + "reporting", + "engagement", + "sentiment-analysis", + "summary" + ], + "examples": [ + { + "inputJson": "{\"promptResponses\":[{\"prompt\":\"How to reset password?\",\"response\":\"To reset your password, go to settings...\",\"timestamp\":\"2024-04-21T10:00:00Z\"},{\"prompt\":\"What is AI?\",\"response\":\"Artificial Intelligence (AI) is the simulation of human intelligence...\",\"timestamp\":\"2024-04-21T10:05:00Z\"}],\"sessionId\":\"session123\",\"includeSentimentAnalysis\":true,\"maxSummaryLength\":800}", + "description": "Generate a session analytics report with sentiment analysis for two prompt-response pairs with a specified session ID and summary length limit." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Session", + "context": null + } + }, + { + "name": "prompt-engineering.generateXML", + "description": "Generates structured XML documents based on specified prompt inputs and template schemas. Accepts a prompt string describing the desired XML content, optional XML schema or template to guide structure, and outputs a well-formed XML string matching the input constraints.", + "category": "prompt-engineering", + "parameters": [ + { + "name": "prompt", + "type": "string", + "description": "The natural language instruction describing the content and structure of the XML to generate.", + "required": true, + "defaultValue": "" + }, + { + "name": "xmlSchema", + "type": "string", + "description": "Optional XML Schema Definition (XSD) as a string to validate and guide the XML structure.", + "required": false, + "defaultValue": "" + }, + { + "name": "rootElementName", + "type": "string", + "description": "Name of the root XML element to use if not specified in the prompt or schema.", + "required": false, + "defaultValue": "root" + }, + { + "name": "includeComments", + "type": "boolean", + "description": "Flag to include explanatory comments in the generated XML output.", + "required": false, + "defaultValue": "false" + }, + { + "name": "prettyPrint", + "type": "boolean", + "description": "Format the output XML with indentation and line breaks for readability.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxDepth", + "type": "number", + "description": "Maximum nesting depth to allow in the generated XML to prevent overly complex structures.", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "Object containing the generated XML string and any validation messages or errors if applicable." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to convert descriptive prompts into structured XML data, for example, generating configuration files, metadata, or document templates automatically. It is especially useful when the XML structure must follow a specific schema or when the agent must produce machine-readable XML outputs from natural language instructions.", + "limitations": "This tool cannot generate XML that requires deep domain-specific knowledge not inferable from the prompt or schema. It does not perform XML schema validation beyond formatting and may not resolve ambiguities without explicit user guidance.", + "examples": [ + "Generate XML for a bookstore catalog listing books with title, author, and price.", + "Create an XML configuration file for a web server with specified settings from a prompt.", + "Produce metadata XML for a digital photo album described in natural language." + ] + }, + "tags": [ + "prompt-engineering", + "generate", + "XML", + "data-format", + "template", + "serialization" + ], + "examples": [ + { + "inputJson": "{\"prompt\":\"Create an XML representation of a bookstore with books having title, author, and price fields.\",\"rootElementName\":\"bookstore\",\"prettyPrint\":true}", + "description": "Generate a bookstore XML document with specified book elements." + }, + { + "inputJson": "{\"prompt\":\"Generate an XML config with server name 'example', port 8080, and SSL enabled.\",\"rootElementName\":\"serverConfig\",\"includeComments\":true}", + "description": "Generate an XML configuration file for a basic server setup including comments." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "XML", + "context": null + } + }, + { + "name": "model-management.analyzeConversion", + "description": "Analyzes AI model conversion metrics by processing input conversion event data to compute key performance indicators like conversion rate, drop-off, and funnel efficiency. Accepts structured event logs representing user interactions and outputs a detailed analytics summary to help optimize model deployment strategies.", + "category": "model-management", + "parameters": [ + { + "name": "conversionEvents", + "type": "array", + "description": "Array of conversion event objects representing user interactions and actions relevant to the AI model conversion funnel.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeWindow", + "type": "object", + "description": "An optional object specifying start and end timestamps (ISO 8601 strings) to filter events within a specific analysis period.", + "required": false, + "defaultValue": "" + }, + { + "name": "segmentBy", + "type": "array", + "description": "Optional list of strings representing event properties or user attributes to segment the conversion analysis (e.g., device type, geography).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "minEventsThreshold", + "type": "number", + "description": "Minimum number of events required in a segment to include it in the analysis results to avoid noise from sparse data.", + "required": false, + "defaultValue": "10" + }, + { + "name": "includeDropOff", + "type": "boolean", + "description": "Flag indicating whether to calculate and include drop-off rates at each funnel step.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An analysis summary object containing overall conversion rate, detailed funnel step metrics, segment-wise statistics, and drop-off rates if requested." + }, + "aiAgent": { + "useCase": "Use this tool when you need to understand and analyze how users convert through different stages of an AI model's deployment or interaction funnel, identifying bottlenecks and improvement opportunities based on detailed event data. It is ideal for data-driven optimization of AI model management strategies.", + "limitations": "This tool cannot perform real-time event tracking or replace a full-featured analytics platform. It requires structured and clean input data and does not infer missing events or causal factors beyond provided event logs.", + "examples": [ + "Analyze conversion rates over the past month for all user segments using event data.", + "Segment conversion funnel analysis by device type and geography to identify drop-off points.", + "Calculate funnel efficiency excluding segments with low event counts to reduce noise." + ] + }, + "tags": [ + "analytics", + "conversion", + "model-management", + "funnel-analysis", + "performance" + ], + "examples": [ + { + "inputJson": "{\"conversionEvents\":[{\"userId\":\"u1\",\"eventType\":\"startTrial\",\"timestamp\":\"2024-05-01T10:00:00Z\"},{\"userId\":\"u1\",\"eventType\":\"completeSetup\",\"timestamp\":\"2024-05-01T10:05:00Z\"},{\"userId\":\"u2\",\"eventType\":\"startTrial\",\"timestamp\":\"2024-05-01T11:00:00Z\"}],\"timeWindow\":{\"start\":\"2024-05-01T00:00:00Z\",\"end\":\"2024-06-01T00:00:00Z\"},\"segmentBy\":[\"deviceType\"],\"minEventsThreshold\":5,\"includeDropOff\":true}", + "description": "Analyze May 2024 conversion events segmented by device type, including drop-off rates, ignoring segments with fewer than 5 events." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Conversion", + "context": null + } + }, + { + "name": "model-management.analyzeAnomaly", + "description": "Analyzes an AI model's performance logs or output data to detect and characterize anomalies such as unexpected predictions, drift, or errors. Accepts time-series or batch model output data, applies statistical and machine learning methods to identify anomalies, and outputs a detailed report including anomaly instances, severity scores, and suggested causes or affected features.", + "category": "model-management", + "parameters": [ + { + "name": "modelId", + "type": "string", + "description": "Unique identifier of the AI model to analyze anomalies for.", + "required": true, + "defaultValue": "" + }, + { + "name": "inputData", + "type": "array", + "description": "Array of model outputs or prediction records to analyze for anomalies. Each record should include prediction results, timestamps, and optionally input features.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeWindow", + "type": "number", + "description": "Time window size in minutes to aggregate data for temporal anomaly detection. Set 0 to disable time window aggregation.", + "required": false, + "defaultValue": "60" + }, + { + "name": "sensitivity", + "type": "number", + "description": "Anomaly detection sensitivity between 0 and 1; higher values increase anomaly detection sensitivity, potentially increasing false positives.", + "required": false, + "defaultValue": "0.75" + }, + { + "name": "includeFeatureAnalysis", + "type": "boolean", + "description": "Whether to include attribution analysis showing which input features contributed most to detected anomalies.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxAnomalies", + "type": "number", + "description": "Maximum number of anomaly records to report in the output. Limits the result size for large datasets.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "An object containing a summary report with detected anomalies, their timestamps, severity scores, affected features if requested, and suggested root causes or patterns." + }, + "aiAgent": { + "useCase": "Use this tool when monitoring AI model outputs for unexpected behavior, performance degradation, or data drift. It is helpful for model operators who want automated identification of errors or anomalies in predictions over time to trigger alerts or further investigation.", + "limitations": "This tool does not perform real-time anomaly detection on streaming data by itself and depends on sufficient historical data for pattern recognition. It may produce false positives or miss subtle anomalies if sensitivity parameters are not tuned appropriately.", + "examples": [ + "Identify anomalies in prediction results for model ID 'abc123' over the past week.", + "Analyze output logs of model 'forecastX' with high sensitivity for anomaly detection.", + "Provide top 50 anomalies with explanations of contributing features for model outputs." + ] + }, + "tags": [ + "anomaly-detection", + "model-monitoring", + "analytics", + "performance", + "machine-learning" + ], + "examples": [ + { + "inputJson": "{\"modelId\":\"model_xyz\",\"inputData\":[{\"timestamp\":\"2024-05-01T00:00:00Z\",\"prediction\":0.8,\"features\":{\"f1\":10,\"f2\":20}},{\"timestamp\":\"2024-05-01T00:01:00Z\",\"prediction\":0.2,\"features\":{\"f1\":11,\"f2\":19}}],\"timeWindow\":60,\"sensitivity\":0.8,\"includeFeatureAnalysis\":true,\"maxAnomalies\":10}", + "description": "Analyze recent time-series predictions from model_xyz with feature attribution enabled and moderate sensitivity." + }, + { + "inputJson": "{\"modelId\":\"abc123\",\"inputData\":[{\"timestamp\":\"2024-04-28T12:00:00Z\",\"prediction\":0,\"features\":{\"age\":45,\"income\":50000}},{\"timestamp\":\"2024-04-28T12:01:00Z\",\"prediction\":1,\"features\":{\"age\":50,\"income\":60000}}],\"sensitivity\":0.9,\"includeFeatureAnalysis\":false}", + "description": "High sensitivity anomaly detection on batch prediction data from model abc123, feature analysis disabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Anomaly", + "context": null + } + }, + { + "name": "model-management.analyzeChannel", + "description": "This tool analyzes communication channels used in AI model deployment and operation environments. It accepts structured data about channels, including usage statistics, message content metadata, latency, error rates, and user engagement metrics. The tool processes these inputs to identify bottlenecks, usage patterns, and potential issues in the communication channel, outputting a detailed report summarizing performance, reliability, and improvement recommendations.", + "category": "model-management", + "parameters": [ + { + "name": "channelData", + "type": "object", + "description": "Structured object containing channel metadata including message throughput, error rates, latency, and engagement data.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeWindow", + "type": "string", + "description": "The time range for analysis, specified as ISO 8601 start/end or a relative range (e.g., 'last24hours').", + "required": false, + "defaultValue": "last24hours" + }, + { + "name": "includeMessageContentAnalysis", + "type": "boolean", + "description": "Flag to determine whether to analyze message content metadata (e.g., message types and topics).", + "required": false, + "defaultValue": "false" + }, + { + "name": "thresholds", + "type": "object", + "description": "Optional thresholds for alerting on channel metrics like max latency or error rate rates, keyed by metric name.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing summarized channel performance metrics, identified issues with severity levels, usage patterns, and actionable recommendations for channel optimization." + }, + "aiAgent": { + "useCase": "Use this tool when needing insights into the health and efficiency of communication channels supporting AI model workflows, such as message queues, event streams, or API gateways. It helps identify performance bottlenecks, failure points, and interaction patterns affecting AI model data flow and coordination.", + "limitations": "Does not replace low-level network diagnostics or provide raw packet-level analysis. Its effectiveness depends on the quality and freshness of input channel data. It also does not directly alter channel configuration or manage deployment artifacts.", + "examples": [ + "Analyze last 24 hours of the main event stream channel to identify latency spikes and message error rates.", + "Check the communication channel between AI components for anomalies during the last deployment window.", + "Generate a report on user engagement and message type distribution on the notification channel for the past week." + ] + }, + "tags": [ + "analysis", + "communication", + "channel", + "model-management", + "performance", + "monitoring", + "diagnostics" + ], + "examples": [ + { + "inputJson": "{\"channelData\":{\"throughput\":5000,\"errorRate\":0.02,\"latencyMedianMs\":120,\"engagement\":{\"activeUsers\":200}},\"timeWindow\":\"last24hours\",\"includeMessageContentAnalysis\":true}", + "description": "Analyze a high-throughput channel for errors, latency, and user engagement over the last 24 hours including message content metadata." + }, + { + "inputJson": "{\"channelData\":{\"throughput\":120,\"errorRate\":0.00,\"latencyMedianMs\":50},\"timeWindow\":\"2024-05-01T00:00:00Z/2024-05-07T23:59:59Z\",\"includeMessageContentAnalysis\":false}", + "description": "Analyze a weekly report on a low-volume channel focusing purely on latency and error rates." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Channel", + "context": null + } + }, + { + "name": "model-management.downloadVideo", + "description": "This tool downloads video files associated with AI model resources from a specified URL or cloud storage location. It accepts a video source URL or storage path, optional authentication credentials, and download options such as quality and format. The tool processes the request to securely retrieve and save the video locally or in a specified destination, returning metadata about the downloaded video such as file path, size, and format.", + "category": "model-management", + "parameters": [ + { + "name": "videoUrl", + "type": "string", + "description": "The URL or storage path of the video to download. Required for identifying the download source.", + "required": true, + "defaultValue": "" + }, + { + "name": "destinationPath", + "type": "string", + "description": "Local path where the downloaded video will be saved. If not specified, defaults to the current working directory.", + "required": false, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Authentication token or API key required to access protected video resources. Optional if resource is public.", + "required": false, + "defaultValue": "" + }, + { + "name": "videoFormat", + "type": "string", + "description": "Preferred video file format to download (e.g., mp4, avi). If specified, the tool attempts to download or convert the video to this format.", + "required": false, + "defaultValue": "" + }, + { + "name": "quality", + "type": "string", + "description": "Desired video quality or resolution (e.g., 720p, 1080p). If available, downloads video matching this quality; else downloads default.", + "required": false, + "defaultValue": "\"default\"" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "Flag indicating whether to overwrite the file if it already exists at the destination path.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing details of the downloaded video file including local file path, file size in bytes, format, and actual quality downloaded." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to retrieve video assets related to AI models, such as training videos, demonstrations, or documentation clips, from URLs or cloud storage for local processing or deployment. It is helpful when direct access or caching of videos is required for model workflows or user interfaces.", + "limitations": "This tool cannot download videos from unsupported or protected platforms requiring complex authentication flows beyond simple tokens. It does not perform video editing or transcoding beyond simple format requests. It relies on accessible network resources and proper authentication.", + "examples": [ + "Download training demo video from a secure cloud URL for local inspection.", + "Retrieve a model usage video in 1080p format from a public content delivery network.", + "Fetch and update the local copy of a video demonstration, overwriting if already present." + ] + }, + "tags": [ + "download", + "video", + "model-management", + "media", + "file-transfer", + "cloud", + "ai-assets" + ], + "examples": [ + { + "inputJson": "{\"videoUrl\":\"https://example.com/videos/model-demo.mp4\",\"destinationPath\":\"/videos/model-demo.mp4\",\"authToken\":\"abc123token\",\"videoFormat\":\"mp4\",\"quality\":\"1080p\",\"overwriteExisting\":true}", + "description": "Download a secured video in mp4 format at 1080p quality to a specified path, overwriting existing file." + }, + { + "inputJson": "{\"videoUrl\":\"https://cdn.example.org/public/model-tutorial.mov\",\"destinationPath\":\"./tutorial.mov\",\"overwriteExisting\":false}", + "description": "Download a public tutorial video to the current folder without overwriting existing file." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Video", + "context": null + } + }, + { + "name": "model-management.uploadTable", + "description": "Uploads a tabular dataset to an AI model management system for training or inference purposes. Accepts table data in CSV or JSON format, validates and preprocesses it, and stores it linked to a specified model or dataset identifier. Returns a confirmation with upload status and the assigned resource ID.", + "category": "model-management", + "parameters": [ + { + "name": "dataFormat", + "type": "string", + "description": "Format of the table data being uploaded; accepted values are 'csv' or 'json'.", + "required": true, + "defaultValue": "csv" + }, + { + "name": "tableData", + "type": "string", + "description": "The raw content of the table data as a CSV string or JSON array of objects.", + "required": true, + "defaultValue": "" + }, + { + "name": "modelId", + "type": "string", + "description": "Identifier of the AI model or dataset this table is associated with.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional human-readable description of the table data being uploaded.", + "required": false, + "defaultValue": "" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "Flag indicating whether to overwrite existing table data for the given modelId if present.", + "required": false, + "defaultValue": "false" + }, + { + "name": "validateSchema", + "type": "boolean", + "description": "Whether to validate the table schema against the expected model input schema before uploading.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the status of the upload operation, a unique resourceId for the uploaded table, and any error messages if the upload failed." + }, + "aiAgent": { + "useCase": "Use this tool when you need to upload structured tabular data to an AI model management platform, particularly before training a new model or updating an existing model's dataset. It handles validation, preprocessing, and persistent storage linked to a model identifier to facilitate downstream model training or inference workflows.", + "limitations": "This tool does not perform data cleaning beyond basic validation, cannot convert unsupported formats, and assumes the data schema matches the model requirements if validateSchema is enabled. It does not directly trigger model retraining.", + "examples": [ + "Upload a CSV dataset to an existing model before retraining.", + "Upload JSON-formatted tabular data with schema validation disabled.", + "Overwrite the existing training data for a model with new CSV data." + ] + }, + "tags": [ + "model-management", + "upload", + "table", + "dataset", + "csv", + "json", + "ai-models" + ], + "examples": [ + { + "inputJson": "{\"dataFormat\":\"csv\",\"tableData\":\"name,age\\nAlice,30\\nBob,25\",\"modelId\":\"model123\",\"description\":\"User demographics data\",\"overwriteExisting\":false,\"validateSchema\":true}", + "description": "Uploading a CSV table with user demographic data for model 'model123' with schema validation enabled." + }, + { + "inputJson": "{\"dataFormat\":\"json\",\"tableData\":\"[{\\\"name\\\":\\\"Eve\\\", \\\"age\\\": 40}, {\\\"name\\\":\\\"John\\\", \\\"age\\\": 35}]\",\"modelId\":\"model456\",\"description\":\"Employee records\",\"overwriteExisting\":true,\"validateSchema\":false}", + "description": "Uploading a JSON array of employee records and overwriting existing data for model 'model456' without schema validation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Table", + "context": null + } + }, + { + "name": "model-management.uploadVideo", + "description": "Uploads a video file to an AI model management platform, optionally associating it with a specific model version or dataset. Accepts video files in common formats, performs validation and metadata extraction, then stores the video for training, testing, or demonstration purposes. Returns confirmation with uploaded video ID and metadata.", + "category": "model-management", + "parameters": [ + { + "name": "videoFilePath", + "type": "string", + "description": "Local or accessible path to the video file to upload (required).", + "required": true, + "defaultValue": "" + }, + { + "name": "modelId", + "type": "string", + "description": "Identifier of the AI model to associate the uploaded video with (optional).", + "required": false, + "defaultValue": "" + }, + { + "name": "version", + "type": "string", + "description": "Version tag or identifier of the model version for association (optional).", + "required": false, + "defaultValue": "" + }, + { + "name": "datasetId", + "type": "string", + "description": "Identifier of the dataset to which the video should be added (optional).", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Additional metadata about the video (e.g., description, tags) as key-value pairs (optional).", + "required": false, + "defaultValue": "" + }, + { + "name": "compressBeforeUpload", + "type": "boolean", + "description": "Whether to compress the video before uploading to save bandwidth (default: false).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the upload status, uploaded video unique ID, and extracted metadata such as format, duration, and resolution." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to add new video data to an AI model management platform to facilitate training, evaluation, or demonstration. It is useful when the agent handles workflows requiring media uploads linked to specific models or datasets.", + "limitations": "This tool does not perform video content analysis or transcoding beyond optional compression. It does not manage permissions or user authorization; those must be handled separately.", + "examples": [ + "Upload a training video to model 'abc123' version 'v2.0' with descriptive tags.", + "Add a demonstration video to dataset 'dataset789' without linking to a model.", + "Upload a large video with compression enabled to save bandwidth." + ] + }, + "tags": [ + "upload", + "video", + "model-management", + "media", + "AI training", + "dataset", + "model version" + ], + "examples": [ + { + "inputJson": "{\"videoFilePath\":\"/path/to/video.mp4\",\"modelId\":\"model123\",\"version\":\"v1.0\",\"metadata\":{\"description\":\"Front-facing camera video for object detection.\",\"tags\":[\"front-camera\",\"object-detection\"]},\"compressBeforeUpload\":false}", + "description": "Upload a front-camera video file and associate it with model 'model123' version 'v1.0', including descriptive metadata." + }, + { + "inputJson": "{\"videoFilePath\":\"video_demo.mov\",\"datasetId\":\"dataset456\",\"compressBeforeUpload\":true}", + "description": "Add a demonstration video to dataset 'dataset456' with compression enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Video", + "context": null + } + }, + { + "name": "model-management.sendReply", + "description": "Sends a reply message in response to an AI model interaction or system event. Accepts the recipient identifier, the message content, and optional metadata for context or conversation threading. Processes the inputs to dispatch the reply through the appropriate channel and returns a status of the delivery attempt.", + "category": "model-management", + "parameters": [ + { + "name": "recipientId", + "type": "string", + "description": "Identifier of the recipient to whom the reply will be sent, such as a user ID or system component.", + "required": true, + "defaultValue": "" + }, + { + "name": "messageContent", + "type": "string", + "description": "The textual content of the reply message to send back to the recipient.", + "required": true, + "defaultValue": "" + }, + { + "name": "conversationId", + "type": "string", + "description": "Optional identifier for the conversation or session to which this reply belongs, enabling threading.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional data such as timestamps, message type, or context to include with the reply.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Result object indicating success or failure status of the message delivery, including any error codes or messages." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to send a textual reply to a user or system component as part of managing AI model interactions, workflows, or event-driven communications. It supports threading and context via conversationId and metadata inputs.", + "limitations": "This tool only supports sending text-based replies and does not handle multimedia or complex message types. It assumes the recipient identifier corresponds to a valid and reachable endpoint.", + "examples": [ + "Send a reply to a user confirming model training completion.", + "Reply with an error message to a failed deployment request.", + "Send a status update message linked to an ongoing interaction session." + ] + }, + "tags": [ + "message", + "communication", + "response", + "model-management", + "reply" + ], + "examples": [ + { + "inputJson": "{\"recipientId\":\"user123\",\"messageContent\":\"Model training completed successfully.\",\"conversationId\":\"conv789\",\"metadata\":{\"timestamp\":\"2024-06-01T12:00:00Z\",\"messageType\":\"notification\"}}", + "description": "Send a confirmation reply to a user upon model training completion." + }, + { + "inputJson": "{\"recipientId\":\"systemAgent\",\"messageContent\":\"Deployment failed due to insufficient resources.\",\"metadata\":{\"priority\":\"high\"}}", + "description": "Send an error reply message to a system agent about deployment failure." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Reply", + "context": null + } + }, + { + "name": "model-management.sendThread", + "description": "Sends a message thread from one user to one or more recipients within an AI model management platform. Accepts thread metadata and message content, verifies recipients, and outputs the status and message thread ID upon successful sending.", + "category": "model-management", + "parameters": [ + { + "name": "threadId", + "type": "string", + "description": "Unique identifier of the message thread to send.", + "required": true, + "defaultValue": "" + }, + { + "name": "senderId", + "type": "string", + "description": "User ID of the sender initiating the message thread send operation.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientIds", + "type": "array", + "description": "Array of user IDs who will receive the message thread.", + "required": true, + "defaultValue": "" + }, + { + "name": "messageContent", + "type": "string", + "description": "Content of the message to send within the thread.", + "required": true, + "defaultValue": "" + }, + { + "name": "priority", + "type": "string", + "description": "Priority level of the message (e.g., 'normal', 'high').", + "required": false, + "defaultValue": "normal" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional metadata accompanying the message thread.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the send operation status with success boolean and sent thread ID if successful." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to transmit message threads between users within a model management platform, such as notifying team members about model training results or deployment updates. It ensures proper message formatting and recipient validation before sending.", + "limitations": "This tool cannot create new threads from scratch or handle message storage beyond sending. It does not support real-time chat synchronization or multimedia attachments beyond text content.", + "examples": [ + "Send a deployment status update thread from lead data scientist to a group of engineers.", + "Notify model reviewers with a message thread containing evaluation results.", + "Forward a support thread message to a different team within the platform." + ] + }, + "tags": [ + "communication", + "messaging", + "model-management", + "thread", + "send", + "notification" + ], + "examples": [ + { + "inputJson": "{\"threadId\":\"thread123\",\"senderId\":\"userAlpha\",\"recipientIds\":[\"userBeta\",\"userGamma\"],\"messageContent\":\"Model training completed successfully.\",\"priority\":\"high\",\"metadata\":{\"modelVersion\":\"v1.2\",\"timestamp\":\"2024-06-15T14:00:00Z\"}}", + "description": "Send a high-priority message thread notifying multiple recipients about successful model training." + }, + { + "inputJson": "{\"threadId\":\"thread789\",\"senderId\":\"userDelta\",\"recipientIds\":[\"userEpsilon\"],\"messageContent\":\"Please review the latest evaluation metrics attached.\",\"priority\":\"normal\"}", + "description": "Send a standard priority message thread with evaluation review request to a single recipient." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Thread", + "context": null + } + }, + { + "name": "model-management.renderSummary", + "description": "Generates a concise summary report of an AI model's key attributes and performance metrics based on supplied model metadata and evaluation results. Accepts structured input describing model details and outputs a human-readable summary document highlighting essential information for stakeholders.", + "category": "model-management", + "parameters": [ + { + "name": "modelMetadata", + "type": "object", + "description": "An object containing detailed information about the AI model, such as architecture, dataset, training date, and version.", + "required": true, + "defaultValue": "" + }, + { + "name": "performanceMetrics", + "type": "object", + "description": "Evaluation metrics of the model, including accuracy, precision, recall, F1 score, and loss values.", + "required": true, + "defaultValue": "" + }, + { + "name": "summaryLength", + "type": "number", + "description": "Approximate length (in sentences) of the generated summary report.", + "required": false, + "defaultValue": "5" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "Flag indicating whether to append recommendations based on model performance and usage.", + "required": false, + "defaultValue": "false" + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en') for the summary text output.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing a 'summaryText' string field with the generated model summary report." + }, + "aiAgent": { + "useCase": "This tool is useful for AI management scenarios where an agent needs to produce human-friendly summaries of AI models for documentation, presentations, or audit purposes. It aids in quickly communicating model details and evaluation results without manual report writing.", + "limitations": "The tool cannot generate very deep technical analyses or directly interpret raw training logs. It relies on well-structured metadata and metrics as input and does not replace detailed technical documentation.", + "examples": [ + "Generate a 5-sentence summary for a computer vision model with provided accuracy and F1 score.", + "Produce a summary including recommendations for a newly evaluated NLP model.", + "Create a summary report in Spanish for a deployed recommendation engine." + ] + }, + "tags": [ + "model-management", + "summary", + "reporting", + "documentation", + "performance", + "AI", + "evaluation" + ], + "examples": [ + { + "inputJson": "{\"modelMetadata\":{\"name\":\"ImageClassifierV3\",\"architecture\":\"ResNet50\",\"dataset\":\"ImageNet\",\"version\":\"3.0\",\"trainingDate\":\"2024-05-15\"},\"performanceMetrics\":{\"accuracy\":0.92,\"precision\":0.91,\"recall\":0.89,\"f1Score\":0.90,\"loss\":0.15},\"summaryLength\":5,\"includeRecommendations\":true,\"language\":\"en\"}", + "description": "Summarize a ResNet50 image classification model with performance metrics and recommendations." + }, + { + "inputJson": "{\"modelMetadata\":{\"name\":\"TextSentimentAnalyzer\",\"architecture\":\"Transformer\",\"dataset\":\"TwitterSentiment\",\"version\":\"1.2\",\"trainingDate\":\"2024-04-01\"},\"performanceMetrics\":{\"accuracy\":0.87,\"precision\":0.88,\"recall\":0.85,\"f1Score\":0.86,\"loss\":0.20},\"summaryLength\":3,\"includeRecommendations\":false,\"language\":\"en\"}", + "description": "Generate a brief summary of an NLP sentiment analysis model." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Summary", + "context": null + } + }, + { + "name": "model-management.formatTable", + "description": "Formats tabular data for AI model management tasks by applying specified column order, data type conversions, and formatting rules. Accepts an input table as an array of objects and outputs a uniformly formatted table suitable for training or evaluation datasets.", + "category": "model-management", + "parameters": [ + { + "name": "inputTable", + "type": "array", + "description": "The input table data as an array of objects where each object represents a row with column keys.", + "required": true, + "defaultValue": "" + }, + { + "name": "columnOrder", + "type": "array", + "description": "An ordered list of column names to rearrange the table columns in the specified sequence.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "columnFormats", + "type": "object", + "description": "An object mapping column names to desired data types or formatting instructions (e.g., 'numeric', 'string', 'date').", + "required": false, + "defaultValue": "{}" + }, + { + "name": "removeNullRows", + "type": "boolean", + "description": "Flag indicating whether to remove rows that contain null or undefined values in any column.", + "required": false, + "defaultValue": "false" + }, + { + "name": "fillMissingValues", + "type": "object", + "description": "An object specifying columns and the values to fill if missing or null (e.g., {score:0}).", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "array", + "description": "An array of uniformly formatted row objects according to specifications to be used as model input or evaluation data." + }, + "aiAgent": { + "useCase": "Use this tool when preparing tabular datasets for AI models that require consistent column ordering and data types. It helps standardize training or evaluation data by enforcing formatting rules, filling missing values, and optionally removing incomplete rows before model consumption.", + "limitations": "This tool does not perform data validation or content quality checks beyond formatting. It does not handle nested objects as cell data or complex transformations like feature engineering.", + "examples": [ + "Format a table to have columns in order ['id','feature','label'], convert 'label' to string, and fill missing 'feature' values with zero.", + "Remove all rows with nulls and reorder columns as specified.", + "Apply date formatting to a column and ensure numeric columns are properly cast." + ] + }, + "tags": [ + "data-formatting", + "model-preparation", + "table", + "data-cleaning", + "AI-training" + ], + "examples": [ + { + "inputJson": "{\"inputTable\":[{\"id\":1,\"feature\":\"10\",\"label\":1},{\"id\":2,\"feature\":null,\"label\":0}],\"columnOrder\":[\"id\",\"feature\",\"label\"],\"columnFormats\":{\"feature\":\"numeric\",\"label\":\"string\"},\"removeNullRows\":false,\"fillMissingValues\":{\"feature\":0}}", + "description": "Fill missing feature with 0, convert feature to numeric, label to string, and reorder columns." + }, + { + "inputJson": "{\"inputTable\":[{\"id\":1,\"feature\":10,\"label\":\"yes\"},{\"id\":2,\"feature\":null,\"label\":\"no\"}],\"removeNullRows\":true}", + "description": "Remove any rows that have nulls and keep original column order." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Table", + "context": null + } + }, + { + "name": "model-management.composeLink", + "description": "This tool accepts multiple AI model endpoint URLs or resource identifiers along with optional descriptive metadata, and composes a single unified link or list for easy sharing or embedding. It processes the input array to generate a consolidated link reference that represents all the included AI model resources, facilitating model deployment or collaboration workflows.", + "category": "model-management", + "parameters": [ + { + "name": "modelEndpoints", + "type": "array", + "description": "An array of strings representing individual AI model endpoint URLs or resource identifiers to be linked together.", + "required": true, + "defaultValue": "" + }, + { + "name": "linkName", + "type": "string", + "description": "A user-friendly name for the composite link set to facilitate identification.", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "An optional description providing context for the composite link.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Flag to indicate whether to embed metadata such as model version or owner in the composed link.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with a composedLink string representing the unified reference URL or resource identifier, and metadata including count of models linked and timestamp of composition." + }, + "aiAgent": { + "useCase": "Use this tool when you need to aggregate multiple AI model endpoints into a single sharable or embeddable link, for example, to simplify deployment references, share collections of related models, or create unified API gateway entries.", + "limitations": "This tool only constructs a reference link and does not deploy or validate model endpoints; it cannot merge or combine model functionality, only compose identifier links.", + "examples": [ + "Create a composite link from three model endpoints for deployment sharing.", + "Generate a named collection linker with metadata about included models.", + "Produce a simple sharable reference from a list of AI model URLs." + ] + }, + "tags": [ + "model-management", + "linking", + "deployment", + "sharing", + "composite", + "URL", + "resource" + ], + "examples": [ + { + "inputJson": "{\"modelEndpoints\":[\"https://api.example.com/model/v1\",\"https://api.example.com/model/v2\",\"https://api.example.com/model/v3\"],\"linkName\":\"Versioned Models\",\"description\":\"Collection of V1 to V3 models\",\"includeMetadata\":true}", + "description": "Create a named composite link including metadata from three versioned model endpoints." + }, + { + "inputJson": "{\"modelEndpoints\":[\"https://mlhost.com/models/abc123\",\"https://mlhost.com/models/xyz789\"],\"includeMetadata\":false}", + "description": "Generate a simple composite link from two model endpoint URLs without metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Link", + "context": null + } + }, + { + "name": "model-management.buildQueue", + "description": "Creates and configures a message queue infrastructure component to manage model training or deployment jobs. Accepts parameters for queue name, type, retention policy, visibility timeout, and scaling options. Outputs confirmation and queue configuration details to integrate with ML workflows.", + "category": "model-management", + "parameters": [ + { + "name": "queueName", + "type": "string", + "description": "Unique name identifier for the queue to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "queueType", + "type": "string", + "description": "Type of the queue, e.g., FIFO or standard queue behavior.", + "required": true, + "defaultValue": "standard" + }, + { + "name": "messageRetentionSeconds", + "type": "number", + "description": "Duration in seconds to retain a message in the queue before it is deleted.", + "required": false, + "defaultValue": "345600" + }, + { + "name": "visibilityTimeoutSeconds", + "type": "number", + "description": "Visibility timeout in seconds during which a message is invisible after being received.", + "required": false, + "defaultValue": "30" + }, + { + "name": "maxReceiveCount", + "type": "number", + "description": "Maximum number of times a message can be received before being sent to dead-letter queue.", + "required": false, + "defaultValue": "5" + }, + { + "name": "deadLetterQueueName", + "type": "string", + "description": "Name of the dead-letter queue for processing failed messages.", + "required": false, + "defaultValue": "" + }, + { + "name": "enableEncryption", + "type": "boolean", + "description": "Flag to enable server-side encryption for messages in the queue.", + "required": false, + "defaultValue": "false" + }, + { + "name": "tags", + "type": "object", + "description": "Key-value pairs for tagging the queue with metadata and ownership information.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing details of the created queue, including its name, URL/ARN, type, and configuration parameters indicating success." + }, + "aiAgent": { + "useCase": "Use this tool when managing AI model pipelines that require asynchronous, reliable message passing for job orchestration, such as scheduling model training or deployment tasks. It helps set up a queue infrastructure tailored to handling message durability, visibility, and failure management in model workflows.", + "limitations": "This tool does not handle message publishing or consumption, only queue creation and configuration. It does not integrate directly with specific cloud providers; implementation needs provider-specific deployment.", + "examples": [ + "Create a FIFO queue named 'modelTrainingQueue' with encryption enabled and a dead-letter queue for failed messages.", + "Build a standard queue 'deploymentJobQueue' with a 5-minute visibility timeout and message retention of 2 days.", + "Set up a queue named 'batchInferenceQueue' tagged for project ownership and default settings." + ] + }, + "tags": [ + "model-management", + "infrastructure", + "queue", + "message-queue", + "job-scheduling", + "ml-pipelines" + ], + "examples": [ + { + "inputJson": "{\"queueName\":\"modelTrainingQueue\",\"queueType\":\"FIFO\",\"enableEncryption\":true,\"deadLetterQueueName\":\"modelTrainingDLQ\"}", + "description": "Create a FIFO queue named 'modelTrainingQueue' with encryption enabled and dead-letter queue set to 'modelTrainingDLQ'." + }, + { + "inputJson": "{\"queueName\":\"deploymentJobQueue\",\"queueType\":\"standard\",\"visibilityTimeoutSeconds\":300,\"messageRetentionSeconds\":172800}", + "description": "Create a standard queue 'deploymentJobQueue' with visibility timeout 300 seconds and message retention 2 days." + }, + { + "inputJson": "{\"queueName\":\"batchInferenceQueue\",\"tags\":{\"project\":\"visionAI\",\"owner\":\"teamX\"}}", + "description": "Setup a standard queue 'batchInferenceQueue' tagged with project and ownership metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Queue", + "context": null + } + }, + { + "name": "model-management.buildCluster", + "description": "Builds a compute cluster tailored for AI model training and deployment by specifying infrastructure and configuration parameters. Accepts inputs like cluster name, node count, machine type, and network settings, then provisions and returns the cluster details including status and endpoints.", + "category": "model-management", + "parameters": [ + { + "name": "clusterName", + "type": "string", + "description": "Unique name identifier for the cluster to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "nodeCount", + "type": "number", + "description": "Number of compute nodes to include in the cluster.", + "required": true, + "defaultValue": "1" + }, + { + "name": "machineType", + "type": "string", + "description": "Type of machine or VM instance (e.g., GPU-enabled) to assign to each node.", + "required": true, + "defaultValue": "standard" + }, + { + "name": "region", + "type": "string", + "description": "Geographical region or data center location for the cluster deployment.", + "required": true, + "defaultValue": "us-central1" + }, + { + "name": "networkConfig", + "type": "object", + "description": "Network configuration object including subnet and firewall rules to apply.", + "required": false, + "defaultValue": "" + }, + { + "name": "autoScalingEnabled", + "type": "boolean", + "description": "Enable or disable automatic scaling of cluster nodes based on workload demand.", + "required": false, + "defaultValue": "false" + }, + { + "name": "tags", + "type": "array", + "description": "Array of string tags to label and categorize the cluster for management purposes.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object describing the newly created cluster including clusterId, status, node details, endpoints, and configuration summary." + }, + "aiAgent": { + "useCase": "Use this tool when an AI workflow requires provisioning of dedicated compute resources for scalable model training or deployment. Ideal for initiating clusters with specific hardware configurations and network settings to optimize performance and cost management in a cloud or on-prem environment.", + "limitations": "This tool cannot manage existing clusters beyond creation, such as updating or deleting them. It also does not handle the scheduling of training jobs or deployment tasks within the cluster.", + "examples": [ + "Create a 5-node GPU cluster named 'ml-training-cluster' in 'us-west1' region with auto-scaling enabled.", + "Provision a 3-node standard machine cluster tagged with 'experiment' and 'pipelineA' in 'europe-west3'.", + "Build a single-node cluster with custom network settings in 'asia-east1'." + ] + }, + "tags": [ + "model-management", + "cluster", + "infrastructure", + "compute", + "deployment", + "training", + "scaling" + ], + "examples": [ + { + "inputJson": "{\"clusterName\":\"ml-training-cluster\",\"nodeCount\":5,\"machineType\":\"gpu-standard\",\"region\":\"us-west1\",\"autoScalingEnabled\":true}", + "description": "Create a 5-node GPU-enabled cluster in the US West region with auto-scaling activated." + }, + { + "inputJson": "{\"clusterName\":\"experiment-cluster\",\"nodeCount\":3,\"machineType\":\"standard\",\"region\":\"europe-west3\",\"tags\":[\"experiment\",\"pipelineA\"]}", + "description": "Provision a 3-node standard cluster in Europe West with specific tags for experimental tracking." + }, + { + "inputJson": "{\"clusterName\":\"solo-node\",\"nodeCount\":1,\"machineType\":\"standard\",\"region\":\"asia-east1\",\"networkConfig\":{\"subnet\":\"custom-subnet\",\"firewallRules\":[\"allow-ssh\"]}}", + "description": "Build a single-node cluster with custom network settings in the Asia East region." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Cluster", + "context": null + } + }, + { + "name": "model-management.generateAnomaly", + "description": "Generates anomaly detection models using provided historical and real-time data. Accepts time series or tabular data as input with optional feature specifications, applies statistical or machine learning techniques to identify unusual patterns, and outputs a trained anomaly detection model along with anomaly scores for each observation.", + "category": "model-management", + "parameters": [ + { + "name": "trainingData", + "type": "array", + "description": "Array of data objects representing historical labeled or unlabeled data used for training the anomaly detection model.", + "required": true, + "defaultValue": "" + }, + { + "name": "featureColumns", + "type": "array", + "description": "List of column names within the training data to use as features for anomaly detection.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "modelType", + "type": "string", + "description": "Type of anomaly detection model to generate, such as 'isolationForest', 'autoencoder', or 'statistical'.", + "required": false, + "defaultValue": "isolationForest" + }, + { + "name": "contamination", + "type": "number", + "description": "Estimated proportion of anomalies in the dataset, used to calibrate detection thresholds (value between 0 and 0.5).", + "required": false, + "defaultValue": "0.05" + }, + { + "name": "useRealTimeData", + "type": "boolean", + "description": "Flag indicating whether to incorporate incoming real-time data streams for model updating or evaluation.", + "required": false, + "defaultValue": "false" + }, + { + "name": "updateFrequency", + "type": "string", + "description": "Frequency to update the model when real-time data is used, e.g. 'daily', 'hourly'. Ignored if useRealTimeData is false.", + "required": false, + "defaultValue": "daily" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the trained anomaly detection model metadata, model parameters, and an array of anomaly scores for each input data point, with flags indicating detected anomalies." + }, + "aiAgent": { + "useCase": "Use this tool when a user needs to develop and deploy an anomaly detection model over historical and optionally streaming data to identify unusual patterns or outliers automatically. It supports multiple model types and feature selections for flexible analytics workflows.", + "limitations": "This tool does not perform feature engineering or data cleaning automatically. It assumes well-prepared input data, and anomaly detection effectiveness depends heavily on the choice of model type and data quality. It is not suitable for anomaly explanations or root cause analysis.", + "examples": [ + "Generate an isolation forest based anomaly detection model on server log metrics to identify unusual system behavior.", + "Build an autoencoder model to detect anomalies in IoT sensor data streams with updates every hour.", + "Create a statistical anomaly detection model using selected features from financial transaction data." + ] + }, + "tags": [ + "anomaly-detection", + "model-training", + "analytics", + "machine-learning", + "time-series", + "real-time", + "data-science" + ], + "examples": [ + { + "inputJson": "{\"trainingData\":[{\"timestamp\":\"2024-01-01T00:00:00Z\",\"value\":23.5},{\"timestamp\":\"2024-01-01T01:00:00Z\",\"value\":45.1},{\"timestamp\":\"2024-01-01T02:00:00Z\",\"value\":22.0}],\"featureColumns\":[\"value\"],\"modelType\":\"isolationForest\",\"contamination\":0.05,\"useRealTimeData\":true,\"updateFrequency\":\"hourly\"}", + "description": "Train an isolation forest anomaly detection model on hourly time series values and update model with real-time data every hour." + }, + { + "inputJson": "{\"trainingData\":[{\"sensor1\":0.5,\"sensor2\":0.7},{\"sensor1\":0.55,\"sensor2\":0.72},{\"sensor1\":5.0,\"sensor2\":0.8}],\"featureColumns\":[\"sensor1\",\"sensor2\"],\"modelType\":\"autoencoder\",\"contamination\":0.1,\"useRealTimeData\":false}", + "description": "Generate an autoencoder model for anomaly detection on two sensor features with 10% expected anomaly contamination without real-time updates." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Anomaly", + "context": null + } + }, + { + "name": "model-management.generateGraph", + "description": "Generates visual graphs representing AI model metrics, training progress, or architecture details. Accepts JSON input specifying graph type, data points, and styling options, processes the data to create visualizations such as line charts, bar charts, or network diagrams, and outputs an SVG or PNG image encoding the graph for integration in reports or dashboards.", + "category": "model-management", + "parameters": [ + { + "name": "graphType", + "type": "string", + "description": "Type of graph to generate (e.g., 'line', 'bar', 'pie', 'network')", + "required": true, + "defaultValue": "" + }, + { + "name": "data", + "type": "object", + "description": "Structured data for the graph, including labels and values relevant to the graph type", + "required": true, + "defaultValue": "" + }, + { + "name": "title", + "type": "string", + "description": "Title displayed on the graph", + "required": false, + "defaultValue": "" + }, + { + "name": "width", + "type": "number", + "description": "Width of the output graph image in pixels", + "required": false, + "defaultValue": "800" + }, + { + "name": "height", + "type": "number", + "description": "Height of the output graph image in pixels", + "required": false, + "defaultValue": "600" + }, + { + "name": "colorScheme", + "type": "string", + "description": "Color palette to use for the graph's elements", + "required": false, + "defaultValue": "default" + }, + { + "name": "outputFormat", + "type": "string", + "description": "File format for the graph output ('svg' or 'png')", + "required": false, + "defaultValue": "svg" + } + ], + "returns": { + "type": "object", + "description": "An object containing the graph image encoded as a Base64 string, along with metadata such as format and dimensions" + }, + "aiAgent": { + "useCase": "Use this tool when needing to visually represent AI model training statistics, performance metrics, or architecture relationships in a standardized image format for documentation, monitoring dashboards, or presentations. It automates the conversion of structured model data into clear, customizable graphs.", + "limitations": "Does not perform complex analytics or data preprocessing; input data must be clean and structured. Cannot generate interactive graphs or export to formats other than SVG or PNG.", + "examples": [ + "Generate a line chart showing model accuracy over epochs.", + "Create a network diagram visualizing model layers and connections.", + "Produce a bar chart comparing validation losses of multiple models." + ] + }, + "tags": [ + "graph", + "visualization", + "model-management", + "metrics", + "AI", + "monitoring", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"graphType\":\"line\",\"data\":{\"labels\":[\"Epoch 1\",\"Epoch 2\",\"Epoch 3\"],\"datasets\":[{\"label\":\"Accuracy\",\"data\":[0.65,0.78,0.85]}]},\"title\":\"Model Accuracy Over Epochs\",\"width\":800,\"height\":600,\"colorScheme\":\"blue\",\"outputFormat\":\"svg\"}", + "description": "Generate a line chart of model accuracy progression during training." + }, + { + "inputJson": "{\"graphType\":\"network\",\"data\":{\"nodes\":[{\"id\":\"input\",\"label\":\"Input Layer\"},{\"id\":\"hidden1\",\"label\":\"Hidden Layer 1\"},{\"id\":\"output\",\"label\":\"Output Layer\"}],\"edges\":[{\"from\":\"input\",\"to\":\"hidden1\"},{\"from\":\"hidden1\",\"to\":\"output\"}]},\"title\":\"Neural Network Architecture\",\"width\":1000,\"height\":800,\"colorScheme\":\"default\",\"outputFormat\":\"png\"}", + "description": "Create a network diagram showing the layers and connections of a neural network." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Graph", + "context": null + } + }, + { + "name": "model-management.generateMarkdown", + "description": "Generates a markdown-formatted report summarizing AI model details, including architecture, training metrics, and deployment status. Accepts structured model information as input, formats content with optional sections, and outputs a markdown string suitable for documentation or presentation.", + "category": "model-management", + "parameters": [ + { + "name": "modelName", + "type": "string", + "description": "The name of the AI model to be documented.", + "required": true, + "defaultValue": "" + }, + { + "name": "architectureDetails", + "type": "string", + "description": "Description of the model's architecture and components.", + "required": true, + "defaultValue": "" + }, + { + "name": "trainingMetrics", + "type": "object", + "description": "Key-value pairs representing training performance metrics such as accuracy, loss, epochs.", + "required": true, + "defaultValue": "" + }, + { + "name": "deploymentStatus", + "type": "string", + "description": "Current deployment status or environment of the model (e.g., testing, production).", + "required": false, + "defaultValue": "" + }, + { + "name": "includeUsageInstructions", + "type": "boolean", + "description": "Flag to include a usage instructions section in the markdown output.", + "required": false, + "defaultValue": "false" + }, + { + "name": "customNotes", + "type": "string", + "description": "Additional notes or comments to append at the end of the markdown report.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing a single string field 'markdownReport' with the complete markdown text summarizing the model." + }, + "aiAgent": { + "useCase": "Use this tool when you need to generate human-readable documentation in markdown format for AI models based on structured input data about the model's architecture, training outcomes, and deployment stage. This helps automate creation of reports for sharing or storing model details.", + "limitations": "This tool does not validate the correctness of metrics or architecture descriptions; it purely formats given input into markdown. It cannot generate content beyond what is provided as input.", + "examples": [ + "Generate a markdown report for a new convolutional neural network with training accuracy and current deployment status.", + "Create documentation markdown including usage instructions for a transformer-based model.", + "Produce a summary markdown highlighting model name, architecture details, and key training metrics without deployment info." + ] + }, + "tags": [ + "model-management", + "generate", + "markdown", + "documentation", + "AI", + "report" + ], + "examples": [ + { + "inputJson": "{\"modelName\":\"ImageClassifierV2\",\"architectureDetails\":\"ResNet-50 with batch normalization and dropout layers.\",\"trainingMetrics\":{\"accuracy\":\"92.5%\",\"loss\":\"0.15\",\"epochs\":30},\"deploymentStatus\":\"Production\",\"includeUsageInstructions\":true,\"customNotes\":\"Deployed on AWS infrastructure.\"}", + "description": "Generate a detailed markdown report for an image classification model including deployment and usage instructions." + }, + { + "inputJson": "{\"modelName\":\"TextSummarizer\",\"architectureDetails\":\"Transformer-based encoder-decoder model.\",\"trainingMetrics\":{\"rougeL\":\"0.48\",\"epochs\":25},\"includeUsageInstructions\":false,\"customNotes\":\"\"}", + "description": "Create a markdown summary for a text summarization model without usage instructions or deployment status." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Markdown", + "context": null + } + }, + { + "name": "model-management.generateConversion", + "description": "This tool generates a conversion analytics report for an AI model deployment by analyzing input user action data and model interaction logs. It accepts raw interaction logs and user behavior data, processes them to calculate conversion rates, and outputs a structured report detailing conversion metrics, trends, and actionable insights to optimize model performance.", + "category": "model-management", + "parameters": [ + { + "name": "modelId", + "type": "string", + "description": "The unique identifier of the AI model to analyze conversions for.", + "required": true, + "defaultValue": "" + }, + { + "name": "interactionLogs", + "type": "array", + "description": "Array of user interaction records including timestamps and actions relevant to conversion funnel steps.", + "required": true, + "defaultValue": "" + }, + { + "name": "userActions", + "type": "array", + "description": "List of defined user actions representing key steps in the conversion funnel (e.g., visit, signup, purchase).", + "required": true, + "defaultValue": "" + }, + { + "name": "timeRange", + "type": "object", + "description": "Start and end timestamps to filter the data analyzed.", + "required": false, + "defaultValue": "" + }, + { + "name": "granularity", + "type": "string", + "description": "Time granularity for metrics aggregation (e.g., hourly, daily, weekly).", + "required": false, + "defaultValue": "daily" + }, + { + "name": "includeTrends", + "type": "boolean", + "description": "Whether to include trend analysis over the given time range.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing conversion metrics, trend analysis, funnel drop-off points, and recommendations to improve model-driven conversions." + }, + "aiAgent": { + "useCase": "Use this tool when you need to evaluate how well an AI model or system is converting user interactions into desired outcomes, such as signups or purchases, by generating comprehensive conversion analytics reports. It helps identify bottlenecks and optimization opportunities in the model's deployment funnel.", + "limitations": "This tool does not perform predictive modeling or real-time conversion tracking. It requires structured interaction logs and clearly defined user actions. It cannot operate without adequate input data representing the conversion funnel.", + "examples": [ + "Generate a conversion report for model 'abc123' using last month's interaction logs to analyze signup rates.", + "Provide daily conversion metrics and trend insights for model 'xyz789' over the past 3 weeks.", + "Analyze conversion funnel drop-offs for model deployment with given user action definitions and interaction dataset." + ] + }, + "tags": [ + "model-management", + "conversion", + "analytics", + "reporting", + "performance", + "user-behavior" + ], + "examples": [ + { + "inputJson": "{\"modelId\":\"abc123\",\"interactionLogs\":[{\"timestamp\":\"2024-05-01T12:00:00Z\",\"action\":\"visit\",\"userId\":\"u1\"},{\"timestamp\":\"2024-05-01T12:05:00Z\",\"action\":\"signup\",\"userId\":\"u1\"},{\"timestamp\":\"2024-05-02T15:30:00Z\",\"action\":\"visit\",\"userId\":\"u2\"}],\"userActions\":[\"visit\",\"signup\",\"purchase\"],\"timeRange\":{\"start\":\"2024-05-01T00:00:00Z\",\"end\":\"2024-05-31T23:59:59Z\"},\"granularity\":\"daily\",\"includeTrends\":true}", + "description": "Generate a detailed conversion report for model 'abc123' using May 2024 user interaction logs, analyzing daily signup and purchase rates including trend analysis." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Conversion", + "context": null + } + }, + { + "name": "model-management.generateYAML", + "description": "Generates a YAML configuration string for AI model training or deployment based on input parameters. Accepts model specifications such as model type, hyperparameters, dataset paths, and environment settings, then processes these inputs to produce a structured YAML document for use in automated pipelines or manual configuration.", + "category": "model-management", + "parameters": [ + { + "name": "modelType", + "type": "string", + "description": "Type or architecture of the AI model (e.g., 'transformer', 'cnn').", + "required": true, + "defaultValue": "" + }, + { + "name": "hyperparameters", + "type": "object", + "description": "Key-value pairs of hyperparameters (e.g., learning rate, batch size) to configure model training.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "datasetPath", + "type": "string", + "description": "File path or URI to the training dataset.", + "required": true, + "defaultValue": "" + }, + { + "name": "validationPath", + "type": "string", + "description": "File path or URI to the validation dataset.", + "required": false, + "defaultValue": "" + }, + { + "name": "environment", + "type": "object", + "description": "Environment settings including hardware info and software dependencies.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "outputFormatVersion", + "type": "string", + "description": "Version identifier for the YAML configuration schema to generate.", + "required": false, + "defaultValue": "1.0" + }, + { + "name": "includeDeployment", + "type": "boolean", + "description": "Flag indicating whether to include deployment configuration in the YAML output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "string", + "description": "YAML formatted configuration string ready for use in model training or deployment pipelines." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to dynamically generate or modify YAML configuration files for model training or deployment environments based on user-provided parameters. Ideal for automating pipeline setups or generating reproducible experimental configurations.", + "limitations": "Cannot validate the semantic correctness of the model configurations or ensure compatibility with every training framework; YAML schema variations may not be fully supported depending on 'outputFormatVersion'.", + "examples": [ + "Generate a YAML config for a transformer model with specified hyperparameters and dataset paths.", + "Create a deployment-ready YAML including environment specs for a CNN model.", + "Produce a basic YAML for model training with minimal parameters." + ] + }, + "tags": [ + "model-management", + "configuration", + "yaml", + "model-training", + "deployment", + "automation" + ], + "examples": [ + { + "inputJson": "{\"modelType\":\"transformer\",\"hyperparameters\":{\"learningRate\":0.001,\"batchSize\":32},\"datasetPath\":\"/data/train.csv\",\"validationPath\":\"/data/val.csv\",\"environment\":{\"gpu\":\"nvidia-tesla-v100\",\"framework\":\"pytorch\"},\"outputFormatVersion\":\"1.0\",\"includeDeployment\":true}", + "description": "Generate a YAML configuration for a transformer model with GPU environment and deployment settings." + }, + { + "inputJson": "{\"modelType\":\"cnn\",\"datasetPath\":\"s3://datasets/image_train\",\"includeDeployment\":false}", + "description": "Generate a minimal YAML configuration for CNN model training without deployment details." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "YAML", + "context": null + } + }, + { + "name": "model-management.createConversion", + "description": "Creates a conversion analytics metric by processing user interaction data with a specified conversion event step sequence. Accepts raw user event logs, applies a funnel definition to calculate conversion rates at each step, and outputs a structured conversion report including step-wise counts and overall conversion percentage.", + "category": "model-management", + "parameters": [ + { + "name": "eventLogs", + "type": "array", + "description": "Array of user event objects, each representing a timestamped user action with event name and user ID.", + "required": true, + "defaultValue": "" + }, + { + "name": "conversionSteps", + "type": "array", + "description": "Ordered list of event names defining the conversion funnel steps to track.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeWindowMinutes", + "type": "number", + "description": "Maximum time window in minutes allowed between first and last step to count a valid conversion sequence.", + "required": false, + "defaultValue": "30" + }, + { + "name": "uniqueUserBy", + "type": "string", + "description": "User identifier key in event objects to aggregate conversions by unique users.", + "required": false, + "defaultValue": "userId" + }, + { + "name": "includeDropOffs", + "type": "boolean", + "description": "Whether to include intermediate step drop-off counts in the report.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Conversion report including counts for each funnel step, drop-off numbers (if requested), total conversions, and overall conversion rate as a percentage." + }, + "aiAgent": { + "useCase": "Use this tool when you need to analyze user behavior through a conversion funnel defined by sequential events to understand drop-offs and conversion rates from raw event log data. It is ideal for marketing analytics, user behavior analysis, and product optimization tasks.", + "limitations": "This tool assumes event logs are well-formed and timestamped correctly but does not handle noisy or incomplete data cleansing. It also does not perform advanced statistical analysis or predictive modeling beyond conversion rate calculation.", + "examples": [ + "Create a conversion report for a signup funnel with steps: visit landing page, click sign up button, complete registration, within 60 minutes.", + "Calculate conversion rates from raw clickstream data for the purchase funnel with customizable time window and unique user tracking key.", + "Generate detailed drop-off analytics for a multi-step onboarding process using user event logs and funnel definitions." + ] + }, + "tags": [ + "conversion", + "analytics", + "funnel", + "user-behavior", + "model-management", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"eventLogs\":[{\"userId\":\"u1\",\"event\":\"page_view\",\"timestamp\":\"2024-05-01T10:00:00Z\"},{\"userId\":\"u1\",\"event\":\"click_signup\",\"timestamp\":\"2024-05-01T10:01:00Z\"},{\"userId\":\"u1\",\"event\":\"complete_registration\",\"timestamp\":\"2024-05-01T10:05:00Z\"},{\"userId\":\"u2\",\"event\":\"page_view\",\"timestamp\":\"2024-05-01T10:02:00Z\"},{\"userId\":\"u2\",\"event\":\"click_signup\",\"timestamp\":\"2024-05-01T10:20:00Z\"}],\"conversionSteps\":[\"page_view\",\"click_signup\",\"complete_registration\"],\"timeWindowMinutes\":60,\"uniqueUserBy\":\"userId\",\"includeDropOffs\":true}", + "description": "Basic conversion funnel analysis for signup process within one hour time window." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Conversion", + "context": null + } + }, + { + "name": "model-management.createChannel", + "description": "Creates a communication channel for AI model management workflows. Accepts inputs such as channel name, type (e.g., slack, email, webhook), access permissions, and optional description. Processes configuration and provisioning details, then outputs a summary of the created channel including its unique ID, URL or endpoint, and status.", + "category": "model-management", + "parameters": [ + { + "name": "channelName", + "type": "string", + "description": "The human-readable name of the channel to create, used for identification and display.", + "required": true, + "defaultValue": "" + }, + { + "name": "channelType", + "type": "string", + "description": "The type of communication channel to create, e.g., 'slack', 'email', 'webhook'. Determines configuration specifics.", + "required": true, + "defaultValue": "" + }, + { + "name": "accessPermissions", + "type": "object", + "description": "An object defining access control, including roles and user IDs permitted to send or receive messages on this channel.", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional textual description of the channel's purpose or usage context.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value metadata to attach custom settings or tags to the channel.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns details of the created channel including ID, URL or endpoint, configuration summary, and current status." + }, + "aiAgent": { + "useCase": "Use this tool when an AI system or developer needs to establish a new communication channel for real-time or asynchronous messages related to AI model lifecycle management, such as notifications, alerts, or command interfaces. It is useful for integrating AI model workflows into operational platforms like Slack or webhook endpoints.", + "limitations": "This tool does not handle message sending, channel monitoring, or management beyond initial creation. It also does not configure authentication mechanisms beyond simple access permissions provided.", + "examples": [ + "Create a Slack channel named 'model-alerts' with access for data scientists and engineers.", + "Create an email notification channel for model update alerts with specified recipients.", + "Create a webhook channel for model inference request notifications with metadata tags indicating environment." + ] + }, + "tags": [ + "channel", + "communication", + "model-management", + "integration", + "notification", + "permissions" + ], + "examples": [ + { + "inputJson": "{\"channelName\":\"model-alerts\",\"channelType\":\"slack\",\"accessPermissions\":{\"roles\":[\"data-scientist\",\"engineer\"]},\"description\":\"Slack channel for model alerts\"}", + "description": "Creates a Slack channel named 'model-alerts' with role-based access for data scientists and engineers." + }, + { + "inputJson": "{\"channelName\":\"model-update-email\",\"channelType\":\"email\",\"accessPermissions\":{\"users\":[\"user1@example.com\",\"user2@example.com\"]},\"description\":\"Email channel for model updates\"}", + "description": "Sets up an email channel to send model update alerts to specified user emails." + }, + { + "inputJson": "{\"channelName\":\"inference-webhook\",\"channelType\":\"webhook\",\"metadata\":{\"env\":\"production\",\"team\":\"mlops\"}}", + "description": "Creates a webhook channel for production inference notifications tagged with environment and team info." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Channel", + "context": null + } + }, + { + "name": "model-management.createCertificate", + "description": "Creates a security certificate for an AI model deployment by accepting model identification details, certificate type, validity period, and encryption settings. It processes these inputs to generate a signed certificate file usable for securing model inference endpoints.", + "category": "model-management", + "parameters": [ + { + "name": "modelId", + "type": "string", + "description": "Unique identifier of the AI model to associate the certificate with.", + "required": true, + "defaultValue": "" + }, + { + "name": "certificateType", + "type": "string", + "description": "Type of certificate to create, e.g., 'SSL', 'CodeSigning', or 'ClientAuth'.", + "required": true, + "defaultValue": "" + }, + { + "name": "validityDays", + "type": "number", + "description": "Number of days the certificate will remain valid from the creation date.", + "required": true, + "defaultValue": "365" + }, + { + "name": "encryptionAlgorithm", + "type": "string", + "description": "The encryption algorithm to use for the certificate, e.g., 'RSA-2048' or 'ECDSA-P256'.", + "required": false, + "defaultValue": "RSA-2048" + }, + { + "name": "issuerName", + "type": "string", + "description": "Name of the certificate issuer authority. Default is the internal CA.", + "required": false, + "defaultValue": "InternalCA" + }, + { + "name": "includePrivateKey", + "type": "boolean", + "description": "Whether to include the private key in the output package (for deployment purposes).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the certificate PEM string, private key PEM string if included, expiration date, and metadata about the certificate." + }, + "aiAgent": { + "useCase": "Use this tool when deploying or updating AI models requiring secure communication channels or authentication. It generates certificates tailored for model endpoints or code signing, ensuring trusted interactions and model integrity. Useful for automating security in CI/CD pipelines for AI systems.", + "limitations": "This tool does not handle certificate revocation or provide a public CA integration; it assumes the usage of internal or preconfigured issuers.", + "examples": [ + "Create an SSL certificate for model 'abc123' valid for 90 days using default settings.", + "Generate a code signing certificate with ECDSA-P256 algorithm for a new model deployment.", + "Produce a client authentication certificate including the private key for internal service authentication." + ] + }, + "tags": [ + "security", + "certificate", + "model-deployment", + "encryption", + "automation" + ], + "examples": [ + { + "inputJson": "{\"modelId\":\"abc123\",\"certificateType\":\"SSL\",\"validityDays\":90}", + "description": "Generate an SSL certificate valid for 90 days for model 'abc123' using default encryption and issuer." + }, + { + "inputJson": "{\"modelId\":\"modelXYZ\",\"certificateType\":\"CodeSigning\",\"validityDays\":180,\"encryptionAlgorithm\":\"ECDSA-P256\",\"includePrivateKey\":true}", + "description": "Create a code signing certificate using ECDSA-P256 algorithm including the private key for secure code verification." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Certificate", + "context": null + } + }, + { + "name": "model-management.createExpense", + "description": "Creates a new expense record associated with a model management or AI project, capturing details such as amount, category, date, description, and related project or model identifier. It accepts structured input data, validates it, stores the expense, and returns the created expense record with a unique identifier.", + "category": "model-management", + "parameters": [ + { + "name": "amount", + "type": "number", + "description": "Monetary amount of the expense in the specified currency.", + "required": true, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code (ISO 4217) for the amount, e.g., USD, EUR.", + "required": true, + "defaultValue": "USD" + }, + { + "name": "category", + "type": "string", + "description": "Category or type of the expense, such as 'Training Cost', 'Cloud Usage', 'Software License'.", + "required": true, + "defaultValue": "" + }, + { + "name": "date", + "type": "string", + "description": "Date when the expense was incurred in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional descriptive text about the expense detail or purpose.", + "required": false, + "defaultValue": "" + }, + { + "name": "projectId", + "type": "string", + "description": "Identifier of the project or model management context to which this expense is attributed.", + "required": false, + "defaultValue": "" + }, + { + "name": "receiptUrl", + "type": "string", + "description": "Optional URL or link to a scanned receipt or invoice document.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created expense record including a unique ID, all submitted details, and a timestamp of creation." + }, + "aiAgent": { + "useCase": "Use this tool when the AI agent needs to record financial expenditures related to AI model development, deployment, or management, such as budgeting, tracking cloud costs, or software licenses. It helps centralize and organize expense data linked to projects or models for reporting and auditing purposes.", + "limitations": "This tool cannot process reimbursements or payments; it only records expense data. It does not perform accounting or financial analysis beyond storing the data.", + "examples": [ + "Create a new expense record for a cloud GPU rental of $150 on 2024-05-01 for project ID 'proj_123'.", + "Record a software subscription expense of $30 in EUR with description 'Data labeling tool license' without linking it to a specific project.", + "Add an expense of $500 with a scanned receipt URL for consulting services dated 2024-04-20." + ] + }, + "tags": [ + "model-management", + "expense-tracking", + "finance", + "project-management", + "AI-projects" + ], + "examples": [ + { + "inputJson": "{\"amount\":150.0,\"currency\":\"USD\",\"category\":\"Cloud Usage\",\"date\":\"2024-05-01\",\"description\":\"GPU rental for model training\",\"projectId\":\"proj_123\",\"receiptUrl\":\"\"}", + "description": "Record cloud GPU rental expense for project proj_123." + }, + { + "inputJson": "{\"amount\":30.0,\"currency\":\"EUR\",\"category\":\"Software License\",\"date\":\"2024-04-15\",\"description\":\"Data labeling tool monthly license\",\"projectId\":\"\",\"receiptUrl\":\"\"}", + "description": "Record monthly license expense without project linkage." + }, + { + "inputJson": "{\"amount\":500.0,\"currency\":\"USD\",\"category\":\"Consulting Services\",\"date\":\"2024-04-20\",\"description\":\"Consulting for model optimization\",\"projectId\":\"proj_456\",\"receiptUrl\":\"https://example.com/receipt123.pdf\"}", + "description": "Record consulting service expense with receipt URL for project proj_456." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Expense", + "context": null + } + }, + { + "name": "model-management.createDiagram", + "description": "Creates a visual diagram representing an AI model architecture or deployment workflow. Accepts inputs detailing model components, connections, and optional annotations; processes these to generate a structured diagram output as a JSON object representing nodes and edges, suitable for rendering or further editing.", + "category": "model-management", + "parameters": [ + { + "name": "modelName", + "type": "string", + "description": "The name of the AI model to be represented in the diagram.", + "required": true, + "defaultValue": "" + }, + { + "name": "components", + "type": "array", + "description": "An array of objects describing each component/module of the model (e.g., layers, data inputs, preprocessing steps). Each object includes id, label, and type.", + "required": true, + "defaultValue": "" + }, + { + "name": "connections", + "type": "array", + "description": "An array defining connections between components, each with source and target component ids to represent dataflow or dependencies.", + "required": true, + "defaultValue": "" + }, + { + "name": "annotations", + "type": "array", + "description": "Optional array of annotation objects to add notes or metadata on diagram components or connections.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "layoutType", + "type": "string", + "description": "The preferred layout style for the diagram, e.g., 'hierarchical', 'circular', or 'force-directed'.", + "required": false, + "defaultValue": "hierarchical" + } + ], + "returns": { + "type": "object", + "description": "A structured JSON object representing the diagram including nodes, edges, layout metadata, suitable for rendering or export." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to visualize or generate a machine learning model architecture or deployment pipeline diagram from structured component definitions. Useful for documentation, review, or design workflows.", + "limitations": "This tool does not render graphical images itself; it provides diagram data structure only. Complex automatic layout adjustments may be limited depending on layoutType.", + "examples": [ + "Create a diagram for a convolutional neural network model with input, convolutional, pooling, and output layers.", + "Generate a deployment workflow diagram showing model inference servers, data sources, and client applications.", + "Add annotations highlighting which components perform preprocessing vs. model inference." + ] + }, + "tags": [ + "model-management", + "diagram", + "visualization", + "architecture", + "ai-model", + "workflow" + ], + "examples": [ + { + "inputJson": "{\"modelName\":\"ImageClassifierCNN\",\"components\":[{\"id\":\"input\",\"label\":\"Input Layer\",\"type\":\"input\"},{\"id\":\"conv1\",\"label\":\"Conv Layer 1\",\"type\":\"conv\"},{\"id\":\"pool1\",\"label\":\"Pooling Layer 1\",\"type\":\"pooling\"},{\"id\":\"fc\",\"label\":\"Fully Connected Layer\",\"type\":\"fc\"},{\"id\":\"output\",\"label\":\"Output Layer\",\"type\":\"output\"}],\"connections\":[{\"source\":\"input\",\"target\":\"conv1\"},{\"source\":\"conv1\",\"target\":\"pool1\"},{\"source\":\"pool1\",\"target\":\"fc\"},{\"source\":\"fc\",\"target\":\"output\"}],\"annotations\":[{\"targetId\":\"conv1\",\"note\":\"Uses 3x3 filters\"}],\"layoutType\":\"hierarchical\"}", + "description": "Defines a typical CNN model diagram with layers and connection flow" + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Diagram", + "context": null + } + }, + { + "name": "model-management.createAudio", + "description": "This tool generates synthetic audio files using AI models trained for text-to-speech or audio synthesis. It accepts input parameters such as text scripts, voice profiles, audio format, and sample rate, processes them with the underlying model, and outputs audio data or file references for playback or download.", + "category": "model-management", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The text content to be converted into speech or audio.", + "required": true, + "defaultValue": "" + }, + { + "name": "voiceProfile", + "type": "string", + "description": "The identifier for the voice style or persona to use for synthesis.", + "required": false, + "defaultValue": "default" + }, + { + "name": "audioFormat", + "type": "string", + "description": "The desired output audio file format, e.g., wav, mp3.", + "required": false, + "defaultValue": "wav" + }, + { + "name": "sampleRate", + "type": "number", + "description": "Sample rate (in Hz) for the output audio.", + "required": false, + "defaultValue": "22050" + }, + { + "name": "speed", + "type": "number", + "description": "Speech speed multiplier where 1 is normal speed.", + "required": false, + "defaultValue": "1" + }, + { + "name": "pitch", + "type": "number", + "description": "Pitch adjustment multiplier where 1 is normal pitch.", + "required": false, + "defaultValue": "1" + }, + { + "name": "outputFileName", + "type": "string", + "description": "Optional filename for the generated audio output.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the URL or path to the generated audio file, audio metadata including format, duration, and sample rate." + }, + "aiAgent": { + "useCase": "Use this tool when text-based input needs to be converted into realistic speech or audio output for applications such as voice assistants, audiobooks, announcements, or multimedia content generation. It allows AI agents to create custom audio dynamically based on provided text and voice preferences.", + "limitations": "This tool cannot generate audio from arbitrary non-textual inputs like images or videos. It does not perform audio editing or mixing post-generation and cannot guarantee human-like prosody in all voices.", + "examples": [ + "Create an audio narration from given script for accessibility features.", + "Generate custom alerts in a specific voice profile for an application.", + "Produce speech outputs from chatbot responses in real-time audio format." + ] + }, + "tags": [ + "audio", + "synthesis", + "text-to-speech", + "model-management", + "media", + "voice", + "tts", + "speech" + ], + "examples": [ + { + "inputJson": "{\"text\":\"Welcome to the audio creation tool.\",\"voiceProfile\":\"female_en_us\",\"audioFormat\":\"mp3\",\"sampleRate\":44100,\"speed\":1,\"pitch\":1,\"outputFileName\":\"welcome.mp3\"}", + "description": "Generate an English US female voice reading a welcome message as an MP3 file." + }, + { + "inputJson": "{\"text\":\"Your download is complete.\",\"voiceProfile\":\"male_en_uk\",\"audioFormat\":\"wav\",\"sampleRate\":16000,\"speed\":1.2,\"pitch\":0.9}", + "description": "Create a faster, slightly lower-pitched UK male voice notification in WAV format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Audio", + "context": null + } + }, + { + "name": "model-management.createDependency", + "description": "Creates and registers a software dependency (e.g., library or package) required by an AI model or its pipeline. Accepts dependency details like name, version, source, and compatibility info, performs validation and integration checks, and outputs a structured record confirming successful creation or errors.", + "category": "model-management", + "parameters": [ + { + "name": "dependencyName", + "type": "string", + "description": "The name of the dependency to create and register, e.g., a library or package name.", + "required": true, + "defaultValue": "" + }, + { + "name": "version", + "type": "string", + "description": "The version string of the dependency, such as semantic versioning e.g. '1.2.3'.", + "required": true, + "defaultValue": "" + }, + { + "name": "source", + "type": "string", + "description": "Source or repository URL of the dependency, e.g., GitHub link or package registry URL.", + "required": false, + "defaultValue": "" + }, + { + "name": "compatiblePlatforms", + "type": "array", + "description": "List of platforms or environments (e.g., 'linux', 'windows', 'macos') where the dependency is supported.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "isOptional", + "type": "boolean", + "description": "Flag indicating whether the dependency is optional for the model's functioning or mandatory.", + "required": false, + "defaultValue": "false" + }, + { + "name": "notes", + "type": "string", + "description": "Additional notes or metadata about the dependency for documentation or audit purposes.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object including dependencyId (unique identifier), status (e.g., 'created', 'exists', or 'error'), and message detailing success or error information." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically add and track external or internal code dependencies required by an AI model's training or deployment pipeline, ensuring proper version and platform compatibility management.", + "limitations": "This tool does not fetch or install the dependencies itself; it only registers and validates dependency metadata. It cannot resolve version conflicts automatically.", + "examples": [ + "Create a new mandatory dependency 'numpy' version '1.21.0' from PyPI repository for Linux and Windows platforms.", + "Register an optional helper library 'matplotlib' version '3.4.2' with source repository link and additional notes.", + "Add a dependency without specifying source to track a legacy internal library." + ] + }, + "tags": [ + "dependency", + "model-management", + "registration", + "versioning", + "compatibility", + "package" + ], + "examples": [ + { + "inputJson": "{\"dependencyName\":\"numpy\",\"version\":\"1.21.0\",\"source\":\"https://pypi.org/project/numpy/1.21.0/\",\"compatiblePlatforms\":[\"linux\",\"windows\"],\"isOptional\":false,\"notes\":\"Core scientific computing library.\"}", + "description": "Register numpy version 1.21.0 as a mandatory dependency supporting Linux and Windows." + }, + { + "inputJson": "{\"dependencyName\":\"matplotlib\",\"version\":\"3.4.2\",\"source\":\"https://github.com/matplotlib/matplotlib\",\"compatiblePlatforms\":[\"linux\",\"windows\",\"macos\"],\"isOptional\":true,\"notes\":\"Optional plotting library.\"}", + "description": "Add matplotlib as an optional dependency with GitHub source for all platforms." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dependency", + "context": null + } + }, + { + "name": "embedding-generation.analyzeLink", + "description": "This tool accepts a URL as input, fetches and analyzes the web page content, and generates a vector embedding representing the semantic content of that page. It outputs a numeric embedding vector along with metadata such as page title and summary. It helps convert online content into embedding form for downstream semantic search, clustering, or recommendation tasks.", + "category": "embedding-generation", + "parameters": [ + { + "name": "url", + "type": "string", + "description": "The URL of the web page to analyze and embed.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum seconds to wait when fetching the URL before timing out.", + "required": false, + "defaultValue": "10" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include metadata such as page title and summary in the output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "embeddingModel", + "type": "string", + "description": "Identifier of the embedding model to use for vector generation.", + "required": false, + "defaultValue": "default-embedding-model-v1" + } + ], + "returns": { + "type": "object", + "description": "An object containing the embedding vector as an array of numbers, plus metadata like page title, summary, and the source URL." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert web page content into dense vector embeddings for semantic analysis tasks such as search indexing, clustering, or recommendations based on the content of online resources. It is suitable when given a URL pointing to relevant content.", + "limitations": "This tool does not perform in-depth content extraction for complex web apps or paywalled content. It also cannot embed non-textual elements like images or videos embedded in the page, only text content extracted.", + "examples": [ + "Generate embedding for the page https://en.wikipedia.org/wiki/Artificial_intelligence", + "Fetch and analyze https://news.ycombinator.com and produce semantic vector and metadata", + "Create a vector embedding for https://openai.com/blog and include page summary" + ] + }, + "tags": [ + "embedding", + "link", + "web", + "semantic", + "vector", + "analysis" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://en.wikipedia.org/wiki/Machine_learning\"}", + "description": "Analyze Wikipedia page on Machine Learning to generate embedding and extract metadata." + }, + { + "inputJson": "{\"url\":\"https://www.bbc.com/news\",\"timeoutSeconds\":15,\"includeMetadata\":true}", + "description": "Fetch BBC News homepage with longer timeout and obtain embedding vector with page metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Link", + "context": null + } + }, + { + "name": "embedding-generation.analyzeTable", + "description": "Processes tabular data input (CSV string or JSON array of objects) to generate vector embeddings representing the semantic content of each row or column. It supports specifying whether to embed rows or columns, handles optional text normalization, and returns embeddings with associated metadata for downstream similarity search or clustering tasks.", + "category": "embedding-generation", + "parameters": [ + { + "name": "tableData", + "type": "string", + "description": "Tabular data input as a CSV-formatted string or JSON array of objects representing rows.", + "required": true, + "defaultValue": "" + }, + { + "name": "inputFormat", + "type": "string", + "description": "Format of the tableData input; valid values are 'csv' or 'json'.", + "required": true, + "defaultValue": "csv" + }, + { + "name": "embedBy", + "type": "string", + "description": "Indicates if embeddings should be generated per 'row' or per 'column' of the table.", + "required": false, + "defaultValue": "row" + }, + { + "name": "normalizeText", + "type": "boolean", + "description": "If true, apply text normalization like lowercasing and punctuation removal before embedding.", + "required": false, + "defaultValue": "true" + }, + { + "name": "embeddingModel", + "type": "string", + "description": "Identifier of the embedding model to use, e.g., 'sentence-transformers/all-MiniLM-L6-v2'.", + "required": false, + "defaultValue": "sentence-transformers/all-MiniLM-L6-v2" + }, + { + "name": "maxRows", + "type": "number", + "description": "Maximum number of rows to process for embeddings; helps limit resource use. 0 means no limit.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An object containing an array of embedding objects, each with an id, the original text segment embedded, and its numerical vector representation." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert the semantic content of structured tabular data into vector embeddings for similarity search, clustering, or downstream machine learning tasks. Ideal for data analysis scenarios where comparing rows or columns via semantic similarity is required, such as product catalogs, user attribute tables, or experimental results.", + "limitations": "Cannot process extremely large tables efficiently without pre-filtering; embeddings quality depends on the input text quality and the selected embedding model. Not designed for complex multi-dimensional tables or non-textual data like images.", + "examples": [ + "Generate row embeddings from a CSV product data table to find similar products.", + "Create column embeddings from a JSON array of survey results to identify related attributes.", + "Normalize and embed each row of a CSV containing news headline data for clustering by topic." + ] + }, + "tags": [ + "embedding", + "table", + "vectorization", + "data-analysis", + "semantic-search" + ], + "examples": [ + { + "inputJson": "{\"tableData\":\"product,description\\nA,This is a fast red bike\\nB,An electric scooter\\nC,Comfortable running shoes\",\"inputFormat\":\"csv\",\"embedBy\":\"row\",\"normalizeText\":true}", + "description": "Embed each row of a CSV product dataset to later find similar products based on descriptions." + }, + { + "inputJson": "{\"tableData\":\"[{\\\"Name\\\":\\\"Temp\\\",\\\"Jan\\\":5,\\\"Feb\\\":7},{\\\"Name\\\":\\\"Humidity\\\",\\\"Jan\\\":30,\\\"Feb\\\":25}]\",\"inputFormat\":\"json\",\"embedBy\":\"column\",\"normalizeText\":false}", + "description": "Generate embeddings for each column from a JSON array representing monthly weather data." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Table", + "context": null + } + }, + { + "name": "embedding-generation.analyzeKPI", + "description": "This tool accepts a list of textual descriptions of KPIs (Key Performance Indicators) along with optional metadata, generates semantic embeddings for each KPI, and performs analysis to identify similarity clusters, trends, and key driver factors based on the embeddings. The output includes embedding vectors and an analytical summary highlighting KPI relationships and insights.", + "category": "embedding-generation", + "parameters": [ + { + "name": "kpiTexts", + "type": "array", + "description": "An array of strings, each representing the textual description of a KPI to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "array", + "description": "An optional array of objects providing metadata per KPI, such as dates, categories, or numeric values to enrich analysis.", + "required": false, + "defaultValue": "" + }, + { + "name": "embeddingModel", + "type": "string", + "description": "The name or identifier of the embedding model to use for generating vector representations.", + "required": false, + "defaultValue": "\"default-embedding-model\"" + }, + { + "name": "similarityThreshold", + "type": "number", + "description": "Numeric threshold (0 to 1) for determining significant similarity between KPI embeddings to form clusters.", + "required": false, + "defaultValue": "0.75" + }, + { + "name": "maxClusters", + "type": "number", + "description": "The maximum number of similarity clusters to identify in the analysis output.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "An object containing embeddings for each KPI, clusters of similar KPIs with similarity scores, and an analytical summary describing detected trends and key factors." + }, + "aiAgent": { + "useCase": "Use this tool when you need to semantically analyze multiple KPI descriptions for similarity, relationship patterns, and key insights using vector embeddings, especially for KPI management, business analytics, or performance measurement tasks. It helps distill complex KPIs into clusters and identifying patterns or outliers.", + "limitations": "This tool does not perform numerical statistical analysis beyond embedding-based similarity and clustering. It relies on the quality of input text and embedding model and does not replace expert human analysis of KPI definitions or business context.", + "examples": [ + "Analyze a list of sales and marketing KPIs to find overlapping metrics and key focus areas.", + "Cluster operational KPIs across different departments to identify redundant or similar indicators.", + "Generate semantic embeddings for KPIs to support visualization and strategic decision-making." + ] + }, + "tags": [ + "embedding", + "KPI", + "analytics", + "semantic-analysis", + "clustering", + "business-intelligence" + ], + "examples": [ + { + "inputJson": "{\"kpiTexts\":[\"Monthly Revenue Growth\",\"Customer Churn Rate\",\"Net Promoter Score\",\"Average Handle Time\",\"Employee Turnover Rate\"]}", + "description": "Analyze common business KPIs to detect which ones are semantically similar or related to identify focus areas." + }, + { + "inputJson": "{\"kpiTexts\":[\"Daily Active Users\",\"Monthly Recurring Revenue\",\"Conversion Rate\",\"Bounce Rate\"],\"similarityThreshold\":0.8,\"maxClusters\":5}", + "description": "Analyze product KPIs with a higher similarity threshold and limit of clusters to find tightly related metrics." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "KPI", + "context": null + } + }, + { + "name": "embedding-generation.analyzePayment", + "description": "This tool accepts detailed payment transaction data, including textual notes and transaction metadata, and generates vector embeddings that capture semantic information and categorical features useful for downstream analysis such as fraud detection, payment categorization, or anomaly detection. It processes text and numeric attributes to produce a combined embedding vector representing the payment.", + "category": "embedding-generation", + "parameters": [ + { + "name": "paymentData", + "type": "object", + "description": "An object containing the payment information such as amount, description, date, payee, and other metadata to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "embeddingModel", + "type": "string", + "description": "The embedding generation model to use for encoding text and metadata, e.g., 'finbert-base' or 'universal-sentence-encoder'.", + "required": false, + "defaultValue": "finbert-base" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Flag indicating whether to include numeric and categorical metadata in the embedding along with textual fields.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxTextLength", + "type": "number", + "description": "Maximum character length for text fields to use for embedding to avoid excessive input size.", + "required": false, + "defaultValue": "512" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing a numeric vector embedding representing the payment transaction, and optionally metadata about the embedding process such as model used and timestamps." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert payment transaction data into meaningful vector representations for tasks like fraud detection, payment classification, clustering similar payments, or building search indexes over payments. This tool helps encode semantic and transactional features into embeddings suitable for machine learning pipelines.", + "limitations": "Cannot replace domain-specific fraud classification or payment reconciliation; embeddings provide features but do not produce classification or labels by themselves.", + "examples": [ + "Generate an embedding of a bank payment to use as input for fraud detection model.", + "Create vector embeddings for all recent payments to cluster similar transactions.", + "Analyze payment notes and metadata to build search indexes based on meaning and metadata." + ] + }, + "tags": [ + "embedding", + "payment", + "transaction-analysis", + "fraud-detection", + "vectorization" + ], + "examples": [ + { + "inputJson": "{\"paymentData\":{\"amount\":150.75,\"currency\":\"USD\",\"description\":\"Invoice #1234 payment for consulting services\",\"date\":\"2024-06-15\",\"payee\":\"Acme Consulting\"},\"embeddingModel\":\"finbert-base\",\"includeMetadata\":true,\"maxTextLength\":512}", + "description": "Embedding generation for a consulting service payment including amount and description." + }, + { + "inputJson": "{\"paymentData\":{\"amount\":2500,\"currency\":\"EUR\",\"description\":\"Salary payment June 2024\",\"date\":\"2024-06-30\",\"payee\":\"John Doe\"},\"embeddingModel\":\"universal-sentence-encoder\",\"includeMetadata\":false,\"maxTextLength\":256}", + "description": "Embedding generation focusing on text description only for salary payment, excluding numeric metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Payment", + "context": null + } + }, + { + "name": "embedding-generation.analyzeDashboard", + "description": "This tool accepts structured dashboard data, including various widget configurations and their associated textual content, and generates vector embeddings that capture the semantic information of the dashboard layout and content. It outputs an analysis object containing embeddings for each widget as well as aggregate analytics to facilitate advanced search, clustering, or recommendation use cases.", + "category": "embedding-generation", + "parameters": [ + { + "name": "dashboardData", + "type": "object", + "description": "Structured JSON object representing the dashboard, including widgets, their types, textual labels, metrics, and metadata.", + "required": true, + "defaultValue": "" + }, + { + "name": "embeddingModel", + "type": "string", + "description": "Name or identifier of the embedding model to use, supporting options such as 'text-embedding-ada-002' or custom models.", + "required": false, + "defaultValue": "text-embedding-ada-002" + }, + { + "name": "includeAggregateEmbedding", + "type": "boolean", + "description": "Whether to compute and include an aggregate embedding that represents the entire dashboard content.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxWidgets", + "type": "number", + "description": "Maximum number of widgets to process from the dashboard for embedding generation, to control processing time and resource use.", + "required": false, + "defaultValue": "50" + }, + { + "name": "normalizeEmbeddings", + "type": "boolean", + "description": "Indicates if the output embeddings should be normalized (unit length vectors).", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an analysis object containing a mapping of widget IDs to their corresponding embeddings, an optional aggregate embedding for the entire dashboard, metadata about the processing, and embedding dimensions." + }, + "aiAgent": { + "useCase": "Use this tool when you need to semantically analyze the textual and metadata content of dashboard widgets for purposes such as improving dashboard searchability, enabling similarity comparisons between dashboards, or powering recommendation engines. It transforms heterogeneous dashboard content into a consistent vector space representation.", + "limitations": "This tool does not render visual elements or perform image embeddings and is limited to textual and metadata content. It cannot interpret real-time data streams or perform time series forecasting.", + "examples": [ + "Analyze the embeddings of all widgets in this sales performance dashboard for clustering similar KPIs.", + "Generate a vector representation of the marketing dashboard widgets to power semantic search over widget descriptions.", + "Provide aggregate semantic embedding of the entire dashboard to compare similarity with other dashboards." + ] + }, + "tags": [ + "embedding-generation", + "dashboard", + "analysis", + "vector-embeddings", + "semantic-search", + "analytics" + ], + "examples": [ + { + "inputJson": "{\"dashboardData\":{\"widgets\":[{\"id\":\"w1\",\"type\":\"text\",\"content\":\"Total Revenue Q1\"},{\"id\":\"w2\",\"type\":\"chart\",\"title\":\"Monthly Sales\",\"description\":\"Bar chart showing sales per month\"},{\"id\":\"w3\",\"type\":\"table\",\"title\":\"Top Customers\",\"columns\":[\"Name\",\"Sales\"]}],\"metadata\":{\"author\":\"analyst1\",\"created\":\"2024-05-01\"}},\"embeddingModel\":\"text-embedding-ada-002\",\"includeAggregateEmbedding\":true,\"maxWidgets\":10,\"normalizeEmbeddings\":true}", + "description": "Embedding analysis for a sales dashboard with a few widgets, including generating individual and aggregate embeddings." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Dashboard", + "context": null + } + }, + { + "name": "embedding-generation.analyzeRisk", + "description": "Analyzes text input to generate vector embeddings specifically optimized for identifying and assessing security risk-related content. Accepts raw text or documents describing potential risks, processes them to output semantic embeddings that highlight risk factors, enabling downstream applications such as risk clustering, similarity search, and threat intelligence.", + "category": "embedding-generation", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The raw text or document content describing security risks to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "embeddingModel", + "type": "string", + "description": "The name or version of the embedding model to use for risk analysis (e.g., 'risk-specific-v1').", + "required": false, + "defaultValue": "risk-specific-v1" + }, + { + "name": "normalizeOutput", + "type": "boolean", + "description": "Whether to normalize the resulting embedding vectors (unit length).", + "required": false, + "defaultValue": "true" + }, + { + "name": "returnMetadata", + "type": "boolean", + "description": "Include metadata like token count and processing timestamps in the output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the embedding vector as a numeric array optimized for risk context, plus optional metadata if requested." + }, + "aiAgent": { + "useCase": "Use this tool when you need to represent security risk-related textual data as dense vectors for machine learning models, similarity search, or clustering, aiding in automated threat detection, risk management, or compliance analysis.", + "limitations": "This tool only generates embeddings; it does not classify or interpret the risk severity, which requires additional models. It assumes input text is in English and properly formatted.", + "examples": [ + "Generate embeddings from a new vulnerability report to cluster it with past risks.", + "Create semantic vectors for incident logs to find similar prior events.", + "Embed risk analysis sections in compliance documents for similarity search." + ] + }, + "tags": [ + "embedding", + "security", + "risk-analysis", + "vectorization", + "nlp" + ], + "examples": [ + { + "inputJson": "{\"text\":\"The recent breach exposed customer PII due to outdated firewall configurations.\",\"embeddingModel\":\"risk-specific-v1\",\"normalizeOutput\":true,\"returnMetadata\":true}", + "description": "Embedding generation for a security incident report describing breached PII risk." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Risk", + "context": null + } + }, + { + "name": "embedding-generation.analyzeComment", + "description": "Processes a text comment to generate a vector embedding reflecting its semantic content, along with an analysis of sentiment and key topics. Accepts raw comment text and optional language setting, then outputs a multidimensional embedding vector, sentiment polarity, and extracted key topics for use in downstream applications like clustering, search, or recommendation.", + "category": "embedding-generation", + "parameters": [ + { + "name": "commentText", + "type": "string", + "description": "The raw text content of the comment to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The language code of the comment text (e.g., 'en' for English) to guide embedding and analysis accuracy.", + "required": false, + "defaultValue": "\"en\"" + }, + { + "name": "includeSentiment", + "type": "boolean", + "description": "Whether to perform sentiment analysis on the comment text.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeTopics", + "type": "boolean", + "description": "Whether to extract key topics or keywords from the comment text.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the comment's vector embedding (array of floats), sentiment score (positive/neutral/negative), and an array of key topics extracted from the comment." + }, + "aiAgent": { + "useCase": "Use this tool when needing a semantic vector representation of a comment for searching, grouping, or understanding user sentiment and themes. It helps in analyzing user feedback, reviews, or social comments to drive insights or trigger actions.", + "limitations": "Cannot fully understand highly ambiguous, sarcastic, or very short comments; sentiment analysis is approximate and may not capture nuanced emotions; embedding quality depends on language support and contextual richness.", + "examples": [ + "Generate embedding and sentiment for a product review comment to aid in customer feedback analysis.", + "Extract key topics and vector embedding from user forum posts for content recommendation.", + "Analyze social media comments to detect sentiment trends and main discussion points." + ] + }, + "tags": [ + "embedding", + "comment analysis", + "sentiment", + "topic extraction", + "vectorization", + "nlp", + "text analysis" + ], + "examples": [ + { + "inputJson": "{\"commentText\":\"I love the new update, it's really improved the app's speed!\",\"language\":\"en\",\"includeSentiment\":true,\"includeTopics\":true}", + "description": "Analyze a positive user comment about an app update with sentiment and key topics." + }, + { + "inputJson": "{\"commentText\":\"The recent changes made navigation harder and slower.\",\"includeSentiment\":true}", + "description": "Analyze a negative feedback comment for sentiment and embedding, defaulting to English." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Comment", + "context": null + } + }, + { + "name": "embedding-generation.uploadJSON", + "description": "Uploads a JSON-formatted dataset containing text entries and optional metadata for vector embedding generation. Processes the provided JSON data by validating structure and storing it for embedding computation, returning a status report and summary of uploaded items.", + "category": "embedding-generation", + "parameters": [ + { + "name": "jsonData", + "type": "string", + "description": "The JSON string representing an array of text objects with optional metadata to be uploaded for embedding generation.", + "required": true, + "defaultValue": "" + }, + { + "name": "datasetName", + "type": "string", + "description": "A descriptive name for the dataset being uploaded to help identify it later.", + "required": false, + "defaultValue": "" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "If true, overwrites existing dataset with the same name, otherwise appends or errors out if duplicate.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxEntries", + "type": "number", + "description": "Maximum number of JSON objects to process from the input; useful for limiting upload size.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing upload status, number of records accepted, number of records rejected (if any), and an optional error message." + }, + "aiAgent": { + "useCase": "Use this tool when you have JSON-formatted text data that needs to be prepared for vector embedding generation. It is particularly useful for bulk uploading datasets that include text and optional metadata for further NLP processing or search indexing.", + "limitations": "This tool cannot generate embeddings itself; it only uploads and validates JSON data for embedding generation. It also requires the input JSON to be well-formed and follow the expected schema (e.g., an array of objects with text fields).", + "examples": [ + "Upload a JSON array of customer reviews for sentiment embedding.", + "Load a dataset of product descriptions with IDs to generate embeddings later.", + "Submit a JSON list of research paper abstracts to be embedded for semantic search." + ] + }, + "tags": [ + "embeddinggeneration", + "upload", + "json", + "dataset", + "textprocessing" + ], + "examples": [ + { + "inputJson": "{\"jsonData\":\"[{\\\"text\\\":\\\"Machine learning improves AI capabilities.\\\", \\\"id\\\":1}, {\\\"text\\\":\\\"Natural language processing enables better chatbots.\\\", \\\"id\\\":2}]\",\"datasetName\":\"AI Text Samples\",\"overwriteExisting\":\"false\",\"maxEntries\":2}", + "description": "Uploading a small dataset of AI-related texts with unique IDs for embedding." + }, + { + "inputJson": "{\"jsonData\":\"[{\\\"text\\\":\\\"Deep learning techniques in image analysis.\\\"}, {\\\"text\\\":\\\"Advances in reinforcement learning.\\\"}]\",\"datasetName\":\"ResearchAbstracts\",\"overwriteExisting\":\"true\",\"maxEntries\":10}", + "description": "Uploading research abstracts dataset, overwriting if it exists." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "JSON", + "context": null + } + }, + { + "name": "embedding-generation.sendNotification", + "description": "This tool accepts a notification payload along with embedding vectors associated with the content. It processes by packaging the text embeddings and notification details to send customized notifications to users or systems relevant to the embedding semantics. Output is a status response with delivery metadata.", + "category": "embedding-generation", + "parameters": [ + { + "name": "recipientId", + "type": "string", + "description": "Unique identifier of the notification recipient", + "required": true, + "defaultValue": "" + }, + { + "name": "message", + "type": "string", + "description": "Text content of the notification message", + "required": true, + "defaultValue": "" + }, + { + "name": "embeddingVector", + "type": "array", + "description": "Numerical array representing the semantic embedding of the message content", + "required": true, + "defaultValue": "" + }, + { + "name": "channel", + "type": "string", + "description": "Communication channel to send the notification (e.g., email, SMS, push)", + "required": false, + "defaultValue": "push" + }, + { + "name": "priority", + "type": "string", + "description": "Priority level of the notification (e.g., low, normal, high)", + "required": false, + "defaultValue": "normal" + }, + { + "name": "metadata", + "type": "object", + "description": "Additional data to include with the notification such as timestamps or tags", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the status of the notification send attempt (e.g., success/failure), timestamp, and any error messages." + }, + "aiAgent": { + "useCase": "Use this tool when you want to send notifications that are generated or selected based on semantic embeddings of the content, enabling context-aware communication to users or systems via multiple channels. It's ideal for embedding-aware alerting or messaging in AI workflows.", + "limitations": "This tool does not generate embeddings itself nor analyze user preferences; it relies on provided embeddings and recipient info. It does not guarantee delivery, only sending status.", + "examples": [ + "Send a push notification alert with high priority to a user based on semantic similarity embedding.", + "Deliver a notification message via email using the embedding vector representing the message context.", + "Send a normal priority SMS notification to a device with additional metadata like timestamp." + ] + }, + "tags": [ + "embedding", + "notification", + "communication", + "semantic", + "vector", + "alert", + "message" + ], + "examples": [ + { + "inputJson": "{\"recipientId\":\"user123\",\"message\":\"Your order has been shipped.\",\"embeddingVector\":[0.12,0.98,0.45,0.22],\"channel\":\"push\",\"priority\":\"high\",\"metadata\":{\"orderId\":\"abc123\",\"timestamp\":\"2024-06-01T12:00:00Z\"}}", + "description": "Send a high priority push notification about a shipped order with embedding vector and metadata." + }, + { + "inputJson": "{\"recipientId\":\"user456\",\"message\":\"Weekly report is ready.\",\"embeddingVector\":[0.33,0.47,0.89,0.11],\"channel\":\"email\",\"priority\":\"normal\"}", + "description": "Send a normal priority email notification about a weekly report using the semantic embedding of the message." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Notification", + "context": null + } + }, + { + "name": "embedding-generation.uploadDataset", + "description": "Uploads a dataset file for embedding generation workflows. Accepts dataset files in CSV, JSON, or TXT formats, validates and stores them securely for further embedding processing tasks. Returns a confirmation and metadata about the uploaded dataset including its size and format.", + "category": "embedding-generation", + "parameters": [ + { + "name": "datasetName", + "type": "string", + "description": "Name identifier for the uploaded dataset to reference later.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileType", + "type": "string", + "description": "Specifies the format of the dataset file (e.g., csv, json, txt).", + "required": true, + "defaultValue": "" + }, + { + "name": "fileContent", + "type": "string", + "description": "Base64 encoded content of the dataset file to be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional textual description of the dataset for context.", + "required": false, + "defaultValue": "" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "If true, overwrites an existing dataset with the same name.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Response object containing upload status, dataset metadata including name, size in bytes, format, and any warnings or errors." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to upload and register new datasets as part of a pipeline that will later generate embeddings. Suitable for automating dataset management before embedding computations. Ensures datasets are correctly formatted and stored before subsequent processing.", + "limitations": "This tool does not perform any embedding generation itself, only the upload and storage of dataset files. It does not support streaming large files; files must be base64 encoded and fully provided. Does not validate dataset content quality beyond basic format checks.", + "examples": [ + "Upload a CSV dataset named 'customer_reviews.csv' containing product reviews for embedding.", + "Upload a JSON file for a text corpus to be used in training embedding models.", + "Overwrite an existing dataset named 'news_articles' with updated content." + ] + }, + "tags": [ + "embedding", + "dataset", + "upload", + "file", + "data-management", + "embedding-preparation" + ], + "examples": [ + { + "inputJson": "{\"datasetName\":\"customer_feedback_q1\",\"fileType\":\"csv\",\"fileContent\":\"U29tZSxGYWtlLGRhdGEsU29tZSwxMjM=\",\"description\":\"Customer feedback data for Q1 analysis.\",\"overwriteExisting\":false}", + "description": "Uploads a CSV dataset of customer feedback with a description, without overwriting existing datasets." + }, + { + "inputJson": "{\"datasetName\":\"research_papers\",\"fileType\":\"json\",\"fileContent\":\"W3sidGl0bGUiOiBSZXNlYXJjaCBQYXBlciIsInRlcnMiOiBbInRlcnMgY29udGVudCJdfV0=\",\"overwriteExisting\":true}", + "description": "Uploads and overwrites an existing JSON dataset named 'research_papers' containing paper metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Dataset", + "context": null + } + }, + { + "name": "embedding-generation.renderReport", + "description": "This tool takes structured report data in JSON format and rendering options, then generates a formatted textual report embedding that summarizes and structures the information for downstream machine learning or semantic search tasks. Inputs may include report sections, titles, and style preferences, producing a clean, flattened string embedding output.", + "category": "embedding-generation", + "parameters": [ + { + "name": "reportData", + "type": "object", + "description": "A JSON object containing the structured content of the report, including sections, headings, and text blocks.", + "required": true, + "defaultValue": "" + }, + { + "name": "style", + "type": "string", + "description": "Preferred style for rendering the report text, such as 'concise', 'detailed', or 'bulletPoints'.", + "required": false, + "defaultValue": "concise" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include report metadata (author, date, version) in the rendered output.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length (in tokens or characters) for the output embedding text.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing a single string field 'renderedReport' with the final report text embedding." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert structured report data into a unified textual embedding suitable for AI semantic indexing, similarity search, or summarization workflows. It is ideal for transforming document domain objects into simplified text for embedding models.", + "limitations": "It does not generate vector embeddings directly; the output is rendering text meant for further embedding steps. It cannot parse unstructured raw text or non-report data formats.", + "examples": [ + "Render a quarterly sales report JSON object into a concise embedding text.", + "Generate a detailed version of a technical report with metadata included.", + "Create a bullet-point style summary embedding from the input report sections." + ] + }, + "tags": [ + "embedding", + "report", + "render", + "document", + "text", + "semantic search", + "summarization" + ], + "examples": [ + { + "inputJson": "{\"reportData\":{\"title\":\"Q1 Sales Report\",\"author\":\"Jane Doe\",\"date\":\"2024-03-31\",\"sections\":[{\"heading\":\"Summary\",\"content\":\"Overall sales increased by 15% compared to last quarter.\"},{\"heading\":\"Top Products\",\"content\":\"Product A led sales with a 25% increase.\"}]},\"style\":\"concise\",\"includeMetadata\":true,\"maxLength\":500}", + "description": "Rendering a concise report embedding including metadata from a sales report JSON." + }, + { + "inputJson": "{\"reportData\":{\"title\":\"Tech Research Findings\",\"sections\":[{\"heading\":\"Introduction\",\"content\":\"This study covers AI impact in healthcare.\"},{\"heading\":\"Results\",\"content\":\"Improved diagnostic accuracy by 5%.\"}]},\"style\":\"detailed\",\"includeMetadata\":false,\"maxLength\":1200}", + "description": "Rendering a detailed version of a technical research report without metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Report", + "context": null + } + }, + { + "name": "embedding-generation.downloadDataset", + "description": "Downloads a specified embedding dataset used for training or benchmarking embedding generation models. Accepts dataset name and optional filters to select versions or subsets. Provides a downloadable link or direct data output in standard formats such as JSON, CSV, or binary embedding files.", + "category": "embedding-generation", + "parameters": [ + { + "name": "datasetName", + "type": "string", + "description": "The name of the embedding dataset to download (e.g., 'glove', 'fasttext', 'sentence-transformers').", + "required": true, + "defaultValue": "" + }, + { + "name": "version", + "type": "string", + "description": "Specific version or release identifier of the dataset to download, if applicable.", + "required": false, + "defaultValue": "" + }, + { + "name": "subset", + "type": "string", + "description": "Optional subset or split of the dataset to retrieve (e.g., 'train', 'test', 'validation').", + "required": false, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "Desired output format for the dataset. Common options include 'json', 'csv', 'bin' for binary embeddings.", + "required": false, + "defaultValue": "json" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Flag to include metadata or labels with the downloaded dataset (e.g., source info, licensing).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing downloadUrl for direct download or data field with inline dataset content depending on size/format. Also includes metadata like datasetName, version, and format." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically retrieve embedding datasets for training, evaluation, or research purposes. It helps agents fetch specific dataset versions or subsets in preferred formats to integrate into embedding model workflows or benchmarking pipelines.", + "limitations": "This tool does not preprocess or transform datasets beyond delivering the requested dataset and metadata. It cannot create new embeddings or datasets, only provide existing ones available in the registry.", + "examples": [ + "Download the 'glove' embeddings dataset version '6B' in CSV format.", + "Get the 'sentence-transformers' dataset training subset as JSON.", + "Retrieve the latest 'fasttext' dataset without metadata." + ] + }, + "tags": [ + "embedding-generation", + "dataset", + "download", + "machine-learning", + "nlp", + "data-access" + ], + "examples": [ + { + "inputJson": "{\"datasetName\":\"glove\",\"version\":\"6B\",\"format\":\"csv\"}", + "description": "Download the GloVe dataset version 6B in CSV format." + }, + { + "inputJson": "{\"datasetName\":\"sentence-transformers\",\"subset\":\"train\",\"format\":\"json\",\"includeMetadata\":true}", + "description": "Download the training subset of Sentence Transformers dataset as JSON with metadata." + }, + { + "inputJson": "{\"datasetName\":\"fasttext\"}", + "description": "Download the latest default version of FastText dataset in default JSON format without metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Dataset", + "context": null + } + }, + { + "name": "embedding-generation.sendAlert", + "description": "This tool accepts a security alert message along with optional metadata, generates a vector embedding representation of the alert content for semantic analysis, and sends it to a designated alert management system endpoint. It outputs a success confirmation with the embedding vector and message ID for tracking purposes.", + "category": "embedding-generation", + "parameters": [ + { + "name": "alertMessage", + "type": "string", + "description": "The raw text content of the security alert to be embedded and sent.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional key-value pairs related to the alert, such as severity, source IP, or timestamp.", + "required": false, + "defaultValue": "" + }, + { + "name": "embeddingModel", + "type": "string", + "description": "The identifier of the embedding model to use for vector generation (e.g., 'bert-base', 'openai-text-embedding-002').", + "required": false, + "defaultValue": "openai-text-embedding-002" + }, + { + "name": "destinationEndpoint", + "type": "string", + "description": "The URL or identifier of the endpoint/system where the alert and its embedding should be sent.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeEmbeddingInResponse", + "type": "boolean", + "description": "Whether to include the computed embedding vector as part of the tool's return output.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing a success flag, a unique message ID for tracking, the embedding vector if requested, and any error messages encountered during processing." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent detects or receives security alert text that requires standardized embedding for downstream semantic analysis, correlation, or alert management workflows. It helps transform textual alerts into vector format and sends them to monitoring or incident response systems for further action.", + "limitations": "This tool cannot perform alert classification, prioritization, or automated mitigation actions by itself. It only generates embeddings and forwards alerts as-is to specified endpoints.", + "examples": [ + "Send embedding of a phishing alert to the SIEM endpoint for clustering.", + "Forward an intrusion detection system alert with associated metadata and embedding to the incident management platform.", + "Embed and send anomalous login event alerts for semantic correlation in the alert manager." + ] + }, + "tags": [ + "embedding", + "security", + "alert", + "semantic-analysis", + "vectorization", + "monitoring", + "incident-response" + ], + "examples": [ + { + "inputJson": "{\"alertMessage\":\"Suspicious login detected from IP 192.168.1.15\",\"metadata\":{\"severity\":\"high\",\"timestamp\":\"2024-06-01T12:00:00Z\"},\"embeddingModel\":\"openai-text-embedding-002\",\"destinationEndpoint\":\"https://alerts.mycompany.com/api/v1/receive\",\"includeEmbeddingInResponse\":true}", + "description": "Embed and send a high severity suspicious login security alert with timestamp to the alerts API endpoint, returning the embedding vector in the response." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Alert", + "context": null + } + }, + { + "name": "file-operations.analyzeEvent", + "description": "Analyzes event log files containing JSON or CSV formatted data to extract key metrics such as event frequency, duration, and error rates. Accepts file path or raw content, processes events to output summarized statistics and anomalies in a structured JSON report.", + "category": "file-operations", + "parameters": [ + { + "name": "filePath", + "type": "string", + "description": "Path to the event log file to analyze. Supports JSON or CSV formats.", + "required": false, + "defaultValue": "" + }, + { + "name": "rawContent", + "type": "string", + "description": "Raw content of the event log data as a string, used if filePath is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileFormat", + "type": "string", + "description": "Format of the event log data: 'json' or 'csv'.", + "required": true, + "defaultValue": "json" + }, + { + "name": "timeField", + "type": "string", + "description": "Name of the timestamp field in the event data for sorting and duration calculations.", + "required": false, + "defaultValue": "timestamp" + }, + { + "name": "eventTypeField", + "type": "string", + "description": "Name of the field that identifies the type/category of the event.", + "required": false, + "defaultValue": "eventType" + }, + { + "name": "errorField", + "type": "string", + "description": "Name of the field indicating error or failure status in events.", + "required": false, + "defaultValue": "error" + }, + { + "name": "analyzeDuration", + "type": "boolean", + "description": "Whether to calculate event durations between start and end events when applicable.", + "required": false, + "defaultValue": "true" + }, + { + "name": "frequencyWindowMinutes", + "type": "number", + "description": "Time window in minutes for calculating event frequency statistics.", + "required": false, + "defaultValue": "60" + } + ], + "returns": { + "type": "object", + "description": "Structured JSON object containing summary statistics such as total event counts, frequency over time windows, duration metrics, and error rates, along with detected anomalies if any." + }, + "aiAgent": { + "useCase": "Use this tool when you have event log files from systems, applications, or sensors and need automated extraction of key analytics like frequency of events, durations, and error occurrences. It helps in monitoring system behavior and detecting anomalies.", + "limitations": "This tool cannot repair malformed log files or interpret event semantics beyond the provided fields. It also assumes timestamps are consistent and does not support real-time streaming data input.", + "examples": [ + "Analyze event logs from a web server to find peak request times and error rates.", + "Process application event logs in CSV to measure average process durations.", + "Inspect sensor event logs to identify anomalies in event frequencies." + ] + }, + "tags": [ + "analysis", + "file-operations", + "event-logs", + "analytics", + "monitoring" + ], + "examples": [ + { + "inputJson": "{\"filePath\":\"/logs/app_events.json\",\"fileFormat\":\"json\",\"timeField\":\"timestamp\",\"eventTypeField\":\"event_type\",\"errorField\":\"error_flag\",\"analyzeDuration\":true,\"frequencyWindowMinutes\":30}", + "description": "Analyze a JSON event log file to extract event frequency every 30 mins, durations and errors." + }, + { + "inputJson": "{\"rawContent\":\"timestamp,eventType,error\\n2024-06-01T10:00:00Z,start,0\\n2024-06-01T10:05:00Z,end,0\\n2024-06-01T10:10:00Z,error,1\",\"fileFormat\":\"csv\",\"timeField\":\"timestamp\",\"eventTypeField\":\"eventType\",\"errorField\":\"error\",\"analyzeDuration\":true,\"frequencyWindowMinutes\":60}", + "description": "Analyze raw CSV event data string with start, end and error events to find durations and error occurrences." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Event", + "context": null + } + }, + { + "name": "embedding-generation.formatJSON", + "description": "Formats raw JSON data representing embedding vectors or metadata into a clean, standardized JSON string. Accepts input JSON objects or arrays containing embedding data, applies standardized indentation and spacing, optionally filters keys, and outputs a validated, human-readable JSON string suitable for embedding storage or further processing.", + "category": "embedding-generation", + "parameters": [ + { + "name": "inputData", + "type": "object", + "description": "The raw JSON object or array containing embedding vectors and related metadata to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "indentationSpaces", + "type": "number", + "description": "Number of spaces to use for JSON indentation to enhance readability.", + "required": false, + "defaultValue": "2" + }, + { + "name": "filterKeys", + "type": "array", + "description": "List of keys to retain in the output JSON; if empty or omitted, all keys are preserved.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "sortKeys", + "type": "boolean", + "description": "Whether to sort the object keys alphabetically in the output JSON.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted JSON string and a validity flag indicating if parsing and formatting were successful." + }, + "aiAgent": { + "useCase": "Use this tool when you need to cleanly format, standardize, and optionally filter or sort JSON data representing embedding vectors or metadata before storage, transmission, or further processing by embedding-based systems.", + "limitations": "This tool does not generate embeddings, validate semantic correctness of embedded data, or convert raw text into embeddings. It only reformats and filters provided JSON data.", + "examples": [ + "Format raw embedding vectors JSON with 4 spaces indentation.", + "Filter JSON to only include 'embedding' and 'id' keys and sort keys alphabetically.", + "Produce minimal indented JSON string without filtering or sorting." + ] + }, + "tags": [ + "embedding-generation", + "json-formatting", + "data-cleaning", + "json", + "embedding-data", + "vector-formatting" + ], + "examples": [ + { + "inputJson": "{\"inputData\":{\"id\":\"123abc\",\"embedding\":[0.12,0.34,0.56],\"metadata\":{\"source\":\"user\"}},\"indentationSpaces\":4,\"filterKeys\":[\"id\",\"embedding\"],\"sortKeys\":true}", + "description": "Format an embedding JSON entry keeping only 'id' and 'embedding' keys, sorted alphabetically with 4-space indentation." + }, + { + "inputJson": "{\"inputData\":{\"text\":\"hello world\",\"embedding\":[0.1,0.2,0.3],\"timestamp\":\"2023-01-01\"},\"indentationSpaces\":2,\"filterKeys\":[],\"sortKeys\":false}", + "description": "Format full embedding JSON including all keys, with 2 space indentation and no sorting." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "JSON", + "context": null + } + }, + { + "name": "embedding-generation.formatTest", + "description": "This tool accepts raw test definitions related to embedding generation, formats them according to a standardized code style, and outputs the formatted test code as a string. It helps in preparing consistent, well-structured test code for embedding generation components given raw or unformatted test inputs.", + "category": "embedding-generation", + "parameters": [ + { + "name": "rawTestCode", + "type": "string", + "description": "Unformatted or raw test code input related to embedding generation to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language of the test code (e.g., 'javascript', 'python') to apply appropriate formatting rules.", + "required": true, + "defaultValue": "javascript" + }, + { + "name": "indentStyle", + "type": "string", + "description": "Indentation style to use in formatting (e.g., 'space' or 'tab').", + "required": false, + "defaultValue": "space" + }, + { + "name": "indentSize", + "type": "number", + "description": "Number of spaces or tab width for indentation.", + "required": false, + "defaultValue": "2" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted test code as a string with consistent code style." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent receives raw or inconsistent test code samples for embedding generation components and needs to convert them into consistently formatted, readable test code to integrate into projects or documentation. It ensures uniform style for easier maintenance and review.", + "limitations": "This tool does not execute or validate the correctness of the test logic, only formats the code stylistically. It depends on language and style inputs and may not fully parse highly complex or non-standard code constructs.", + "examples": [ + "Format raw JavaScript unit test code for embedding generation with 2-space indentation.", + "Format unstructured Python embedding test cases to use tabs for indentation." + ] + }, + "tags": [ + "embedding-generation", + "code-formatting", + "test-code", + "software-testing", + "javascript", + "python" + ], + "examples": [ + { + "inputJson": "{\"rawTestCode\":\"describe('Embedding generator', ()=>{test('should return correct vector',()=>{const result=embed('text');expect(result).toHaveLength(1536);});});\",\"language\":\"javascript\",\"indentStyle\":\"space\",\"indentSize\":2}", + "description": "Formats a JavaScript embedding generator test block with 2-space indentation." + }, + { + "inputJson": "{\"rawTestCode\":\"def test_embedding_vector():\\n result = embed('sample')\\n assert len(result) == 1536\",\"language\":\"python\",\"indentStyle\":\"tab\",\"indentSize\":1}", + "description": "Formats a Python test function for embedding vector with tab indentation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Test", + "context": null + } + }, + { + "name": "embedding-generation.formatAPI", + "description": "This tool accepts raw embedding vectors, API specification details, and formatting options to produce a well-structured, ready-to-use API specification snippet for embedding generation endpoints. It formats inputs into code domain API definitions in JSON or YAML for integration in projects.", + "category": "embedding-generation", + "parameters": [ + { + "name": "embeddingVectors", + "type": "array", + "description": "An array of numeric embedding vectors to be included in the API specification.", + "required": true, + "defaultValue": "" + }, + { + "name": "apiSpecification", + "type": "object", + "description": "Object containing API metadata including endpoint path, method, and parameter details.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatStyle", + "type": "string", + "description": "The output format style for the API specification (e.g., 'json', 'yaml').", + "required": false, + "defaultValue": "\"json\"" + }, + { + "name": "includeExamples", + "type": "boolean", + "description": "Whether to include example requests and responses in the API specification.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns the formatted API specification as a string in the requested format, ready for embedding generation integration." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to convert raw embedding data and related endpoint info into a developer-ready API specification snippet for embedding generation services. Ideal for automatic documentation generation or API client scaffolding.", + "limitations": "This tool does not generate the embedding vectors themselves or perform semantic analysis; it only formats given data into API specification code snippets.", + "examples": [ + "Generate a JSON API snippet for an embedding generation endpoint using provided vectors and metadata.", + "Format the embedding generation API specification in YAML including example payloads.", + "Create a minimal JSON API definition with no examples for embedding vectors." + ] + }, + "tags": [ + "embedding", + "API", + "formatting", + "code-generation", + "specification", + "documentation" + ], + "examples": [ + { + "inputJson": "{\"embeddingVectors\":[[0.1,0.2,0.3],[0.4,0.5,0.6]],\"apiSpecification\":{\"endpoint\":\"/generate-embedding\",\"method\":\"POST\",\"parameters\":[{\"name\":\"inputText\",\"type\":\"string\",\"required\":true}]},\"formatStyle\":\"json\",\"includeExamples\":true}", + "description": "Format embedding vectors and API metadata into JSON API spec with examples." + }, + { + "inputJson": "{\"embeddingVectors\":[[0.01,0.02,0.03]],\"apiSpecification\":{\"endpoint\":\"/embedding\",\"method\":\"POST\",\"parameters\":[{\"name\":\"text\",\"type\":\"string\",\"required\":true}]},\"formatStyle\":\"yaml\",\"includeExamples\":false}", + "description": "Create a YAML API spec for embedding endpoint without examples." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "API", + "context": null + } + }, + { + "name": "embedding-generation.draftReport", + "description": "This tool accepts a structured prompt describing the topic, target audience, and key points, then generates a coherent draft report text. It performs natural language generation based on the input parameters, producing a structured report draft suitable for further refinement or embedding generation workflows.", + "category": "embedding-generation", + "parameters": [ + { + "name": "topic", + "type": "string", + "description": "The main subject or theme of the report to draft.", + "required": true, + "defaultValue": "" + }, + { + "name": "audience", + "type": "string", + "description": "The intended audience for the report, guiding tone and style.", + "required": false, + "defaultValue": "general" + }, + { + "name": "keyPoints", + "type": "array", + "description": "An array of strings with key points or sections to include in the report.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "length", + "type": "number", + "description": "Approximate length of the draft report in words.", + "required": false, + "defaultValue": "500" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Whether to include an executive summary section at the start.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the generated report draft text and a summary if requested." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to produce an initial text draft of a report based on a specific topic, audience, and key points, potentially as a preliminary step before embedding extraction or further content analysis.", + "limitations": "It cannot generate fully finalized or publication-ready reports; the output may require human review and editing for accuracy, detail, and style conformity.", + "examples": [ + "Draft a report about climate change impact for policymakers focusing on economic effects.", + "Generate a technical report draft on AI safety for a specialized research audience.", + "Create a brief draft report summarizing quarterly sales performance for internal stakeholders." + ] + }, + "tags": [ + "embedding-generation", + "NLG", + "report-drafting", + "document", + "text-generation" + ], + "examples": [ + { + "inputJson": "{\"topic\":\"The future of renewable energy\",\"audience\":\"environmental researchers\",\"keyPoints\":[\"current trends\",\"technology advancements\",\"policy impacts\"],\"length\":700,\"includeSummary\":true}", + "description": "Generate a detailed report draft on renewable energy targeted to researchers including key technical and policy points." + }, + { + "inputJson": "{\"topic\":\"Quarterly financial summary\",\"audience\":\"company executives\",\"keyPoints\":[\"revenue growth\",\"expenses\",\"profit margins\"],\"length\":400,\"includeSummary\":false}", + "description": "Create a concise draft report of quarterly finances for company executives without a summary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Report", + "context": null + } + }, + { + "name": "embedding-generation.composeMessage", + "description": "Generates a concise, context-aware communication message embedding from provided text content and optional metadata. Accepts message body text and additional context parameters, processes semantic meaning, and outputs a vector embedding representing the composed message's meaning for downstream similarity search or clustering.", + "category": "embedding-generation", + "parameters": [ + { + "name": "messageBody", + "type": "string", + "description": "Main text content of the message to embed.", + "required": true, + "defaultValue": "" + }, + { + "name": "contextMetadata", + "type": "object", + "description": "Optional key-value pairs to include contextual information (e.g., topic, recipient role).", + "required": false, + "defaultValue": "{}" + }, + { + "name": "embeddingDimension", + "type": "number", + "description": "Dimensionality of the output embedding vector.", + "required": false, + "defaultValue": "512" + }, + { + "name": "includeSubject", + "type": "boolean", + "description": "Whether to include a separate subject line in the embedding composition.", + "required": false, + "defaultValue": "false" + }, + { + "name": "subjectText", + "type": "string", + "description": "Text of the subject line if 'includeSubject' is true.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated embedding vector as an array of numbers and metadata about the message composition." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a vector representation of a communication message for tasks like semantic search, message clustering, or context-aware retrieval from a message database.", + "limitations": "Does not generate natural language messages or full text; outputs only semantic embeddings. Effectiveness depends on quality of input text and model parameters.", + "examples": [ + "Generate embedding for an email message body with optional subject to support similarity search.", + "Compose an embedding for SMS content with recipient role context for clustering communications.", + "Create vector representation of a chat message for semantic analysis in a customer support system." + ] + }, + "tags": [ + "embedding", + "message", + "text processing", + "semantic search", + "communication", + "vectorization" + ], + "examples": [ + { + "inputJson": "{\"messageBody\":\"Please review the attached project proposal by end of day.\",\"includeSubject\":true,\"subjectText\":\"Project Proposal Review\",\"embeddingDimension\":300}", + "description": "Embedding composition for an email message with subject line included, customized to 300-dimensional vector." + }, + { + "inputJson": "{\"messageBody\":\"Thanks for your quick response, I appreciate it!\",\"contextMetadata\":{\"recipientRole\":\"customer support\"},\"embeddingDimension\":512}", + "description": "Compose embedding for a brief thank-you text message, including recipient role metadata, using default embedding dimension." + }, + { + "inputJson": "{\"messageBody\":\"Reminder: the team meeting is scheduled for 3 PM tomorrow.\",\"includeSubject\":false}", + "description": "Generate embedding for a reminder message without including any subject line." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Message", + "context": null + } + }, + { + "name": "embedding-generation.buildService", + "description": "This tool helps set up and configure a vector embedding generation service infrastructure. It accepts configuration parameters such as target model, deployment environment, resource allocation, scaling options, and authentication settings, then builds and deploys the embedding service. The output is a service endpoint URL and deployment status for integration into larger pipelines.", + "category": "embedding-generation", + "parameters": [ + { + "name": "modelName", + "type": "string", + "description": "The name or identifier of the embedding model to deploy (e.g., 'text-embedding-ada-002').", + "required": true, + "defaultValue": "" + }, + { + "name": "environment", + "type": "string", + "description": "The deployment environment for the service (e.g., 'production', 'staging', 'development').", + "required": true, + "defaultValue": "production" + }, + { + "name": "computeResources", + "type": "object", + "description": "Specification of compute resource allocation, including CPU cores and memory in GB.", + "required": false, + "defaultValue": "{\"cpuCores\":4,\"memoryGB\":16}" + }, + { + "name": "scalingOptions", + "type": "object", + "description": "Settings for autoscaling like minInstances and maxInstances for handling varying load.", + "required": false, + "defaultValue": "{\"minInstances\":1,\"maxInstances\":5}" + }, + { + "name": "authenticationToken", + "type": "string", + "description": "Token or key used to secure access to the embedding service endpoint.", + "required": true, + "defaultValue": "" + }, + { + "name": "loggingEnabled", + "type": "boolean", + "description": "Flag to enable or disable logging for the embedding service operations.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the service endpoint URL, deployment status, and additional metadata such as deployment timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent or developer needs to programmatically provision a scalable vector embedding generation service tailored with specific model and deployment configurations, enabling integration into data pipelines or application infrastructures.", + "limitations": "This tool does not perform the embedding generation itself; it only provisions the infrastructure service. It also does not handle downstream data orchestration or embedding storage beyond providing the service endpoint.", + "examples": [ + "Build a production embedding service using 'text-embedding-ada-002' with autoscaling between 2 and 10 instances.", + "Deploy an embedding service in a staging environment with minimal resources for testing.", + "Create an embedding service with logging disabled and a custom authentication token for secure access." + ] + }, + "tags": [ + "embedding", + "service-building", + "deployment", + "infrastructure", + "vector-search", + "AI-models", + "scaling" + ], + "examples": [ + { + "inputJson": "{\"modelName\":\"text-embedding-ada-002\",\"environment\":\"production\",\"computeResources\":{\"cpuCores\":8,\"memoryGB\":32},\"scalingOptions\":{\"minInstances\":2,\"maxInstances\":10},\"authenticationToken\":\"securetoken123\",\"loggingEnabled\":true}", + "description": "Deploys a production-grade embedding service with specified compute and autoscaling settings, secured by a token and with logging enabled." + }, + { + "inputJson": "{\"modelName\":\"text-embedding-003\",\"environment\":\"staging\",\"authenticationToken\":\"testtoken456\"}", + "description": "Deploys a staging environment service with default resources and autoscaling to test embedding generation integration." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Service", + "context": null + } + }, + { + "name": "embedding-generation.buildContainer", + "description": "Builds a containerized environment tailored for embedding generation tasks. Accepts configuration parameters defining the container image, resource limits, environment variables, and additional setup scripts. Outputs metadata including container ID, status, and endpoint information for embedding service deployment.", + "category": "embedding-generation", + "parameters": [ + { + "name": "containerImage", + "type": "string", + "description": "Docker image name and tag to use for building the embedding generation container.", + "required": true, + "defaultValue": "" + }, + { + "name": "cpuLimit", + "type": "number", + "description": "Maximum CPU units allocated to the container (e.g., 2 for 2 cores).", + "required": false, + "defaultValue": "1" + }, + { + "name": "memoryLimitMb", + "type": "number", + "description": "Maximum memory in megabytes allocated to the container.", + "required": false, + "defaultValue": "2048" + }, + { + "name": "environmentVariables", + "type": "object", + "description": "Key-value pairs of environment variables to set inside the container.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "setupScript", + "type": "string", + "description": "Optional shell script commands to run during container startup for custom configuration.", + "required": false, + "defaultValue": "" + }, + { + "name": "exposePort", + "type": "number", + "description": "Port number inside the container to expose for embedding generation API access.", + "required": false, + "defaultValue": "8080" + }, + { + "name": "autoStart", + "type": "boolean", + "description": "Whether to automatically start the container after building it.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Metadata about the built container including its unique identifier, current status, and connection endpoint." + }, + "aiAgent": { + "useCase": "Use this tool when you need a dedicated container environment to run an embedding generation model or service. It allows specifying resource constraints and environment customization for scalable and isolated deployment of vector embedding generation tasks.", + "limitations": "Does not perform embedding generation itself; only prepares and manages the container infrastructure. Requires container runtime environment and network access for deployment.", + "examples": [ + "Build a container using 'embedding-gen:latest' image with 4 CPU cores and 8GB memory.", + "Create a container exposing port 9000 with custom environment variables for API keys.", + "Build and auto-start a container including a setup script for model dependencies installation." + ] + }, + "tags": [ + "embedding", + "container", + "infrastructure", + "deployment", + "vector-models", + "resource-management" + ], + "examples": [ + { + "inputJson": "{\"containerImage\":\"embedding-gen:latest\",\"cpuLimit\":4,\"memoryLimitMb\":8192,\"environmentVariables\":{\"API_KEY\":\"abc123\"},\"setupScript\":\"pip install -r requirements.txt\",\"exposePort\":9000,\"autoStart\":true}", + "description": "Builds and starts a container with 4 CPU cores, 8GB RAM, exposing port 9000, setting API_KEY env variable and running a setup script." + }, + { + "inputJson": "{\"containerImage\":\"embedding-gen:cpu-optimized\",\"cpuLimit\":2,\"memoryLimitMb\":4096,\"environmentVariables\":{},\"setupScript\":\"\",\"exposePort\":8080,\"autoStart\":false}", + "description": "Builds a container with 2 CPUs and 4GB memory without auto-start." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Container", + "context": null + } + }, + { + "name": "embedding-generation.buildPullRequest", + "description": "Generates a vector embedding representing the semantic content of a pull request, using the PR's title, description, changed files, and review comments as input. Processes this textual and metadata input into a fixed-length numeric vector suitable for downstream tasks like search, classification, or recommendation.", + "category": "embedding-generation", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title of the pull request.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "The detailed description or body of the pull request.", + "required": false, + "defaultValue": "" + }, + { + "name": "changedFiles", + "type": "array", + "description": "List of filenames or paths that were modified in the pull request.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "reviewComments", + "type": "array", + "description": "Array of textual review comments associated with the pull request.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "embeddingDimension", + "type": "number", + "description": "The dimensionality of the output embedding vector. Defaults to 512.", + "required": false, + "defaultValue": "512" + } + ], + "returns": { + "type": "object", + "description": "An object containing the pull request embedding vector as an array of floats and metadata about the embedding." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to convert pull request information into a semantic vector for tasks like similarity search, clustering, or recommendation in code management workflows. Ideal for embedding PRs to analyze or compare their content and context with other PRs.", + "limitations": "Does not generate embeddings for binary files or non-text content changes. Focuses only on text metadata and file path data; it cannot assess code correctness or test results.", + "examples": [ + "Generate an embedding for a PR with the title, detailed description, and a few review comments.", + "Create a fixed-length numeric vector representing a PR's semantic content for clustering similar PRs.", + "Build an embedding from changed file paths and PR info for downstream recommendation systems." + ] + }, + "tags": [ + "embedding", + "pull-request", + "code-review", + "semantic-search", + "developer-tools", + "vectorization" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Add feature X to improve performance\",\"description\":\"This PR introduces feature X which optimizes the caching layer.\",\"changedFiles\":[\"src/cache.js\",\"src/utils/performance.js\"],\"reviewComments\":[\"Looks good overall.\",\"Consider adding unit tests for edge cases.\"],\"embeddingDimension\":512}", + "description": "Embedding for a pull request adding a performance feature with code and review comments." + }, + { + "inputJson": "{\"title\":\"Fix bug in user authentication\",\"description\":\"Corrected token expiration handling.\",\"changedFiles\":[\"auth/token.js\"],\"reviewComments\":[],\"embeddingDimension\":256}", + "description": "Embedding of a bug fix PR focusing on authentication logic with limited comments and smaller embedding dimension." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "PullRequest", + "context": null + } + }, + { + "name": "embedding-generation.buildBranch", + "description": "Generates vector embeddings for a specified code branch by extracting and processing the source code files within that branch. Accepts repository info and branch name, processes textual code content to produce embeddings representing the branch semantics. Outputs an object containing the branch embeddings and metadata.", + "category": "embedding-generation", + "parameters": [ + { + "name": "repositoryUrl", + "type": "string", + "description": "URL of the Git repository containing the code branch.", + "required": true, + "defaultValue": "" + }, + { + "name": "branchName", + "type": "string", + "description": "Name of the branch to build embeddings for.", + "required": true, + "defaultValue": "" + }, + { + "name": "embeddingModel", + "type": "string", + "description": "Identifier of the embedding model to use for generating vector embeddings.", + "required": false, + "defaultValue": "code-search-embedding" + }, + { + "name": "fileExtensions", + "type": "array", + "description": "List of code file extensions to include when extracting code for embedding (e.g., [\".js\", \".ts\"]).", + "required": false, + "defaultValue": "[\".js\", \".ts\"]" + }, + { + "name": "maxFiles", + "type": "number", + "description": "Maximum number of code files to process from the branch.", + "required": false, + "defaultValue": "100" + }, + { + "name": "includeComments", + "type": "boolean", + "description": "Whether to include code comments in the embedding process or only source code.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated embeddings for the code branch as an array of vectors, along with metadata such as branchName and repositoryUrl." + }, + "aiAgent": { + "useCase": "Use this tool when needing semantic vector embeddings representing the entire code base state of a specific Git branch, allowing downstream tasks like code search, similarity detection, or analysis across branch snapshots. It optimizes for code domain by handling multiple files and customizable filters.", + "limitations": "Does not perform embedding of binary files or non-code assets. Limited to textual code files and depends on availability and compatibility of specified embedding models. May not capture runtime behavior or dynamic code constructs.", + "examples": [ + "Generate embeddings for the 'develop' branch of a repo to enable semantic search.", + "Build vector representations for a feature branch combining JavaScript and TypeScript files.", + "Create embeddings for the main branch excluding comments for lightweight analysis." + ] + }, + "tags": [ + "embedding", + "code", + "branch", + "vector", + "semantic-search", + "analysis" + ], + "examples": [ + { + "inputJson": "{\"repositoryUrl\":\"https://github.com/example/project.git\",\"branchName\":\"feature/login\",\"embeddingModel\":\"code-search-embedding\",\"fileExtensions\":[\".js\",\".ts\"],\"maxFiles\":50,\"includeComments\":true}", + "description": "Create embeddings for the 'feature/login' branch in a JS/TS project, including comments, processing up to 50 files." + }, + { + "inputJson": "{\"repositoryUrl\":\"https://github.com/example/project.git\",\"branchName\":\"main\",\"embeddingModel\":\"code-search-embedding\",\"fileExtensions\":[\".py\"],\"maxFiles\":100,\"includeComments\":false}", + "description": "Build embeddings for the 'main' branch Python files excluding comments, with up to 100 files processed." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Branch", + "context": null + } + }, + { + "name": "embedding-generation.buildEndpoint", + "description": "Creates a RESTful API endpoint that accepts text input and returns vector embeddings generated by a specified embedding model. It processes the input text by invoking the embedding model, and formats the resulting vector embedding as JSON output for use in downstream applications.", + "category": "embedding-generation", + "parameters": [ + { + "name": "endpointPath", + "type": "string", + "description": "The URL path where the embedding endpoint will be exposed. Must begin with a slash (e.g., /embed).", + "required": true, + "defaultValue": "" + }, + { + "name": "embeddingModel", + "type": "string", + "description": "Identifier or name of the embedding model to be used for vector generation (e.g., 'text-embedding-ada-002').", + "required": true, + "defaultValue": "" + }, + { + "name": "httpMethod", + "type": "string", + "description": "The HTTP method for the endpoint, typically POST or GET. Defaults to POST.", + "required": false, + "defaultValue": "POST" + }, + { + "name": "maxInputLength", + "type": "number", + "description": "Maximum number of characters allowed in the input text. Inputs exceeding this will be rejected with an error.", + "required": false, + "defaultValue": "1000" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include additional metadata (e.g., model version, timestamp) in the API response.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object representing the API endpoint configuration including path, method, input specifications, and output schema providing text embeddings as numerical vector arrays." + }, + "aiAgent": { + "useCase": "Use this tool to programmatically create an API endpoint to generate vector embeddings for arbitrary text inputs. This is useful for applications that need a custom or immediate embedding service without manual server setup, enabling agents to integrate embedding generation seamlessly into pipelines.", + "limitations": "This tool doesn't deploy or host the endpoint; it builds specification or code for it. It cannot generate embeddings without an actual embedding model backend integration specified separately. It also doesn't handle authentication or rate limiting for the endpoint.", + "examples": [ + "Create an embedding endpoint at /generateEmbedding using the 'text-embedding-ada-002' model.", + "Build a POST API at /textVector that accepts text up to 1500 characters and returns embeddings with metadata.", + "Set up an endpoint '/embedText' with GET method using default model to embed short inputs." + ] + }, + "tags": [ + "embedding", + "API", + "endpoint", + "vectorization", + "text-processing", + "machine-learning", + "NLP" + ], + "examples": [ + { + "inputJson": "{\"endpointPath\":\"/embedText\",\"embeddingModel\":\"text-embedding-ada-002\"}", + "description": "Creates a POST endpoint '/embedText' using the model 'text-embedding-ada-002' with default settings." + }, + { + "inputJson": "{\"endpointPath\":\"/textVector\",\"embeddingModel\":\"custom-model-v1\",\"httpMethod\":\"POST\",\"maxInputLength\":1500,\"includeMetadata\":false}", + "description": "Builds a POST API '/textVector' using a custom embedding model, allowing input up to 1500 characters, excluding additional metadata in response." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Endpoint", + "context": null + } + }, + { + "name": "file-operations.analyzeNotification", + "description": "Analyzes notification files or data blobs containing notification messages, extracting key metadata and content such as sender, recipients, timestamps, message type, and priority. It processes input files or raw notification JSON to produce a structured summary report highlighting important notification attributes and potential issues.", + "category": "file-operations", + "parameters": [ + { + "name": "inputFilePath", + "type": "string", + "description": "Path to the notification file to analyze (supports JSON, XML, or text formats).", + "required": false, + "defaultValue": "" + }, + { + "name": "rawNotificationData", + "type": "string", + "description": "Raw notification message as a JSON string for analysis instead of a file.", + "required": false, + "defaultValue": "" + }, + { + "name": "extractContent", + "type": "boolean", + "description": "Flag to extract the main content/body text from the notification message.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include metadata fields like sender, recipients, timestamp in the analysis output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "checkForUrgency", + "type": "boolean", + "description": "Analyze the notification for urgency or high priority flags if present.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxContentLength", + "type": "number", + "description": "Maximum number of characters to extract from content if extractContent is true.", + "required": false, + "defaultValue": "500" + } + ], + "returns": { + "type": "object", + "description": "An object containing extracted fields such as sender, recipients, timestamp, messageType, priority, contentSnippet, and any detected issues or warnings." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to interpret the structure and key information within notification files or raw notification messages to summarize or validate them. It is useful in processing alerts, system notifications, or message logs to extract actionable insights or metadata for further automation or reporting.", + "limitations": "Cannot interpret arbitrary binary files or notifications in proprietary encrypted formats. Does not perform sentiment analysis or classify notifications beyond basic metadata extraction.", + "examples": [ + "Analyze a JSON notification log file to summarize sender and urgency.", + "Process raw notification JSON string to extract message timestamp and content snippet.", + "Validate notification text files for missing priority or recipient fields." + ] + }, + "tags": [ + "file analysis", + "notification parsing", + "metadata extraction", + "communication", + "log processing", + "alert analysis" + ], + "examples": [ + { + "inputJson": "{\"inputFilePath\":\"/data/notifications/alert1.json\",\"extractContent\":true,\"includeMetadata\":true}", + "description": "Analyze a JSON notification file extracting content and metadata." + }, + { + "inputJson": "{\"rawNotificationData\":\"{\\\"sender\\\":\\\"system@company.com\\\",\\\"recipients\\\":[\\\"user@example.com\\\"],\\\"timestamp\\\":\\\"2024-06-12T09:30:00Z\\\",\\\"messageType\\\":\\\"alert\\\",\\\"priority\\\":\\\"high\\\",\\\"content\\\":\\\"Server CPU load is critically high. Immediate action required.\\\"}\",\"checkForUrgency\":true}", + "description": "Analyze raw notification JSON string for urgency and extract fields." + }, + { + "inputJson": "{\"inputFilePath\":\"/logs/notifications.txt\",\"extractContent\":false,\"includeMetadata\":true}", + "description": "Analyze a text notification log file extracting metadata only, no content." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Notification", + "context": null + } + }, + { + "name": "file-operations.analyzeAlert", + "description": "Analyzes a security alert file in JSON or text format to extract key threat indicators, classification, timestamps, and affected systems. It performs pattern matching and severity scoring, outputting a structured summary report for incident response teams.", + "category": "file-operations", + "parameters": [ + { + "name": "alertFilePath", + "type": "string", + "description": "File system path to the alert data file to analyze. Supports JSON and plain text formats.", + "required": true, + "defaultValue": "" + }, + { + "name": "inputFormat", + "type": "string", + "description": "Format of the alert file: 'json' or 'text'. Determines parsing method.", + "required": true, + "defaultValue": "json" + }, + { + "name": "severityThreshold", + "type": "number", + "description": "Minimum severity score (0-10) to include alerts in summary. Filters out low severity alerts.", + "required": false, + "defaultValue": "0" + }, + { + "name": "includeRawData", + "type": "boolean", + "description": "Whether to include raw alert data in the output for additional context.", + "required": false, + "defaultValue": "false" + }, + { + "name": "customPatterns", + "type": "array", + "description": "Optional array of custom regex patterns to identify additional threat indicators in text alerts.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with alert summary: threat indicators, severity score, classification, timestamps, affected hosts, and optional raw data if requested." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to extract meaningful, structured data from raw security alert files to aid in threat analysis or incident response automation. It helps quickly interpret alerts to prioritize actions.", + "limitations": "Does not perform deep forensics or network traffic analysis. Limited to textual or JSON alert files. Accuracy dependent on provided patterns and severity scoring rules.", + "examples": [ + "Analyze a JSON alert file and summarize high severity issues", + "Extract threat indicators from a text-based alert log with custom patterns", + "Filter alerts by minimum severity to focus on critical threats" + ] + }, + "tags": [ + "file-operations", + "security", + "analysis", + "alert", + "threat-detection", + "incident-response" + ], + "examples": [ + { + "inputJson": "{\"alertFilePath\":\"/var/log/alerts/security_alert_2024-04-01.json\",\"inputFormat\":\"json\",\"severityThreshold\":7,\"includeRawData\":true}", + "description": "Analyze a JSON alert file focusing on alerts with severity 7 and above, including raw data in results." + }, + { + "inputJson": "{\"alertFilePath\":\"/tmp/alerts/weekly_alerts.txt\",\"inputFormat\":\"text\",\"customPatterns\":[\"CVE-\\d{4}-\\d{4,7}\",\"malware detected\"]}", + "description": "Analyze a text alert file looking for CVE identifiers and malware mentions using custom regex patterns." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Alert", + "context": null + } + }, + { + "name": "file-operations.sendMessage", + "description": "Sends a message file to a specified destination via an available communication channel. Accepts the path to the message file and delivery details, processes the file to prepare it for transmission, and outputs a confirmation and status of the sending operation.", + "category": "file-operations", + "parameters": [ + { + "name": "filePath", + "type": "string", + "description": "Absolute or relative path to the message file to be sent. Supported file formats include text, JSON, and XML.", + "required": true, + "defaultValue": "" + }, + { + "name": "destinationAddress", + "type": "string", + "description": "The recipient's address or identifier to which the message will be sent, e.g., an email address, phone number, or endpoint URL.", + "required": true, + "defaultValue": "" + }, + { + "name": "transportProtocol", + "type": "string", + "description": "The protocol or method used for sending the message, such as 'SMTP' for email, 'SMS' for text message, or 'HTTP' for API endpoint.", + "required": true, + "defaultValue": "" + }, + { + "name": "headers", + "type": "object", + "description": "Optional additional headers or metadata to include with the message, like subject, priority, or custom tags.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "retryCount", + "type": "number", + "description": "Number of times to retry sending the message upon failure before reporting an error.", + "required": false, + "defaultValue": "3" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Timeout interval in seconds to wait for the sending operation to complete before aborting.", + "required": false, + "defaultValue": "30" + } + ], + "returns": { + "type": "object", + "description": "An object containing the status of the message sending operation, including success flag, message ID, and error details if any." + }, + "aiAgent": { + "useCase": "This tool is useful when an agent needs to automate the sending of message files via different communication protocols depending on context, such as sending alert emails, SMS notifications, or HTTP POST messages. It handles file input and protocol selection to facilitate flexible message delivery.", + "limitations": "Cannot compose or generate message contents; requires pre-existing message files. Does not support encrypted or highly specialized proprietary protocols. Delivery depends on external service availability and correct addressing.", + "examples": [ + "Send a notification email using an existing message file.", + "Deliver an SMS message loaded from a text file to a phone number.", + "Post a JSON formatted message file to an API endpoint using HTTP protocol." + ] + }, + "tags": [ + "file", + "message", + "send", + "communication", + "notification", + "automation", + "protocol" + ], + "examples": [ + { + "inputJson": "{\"filePath\":\"./alerts/email1.txt\",\"destinationAddress\":\"user@example.com\",\"transportProtocol\":\"SMTP\",\"headers\":{\"subject\":\"Alert Notification\"},\"retryCount\":2,\"timeoutSeconds\":20}", + "description": "Send an email alert message stored in a text file to the user's email address using SMTP." + }, + { + "inputJson": "{\"filePath\":\"./sms/message.txt\",\"destinationAddress\":\"+1234567890\",\"transportProtocol\":\"SMS\",\"retryCount\":1,\"timeoutSeconds\":15}", + "description": "Send an SMS message read from a text file to a specific phone number." + }, + { + "inputJson": "{\"filePath\":\"./data/postMessage.json\",\"destinationAddress\":\"https://api.example.com/messages\",\"transportProtocol\":\"HTTP\",\"headers\":{\"Content-Type\":\"application/json\"},\"retryCount\":3}", + "description": "Post a JSON message file to a REST API endpoint using HTTP protocol with custom headers." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Message", + "context": null + } + }, + { + "name": "file-operations.renderFile", + "description": "This tool accepts a path to a media file (e.g., image, video, PDF) or raw file data and renders a visual representation of the file content onto a specified output format such as an image thumbnail, preview window, or canvas context. It supports scaling, format conversion, and optional annotations (like watermarks or overlays). The output is a rendered file or data URL suitable for display or further processing.", + "category": "file-operations", + "parameters": [ + { + "name": "filePath", + "type": "string", + "description": "Path or URL to the input media file to be rendered. Required if rawData is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "rawData", + "type": "string", + "description": "Base64-encoded raw data of the file to render. Used if filePath is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format for rendering (e.g., 'png', 'jpeg', 'bmp').", + "required": true, + "defaultValue": "png" + }, + { + "name": "width", + "type": "number", + "description": "Width in pixels for the rendered output. Aspect ratio maintained if only width or height specified.", + "required": false, + "defaultValue": "" + }, + { + "name": "height", + "type": "number", + "description": "Height in pixels for the rendered output. Aspect ratio maintained if only width or height specified.", + "required": false, + "defaultValue": "" + }, + { + "name": "annotations", + "type": "array", + "description": "List of annotation objects to apply on rendering (e.g., watermark text, overlay images). Each annotation specifies type and parameters.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "preserveAspectRatio", + "type": "boolean", + "description": "Flag to preserve the original aspect ratio when resizing (true by default).", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the rendered file data as base64 string, the MIME type of the output format, and metadata like width and height." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert or preview media files programmatically, generate thumbnails, or create visual renderings from raw or stored file data for UI display or further transformation. Ideal for image, video keyframe extraction, PDF preview rendering, or overlaying annotations for media content.", + "limitations": "This tool does not perform video transcoding or complex PDF rendering beyond simple page previews. It also cannot edit the original file content beyond overlays or resizing.", + "examples": [ + "Render a PNG thumbnail from a JPEG image file path.", + "Render a base64 PDF preview page as JPEG with a watermark annotation.", + "Generate a scaled BMP output from raw base64 image data without distorting aspect ratio." + ] + }, + "tags": [ + "render", + "file", + "media", + "preview", + "thumbnail", + "image", + "video", + "pdf" + ], + "examples": [ + { + "inputJson": "{\"filePath\":\"/path/to/image.jpg\",\"outputFormat\":\"png\",\"width\":200}", + "description": "Render a 200px wide PNG thumbnail from a JPEG image file path." + }, + { + "inputJson": "{\"rawData\":\"iVBORw0KGgoAAAANSUhEUgAA...\",\"outputFormat\":\"jpeg\",\"annotations\":[{\"type\":\"watermark\",\"text\":\"Sample\"}],\"preserveAspectRatio\":true}", + "description": "Render a base64 image data to JPEG with a watermark annotation while preserving aspect ratio." + }, + { + "inputJson": "{\"filePath\":\"/path/to/document.pdf\",\"outputFormat\":\"png\",\"width\":300,\"height\":400}", + "description": "Render a 300x400 PNG preview image of a PDF file page." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "File", + "context": null + } + }, + { + "name": "file-operations.draftEmail", + "description": "Drafts a professional email based on provided parameters including recipient, subject, message body, and optional tone or style preferences. Processes input text and generates a structured email draft for review or sending.", + "category": "file-operations", + "parameters": [ + { + "name": "recipientEmail", + "type": "string", + "description": "Email address of the primary recipient of the email.", + "required": true, + "defaultValue": "" + }, + { + "name": "subject", + "type": "string", + "description": "Subject line of the email.", + "required": true, + "defaultValue": "" + }, + { + "name": "body", + "type": "string", + "description": "Main content/body text of the email to be drafted.", + "required": true, + "defaultValue": "" + }, + { + "name": "ccEmails", + "type": "array", + "description": "List of email addresses to be CC'd, if any.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "bccEmails", + "type": "array", + "description": "List of email addresses to be BCC'd, if any.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "tone", + "type": "string", + "description": "Desired tone or style of the email such as formal, friendly, or persuasive. Defaults to neutral tone.", + "required": false, + "defaultValue": "neutral" + }, + { + "name": "includeSignature", + "type": "boolean", + "description": "Flag to include a default signature at the end of the email.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the fully drafted email in structured format including recipient, subject, body (with tone applied), cc, bcc, and a signature block if included." + }, + "aiAgent": { + "useCase": "Use this tool when needing to quickly generate professional email drafts tailored by recipient, subject, and style preferences. Ideal for automating email writing in workflows requiring consistent tone and formatting without manual composition.", + "limitations": "Cannot send emails, verify email addresses, or access personal user signature preferences beyond defaults. Does not handle attachments or complex formatting beyond plain text and basic signature inclusion.", + "examples": [ + "Draft an email to confirm a meeting with a friendly tone.", + "Create a formal email to invite a client to a product demo with CC to the sales team.", + "Generate a quick apology email with a neutral tone including BCC to a manager." + ] + }, + "tags": [ + "email", + "drafting", + "communication", + "file-operations", + "automation", + "professional", + "business" + ], + "examples": [ + { + "inputJson": "{\"recipientEmail\":\"client@example.com\",\"subject\":\"Meeting Confirmation\",\"body\":\"I would like to confirm our meeting scheduled for next Tuesday.\",\"ccEmails\":[\"sales@example.com\"],\"tone\":\"friendly\",\"includeSignature\":true}", + "description": "Drafts a friendly meeting confirmation email to a client with sales team CC'd and includes default signature." + }, + { + "inputJson": "{\"recipientEmail\":\"hr@example.com\",\"subject\":\"Job Application Inquiry\",\"body\":\"I am following up on my job application submitted last week.\",\"tone\":\"formal\",\"includeSignature\":false}", + "description": "Creates a formal email inquiring about a job application without including a signature." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Email", + "context": null + } + }, + { + "name": "file-operations.formatReport", + "description": "Formats a given report content into a specified document format such as PDF, HTML, or Markdown. Accepts raw text or structured report data and applies formatting templates, headers, footers, and styling options to produce a well-structured, formatted document as output.", + "category": "file-operations", + "parameters": [ + { + "name": "reportContent", + "type": "string", + "description": "Raw or structured textual content of the report to format.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatType", + "type": "string", + "description": "Desired output format of the report (e.g., 'pdf', 'html', 'markdown').", + "required": true, + "defaultValue": "" + }, + { + "name": "includeHeader", + "type": "boolean", + "description": "Flag indicating whether to include a header section in the report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeFooter", + "type": "boolean", + "description": "Flag indicating whether to include a footer section in the report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "pageSize", + "type": "string", + "description": "Page size to apply if output is a paginated format like PDF (e.g., 'A4', 'Letter').", + "required": false, + "defaultValue": "A4" + }, + { + "name": "customStyles", + "type": "object", + "description": "Optional custom styling parameters including font, colors, and margins.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Object containing formattedReport as a base64-encoded string or text string depending on format, and metadata with information such as format type, page count, and generation time." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent receives raw or semi-structured report content that needs to be transformed into a polished, formatted document ready for distribution or archiving in formats like PDF, HTML, or Markdown.", + "limitations": "Cannot create highly interactive reports or complex visualizations beyond basic styling; does not support embedded multimedia. Formatting is limited to the predefined templates and style options provided.", + "examples": [ + "Format quarterly sales data into a PDF report with company header and footer.", + "Generate a Markdown-formatted report from a raw text analysis summary.", + "Create an HTML report page from structured report content with custom styling." + ] + }, + "tags": [ + "file-operations", + "formatting", + "report", + "document", + "pdf", + "html", + "markdown" + ], + "examples": [ + { + "inputJson": "{\"reportContent\":\"Quarterly Sales Report\\nQ1 Results exceed expectations.\",\"formatType\":\"pdf\",\"includeHeader\":true,\"includeFooter\":true,\"pageSize\":\"Letter\"}", + "description": "Format raw text quarterly sales report into a PDF document with header and footer using Letter page size." + }, + { + "inputJson": "{\"reportContent\":\"# Project Status\\n- Task 1 completed\\n- Task 2 in progress\",\"formatType\":\"markdown\",\"includeHeader\":false,\"includeFooter\":false}", + "description": "Generate a clean Markdown report from structured markdown text without header or footer." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Report", + "context": null + } + }, + { + "name": "file-operations.composeReport", + "description": "This tool accepts multiple content sections and templates as input, composes a structured report by assembling and formatting these sections, and outputs the report as a formatted document (e.g., PDF or DOCX). It supports customization of headers, footers, table of contents, and styling options.", + "category": "file-operations", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title of the report to be generated", + "required": true, + "defaultValue": "" + }, + { + "name": "author", + "type": "string", + "description": "The author or creator of the report", + "required": false, + "defaultValue": "" + }, + { + "name": "sections", + "type": "array", + "description": "An array of section objects, each containing a header and body content for the report", + "required": true, + "defaultValue": "" + }, + { + "name": "includeTableOfContents", + "type": "boolean", + "description": "Whether to include a table of contents in the report", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired output format of the report, e.g., PDF, DOCX, or HTML", + "required": true, + "defaultValue": "PDF" + }, + { + "name": "header", + "type": "string", + "description": "Custom header text or HTML to appear on each page", + "required": false, + "defaultValue": "" + }, + { + "name": "footer", + "type": "string", + "description": "Custom footer text or HTML to appear on each page", + "required": false, + "defaultValue": "" + }, + { + "name": "styles", + "type": "object", + "description": "A styles object defining font, color, size, and other formatting options", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated report as a base64-encoded string and metadata such as file name and MIME type" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create a professional, structured report by combining multiple textual content inputs and formatting them into a cohesive document ready for distribution or archival. Suitable for summarizing data insights, project updates, research outputs, and other multi-section documents.", + "limitations": "This tool does not perform content summarization or data analysis; it only composes and formats provided content. It cannot extract data from images or non-text inputs, nor can it generate interactive documents.", + "examples": [ + "Compose a quarterly financial report from provided text sections and export as PDF.", + "Create a research summary report including custom headers and footers in DOCX format.", + "Generate a product review report with table of contents and styled formatting in HTML." + ] + }, + "tags": [ + "file-operations", + "report-generation", + "document-composition", + "pdf", + "docx", + "html", + "formatting" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Q1 Sales Report\",\"author\":\"Jane Doe\",\"sections\":[{\"header\":\"Executive Summary\",\"body\":\"Sales increased by 15% compared to last quarter.\"},{\"header\":\"Regional Performance\",\"body\":\"The North region outperformed with a 20% growth.\"},{\"header\":\"Recommendations\",\"body\":\"Focus marketing efforts on the West region.\"}],\"includeTableOfContents\":true,\"outputFormat\":\"PDF\",\"header\":\"Confidential - Q1 Report\",\"footer\":\"Page \\u2013 1\",\"styles\":{\"font\":\"Arial\",\"fontSize\":12,\"color\":\"#000000\"}}", + "description": "Compose a quarterly sales report as a PDF with header, footer, and table of contents." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Report", + "context": null + } + }, + { + "name": "file-operations.draftDocument", + "description": "Creates a structured draft document based on provided content, format, and metadata. Accepts plain text or markdown content, applies formatting options and templates, and outputs a draft document file path or content preview suitable for further editing or exporting.", + "category": "file-operations", + "parameters": [ + { + "name": "content", + "type": "string", + "description": "The main textual content to include in the draft document, which can be in plain text or markdown format.", + "required": true, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "The desired output format of the draft document, such as 'docx', 'pdf', 'md', or 'txt'.", + "required": true, + "defaultValue": "docx" + }, + { + "name": "title", + "type": "string", + "description": "Optional title or heading of the document to embed or use in metadata.", + "required": false, + "defaultValue": "" + }, + { + "name": "author", + "type": "string", + "description": "Optional author name to include in the document metadata.", + "required": false, + "defaultValue": "" + }, + { + "name": "useTemplate", + "type": "boolean", + "description": "Whether to apply a predefined document template to style the draft document.", + "required": false, + "defaultValue": "false" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value pairs of additional metadata to attach to the document file.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "An object containing the status and either a path to the saved draft document or its content preview." + }, + "aiAgent": { + "useCase": "Use this tool when you need to generate a draft version of a document programmatically based on given textual content and desired formatting, for example when automating report creation, note-taking, or preparing editable drafts for collaboration.", + "limitations": "Cannot perform complex layout or graphic design adjustments; not suitable for final publishing-quality documents without manual adjustments. Does not support interactive elements or embedded media.", + "examples": [ + "Create a draft report document in DOCX format from markdown notes.", + "Generate a plain text draft of meeting minutes with specified title and author.", + "Draft a PDF summary document applying the standard company template." + ] + }, + "tags": [ + "file", + "document", + "draft", + "formatting", + "template", + "text", + "report" + ], + "examples": [ + { + "inputJson": "{\"content\":\"# Meeting Summary\\nDiscussed project timelines and deliverables.\",\"format\":\"docx\",\"title\":\"Project Meeting Summary\",\"author\":\"Jane Smith\",\"useTemplate\":true,\"metadata\":{\"department\":\"Engineering\"}}", + "description": "Draft a DOCX document with meeting summary content, title, author, and apply a template with metadata." + }, + { + "inputJson": "{\"content\":\"This is a plain text draft without any formatting.\",\"format\":\"txt\",\"useTemplate\":false}", + "description": "Create a simple plain text draft without title, author, or template." + }, + { + "inputJson": "{\"content\":\"## Notes\\n- Item 1\\n- Item 2\",\"format\":\"pdf\",\"useTemplate\":true}", + "description": "Generate a PDF formatted draft of notes applying a predefined template." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Document", + "context": null + } + }, + { + "name": "file-operations.buildServer", + "description": "This tool automates the setup and configuration of a server by accepting a configuration file or parameters specifying server type, OS, software stack, and networking settings. It provisions the server environment, installs necessary software, configures services, and outputs a deployment report including status and access details.", + "category": "file-operations", + "parameters": [ + { + "name": "serverType", + "type": "string", + "description": "Type of server to build, e.g., web, database, application.", + "required": true, + "defaultValue": "" + }, + { + "name": "operatingSystem", + "type": "string", + "description": "Operating system to install on the server, e.g., Ubuntu 22.04, CentOS 8.", + "required": true, + "defaultValue": "" + }, + { + "name": "softwareStack", + "type": "array", + "description": "List of software packages or stacks to install, e.g., ['nginx', 'mysql'].", + "required": true, + "defaultValue": "" + }, + { + "name": "networkConfig", + "type": "object", + "description": "Networking settings such as IP address, DNS, firewall rules.", + "required": false, + "defaultValue": "" + }, + { + "name": "configurationScript", + "type": "string", + "description": "Optional custom script for additional server configuration.", + "required": false, + "defaultValue": "" + }, + { + "name": "provisioningMethod", + "type": "string", + "description": "Method to provision the server, e.g., 'cloud', 'local-VM', 'container'.", + "required": true, + "defaultValue": "cloud" + }, + { + "name": "autoStartServices", + "type": "boolean", + "description": "Whether to start installed services automatically after setup.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing server deployment status, IP address, access credentials if applicable, and log information about the provisioning process." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically build and configure a new server environment based on specific parameters or configuration files, such as setting up web or database servers in cloud or local virtual environments. It helps automate infrastructure provisioning as part of deployment pipelines.", + "limitations": "This tool does not handle physical hardware provisioning or detailed security hardening tasks. It assumes access to APIs or environments where server provisioning commands can be executed. It also cannot manage complex orchestration or multiple server clustering by itself.", + "examples": [ + "Build a web server running Ubuntu 22.04 with nginx and PHP and configure firewall rules.", + "Provision a database server of type MySQL on CentOS with custom initialization script.", + "Set up an application server in a local VM with specified software stack and networking config." + ] + }, + "tags": [ + "server", + "provisioning", + "automation", + "infrastructure", + "configuration", + "deployment", + "cloud" + ], + "examples": [ + { + "inputJson": "{\"serverType\":\"web\",\"operatingSystem\":\"Ubuntu 22.04\",\"softwareStack\":[\"nginx\",\"php\"],\"networkConfig\":{\"ip\":\"192.168.1.100\",\"firewallRules\":[{\"port\":80,\"action\":\"allow\"}]},\"provisioningMethod\":\"cloud\",\"autoStartServices\":true}", + "description": "Build a cloud web server on Ubuntu 22.04 with nginx and PHP installed and open port 80 firewall." + }, + { + "inputJson": "{\"serverType\":\"database\",\"operatingSystem\":\"CentOS 8\",\"softwareStack\":[\"mysql\"],\"configurationScript\":\"#!/bin/bash\\necho 'Initializing database'\",\"provisioningMethod\":\"local-VM\",\"autoStartServices\":false}", + "description": "Provision a local VM database server with MySQL on CentOS 8 and run a custom initialization script." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Server", + "context": null + } + }, + { + "name": "file-operations.buildDatabase", + "description": "Builds a structured database file from multiple input data files by parsing and transforming data according to specified schema and format options. Accepts an array of file paths and schema definition to create a consolidated database file in formats like SQLite or JSON files. Outputs the path to the generated database file for use in other applications or analysis.", + "category": "file-operations", + "parameters": [ + { + "name": "inputFiles", + "type": "array", + "description": "List of file paths to input data files to be imported into the database. Supports CSV, JSON, and other structured text formats.", + "required": true, + "defaultValue": "" + }, + { + "name": "databaseType", + "type": "string", + "description": "Type of database to build, e.g., 'sqlite', 'json', or 'csv'. Determines output format of the database.", + "required": true, + "defaultValue": "sqlite" + }, + { + "name": "schemaDefinition", + "type": "object", + "description": "Definition of tables/collections and fields to create in the database, including types and constraints.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFilePath", + "type": "string", + "description": "File path where the constructed database file will be saved.", + "required": true, + "defaultValue": "" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "Whether to overwrite the output file if it already exists. Defaults to false to prevent accidental data loss.", + "required": false, + "defaultValue": "false" + }, + { + "name": "batchSize", + "type": "number", + "description": "Number of records to process in each batch to manage memory usage during database build.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "Object containing outputFilePath and status message indicating success or error details." + }, + "aiAgent": { + "useCase": "Use this tool when you need to consolidate multiple structured data files into a single database file for efficient querying and management, such as building a local SQLite DB from CSV exports or JSON logs. Useful for automating database creation from varied inputs and custom schemas.", + "limitations": "Cannot connect to or build remote databases; limited to local file-based database creation. Does not perform advanced data validation or cleaning beyond schema conformity.", + "examples": [ + "Build an SQLite database from multiple CSV files with specified schema.", + "Create a JSON file database from input JSON arrays consolidating all records.", + "Generate a CSV formatted database file from multiple input files with transformed schema fields." + ] + }, + "tags": [ + "file-operations", + "database", + "data-integration", + "ETL", + "batch-processing" + ], + "examples": [ + { + "inputJson": "{\"inputFiles\":[\"data/users.csv\",\"data/orders.csv\"],\"databaseType\":\"sqlite\",\"schemaDefinition\":{\"users\":{\"id\":\"integer\",\"name\":\"string\",\"email\":\"string\"},\"orders\":{\"orderId\":\"integer\",\"userId\":\"integer\",\"amount\":\"float\"}},\"outputFilePath\":\"output/mydb.sqlite\",\"overwriteExisting\":true,\"batchSize\":500}", + "description": "Build an SQLite database from user and order CSV files with defined tables and fields, overwriting existing output file." + }, + { + "inputJson": "{\"inputFiles\":[\"logs/log1.json\",\"logs/log2.json\"],\"databaseType\":\"json\",\"schemaDefinition\":{\"logs\":{\"timestamp\":\"string\",\"level\":\"string\",\"message\":\"string\"}},\"outputFilePath\":\"output/logsdb.json\",\"overwriteExisting\":false}", + "description": "Create a JSON database file from multiple JSON log files with specified schema, without overwriting if file exists." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Database", + "context": null + } + }, + { + "name": "file-operations.buildTest", + "description": "This tool generates executable test files (e.g., unit tests or integration tests) from given source code snippets or specifications. It accepts input source code or JSON-based test specifications, applies a selected test framework template, and outputs a ready-to-run test file in a target programming language and framework.", + "category": "file-operations", + "parameters": [ + { + "name": "sourceCode", + "type": "string", + "description": "The source code or function for which tests need to be generated. Required if testSpecification is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "testSpecification", + "type": "object", + "description": "Optional JSON object specifying test cases, inputs, expected outputs, and test metadata.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Target programming language for the test code (e.g., 'javascript', 'python').", + "required": true, + "defaultValue": "javascript" + }, + { + "name": "testFramework", + "type": "string", + "description": "Testing framework to use for the generated test file (e.g., 'jest', 'mocha', 'pytest').", + "required": true, + "defaultValue": "jest" + }, + { + "name": "testFileName", + "type": "string", + "description": "Name of the output test file including extension (e.g., 'myFunction.test.js').", + "required": true, + "defaultValue": "testFile.test.js" + }, + { + "name": "includeSetup", + "type": "boolean", + "description": "Whether to include setup and teardown scaffolding in the test file.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated test file content as a string and metadata such as language and framework used." + }, + "aiAgent": { + "useCase": "Use this tool when needing to automatically generate test code files from existing source code or structured test specifications to accelerate test creation, especially in continuous integration or code refactoring scenarios. It helps generate valid test scripts ready for integration into projects using specified languages and frameworks.", + "limitations": "The tool does not validate the correctness of the generated tests against the actual runtime behavior. It requires either source code or explicit test specifications as input. It cannot generate tests for undocumented or highly dynamic code without sufficient input details.", + "examples": [ + "Generate a Jest test file for a JavaScript function that sums two numbers.", + "Create a Pytest test file from JSON specification defining multiple input-output test cases for a Python function.", + "Produce a Mocha test file including setup/teardown from provided source code snippet in JavaScript." + ] + }, + "tags": [ + "file-operations", + "test-generation", + "code", + "automated-testing", + "unit-test", + "integration-test", + "code-quality" + ], + "examples": [ + { + "inputJson": "{\"sourceCode\":\"function add(a, b) { return a + b; }\",\"language\":\"javascript\",\"testFramework\":\"jest\",\"testFileName\":\"add.test.js\",\"includeSetup\":true}", + "description": "Generate a Jest test file for a simple add function in JavaScript." + }, + { + "inputJson": "{\"testSpecification\":{\"tests\":[{\"input\":[2,3],\"expected\":5}]},\"language\":\"python\",\"testFramework\":\"pytest\",\"testFileName\":\"test_add.py\",\"includeSetup\":false}", + "description": "Create a Pytest file from a JSON test specification defining a single test case for a Python function." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Test", + "context": null + } + }, + { + "name": "file-operations.generateSentence", + "description": "Generates a syntactically correct and semantically coherent English sentence based on optional input parameters such as desired length, style, and keywords to include. The tool processes these inputs to construct a human-readable sentence string output.", + "category": "file-operations", + "parameters": [ + { + "name": "length", + "type": "number", + "description": "Approximate desired number of words in the generated sentence. Optional; defaults to 10 if not provided.", + "required": false, + "defaultValue": "10" + }, + { + "name": "style", + "type": "string", + "description": "The writing style or tone of the sentence, such as formal, casual, or narrative. Optional; defaults to neutral.", + "required": false, + "defaultValue": "" + }, + { + "name": "keywords", + "type": "array", + "description": "List of words or phrases that the generated sentence should include when possible. Optional; default empty list.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeComplexGrammar", + "type": "boolean", + "description": "Flag indicating whether to include complex grammatical structures (e.g., subordinate clauses). Optional; defaults to false.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated English sentence as a single string property 'sentence'." + }, + "aiAgent": { + "useCase": "Use this tool when a realistic, natural English sentence needs to be generated based on specific stylistic or lexical constraints for file content generation, demonstration, or testing purposes. It assists in producing varied text snippets without external language model calls.", + "limitations": "Cannot guarantee semantic accuracy or domain-specific content quality; generated sentences are generic and may lack contextual awareness beyond input parameters.", + "examples": [ + "Generate a 15-word formal sentence including the keywords 'project' and 'deadline'.", + "Create a short casual sentence with no required keywords.", + "Produce a sentence using complex grammar and the keyword 'innovation'." + ] + }, + "tags": [ + "generation", + "file-operations", + "text", + "language", + "sentence", + "synthetic-text", + "content", + "NLP" + ], + "examples": [ + { + "inputJson": "{\"length\":15,\"style\":\"formal\",\"keywords\":[\"project\",\"deadline\"],\"includeComplexGrammar\":false}", + "description": "Generate a formal sentence approximately 15 words long that includes the words 'project' and 'deadline'." + }, + { + "inputJson": "{\"length\":8,\"style\":\"casual\",\"keywords\":[],\"includeComplexGrammar\":false}", + "description": "Generate a short casual sentence of about 8 words with no specific keywords." + }, + { + "inputJson": "{\"length\":20,\"style\":\"neutral\",\"keywords\":[\"innovation\"],\"includeComplexGrammar\":true}", + "description": "Generate a 20-word sentence with complex grammar that includes the word 'innovation'." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Sentence", + "context": null + } + }, + { + "name": "file-operations.generateEvent", + "description": "Generates a structured event log file from input parameters or JSON data, applying optional formatting and saving to a specified file path. It processes event attributes like type, timestamp, and metadata, and outputs a JSON or CSV file representing the event for analytics or auditing purposes.", + "category": "file-operations", + "parameters": [ + { + "name": "eventType", + "type": "string", + "description": "The type or name of the event to record, e.g., 'user_login'.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted date-time string representing when the event occurred. If omitted, current time is used.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "An object containing key-value pairs with additional event details or context.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output event file, either 'json' or 'csv'.", + "required": false, + "defaultValue": "json" + }, + { + "name": "outputFilePath", + "type": "string", + "description": "File system path where the generated event file will be saved. If omitted, returns event as string.", + "required": false, + "defaultValue": "" + }, + { + "name": "appendToFile", + "type": "boolean", + "description": "Whether to append the generated event to an existing file (if true) or overwrite/create new (if false).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing 'success' (boolean), 'message' (string), and optionally 'eventContent' (string) if no file output was specified." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically create analytics or audit event records from structured input in either JSON or CSV format for integration into event tracking systems, data pipelines, or log archives.", + "limitations": "This tool does not validate event business logic or guarantee schema conformity beyond basic formatting; it also does not transmit events to remote servers or integrate with event ingestion APIs.", + "examples": [ + "Generate a login event logged as JSON file with metadata about user and device.", + "Create a CSV formatted purchase event and append it to a daily event log.", + "Return event log content as a string instead of saving to file, for further processing." + ] + }, + "tags": [ + "file", + "generate", + "event", + "analytics", + "logging", + "json", + "csv" + ], + "examples": [ + { + "inputJson": "{\"eventType\":\"user_login\",\"timestamp\":\"2024-06-01T12:34:56Z\",\"metadata\":{\"userId\":\"u123\",\"ip\":\"192.168.1.10\"},\"outputFormat\":\"json\",\"outputFilePath\":\"/logs/user_login_20240601.json\",\"appendToFile\":false}", + "description": "Generate a JSON event file recording a user login with metadata, overwrite any existing file." + }, + { + "inputJson": "{\"eventType\":\"purchase\",\"metadata\":{\"orderId\":\"order789\",\"amount\":99.99},\"outputFormat\":\"csv\",\"outputFilePath\":\"/logs/purchases.csv\",\"appendToFile\":true}", + "description": "Append a purchase event as a CSV line to an existing purchases log file." + }, + { + "inputJson": "{\"eventType\":\"page_view\",\"metadata\":{\"page\":\"home\",\"duration\":35}}", + "description": "Generate a JSON event string for a page view, using current timestamp and no file output." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Event", + "context": null + } + }, + { + "name": "file-operations.generateMetric", + "description": "Generates analytical metrics from file content by processing structured or unstructured data within given files. Accepts file paths or raw file data with options to specify metric type and filters, returning computed metric values such as counts, averages, or distributions in JSON format.", + "category": "file-operations", + "parameters": [ + { + "name": "filePath", + "type": "string", + "description": "Path to the input file to be processed for metric generation.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileContent", + "type": "string", + "description": "Raw content of the file to be analyzed if no file path is provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "metricType", + "type": "string", + "description": "Type of metric to generate, e.g., 'wordCount', 'lineCount', 'averageValue', 'distribution'.", + "required": true, + "defaultValue": "" + }, + { + "name": "filters", + "type": "object", + "description": "Optional filters or parameters for metric calculation (e.g., filter by keyword, numeric range).", + "required": false, + "defaultValue": "" + }, + { + "name": "fileFormat", + "type": "string", + "description": "Format of the file content, e.g., 'text', 'csv', 'json'; used for parsing logic.", + "required": false, + "defaultValue": "text" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated metric name and its calculated value or statistical summary." + }, + "aiAgent": { + "useCase": "Use this tool to compute useful summary statistics or analytical metrics from files containing data or text. It is especially helpful when needing quick aggregated insights from log files, CSVs, JSON records, or plain text. It supports both file paths and raw file content intake, enabling metric extraction such as word counts, averages, distributions, and filtered counts.", + "limitations": "Does not perform complex machine learning analytics or visualizations. Limited to metrics that can be derived from parsing file contents directly and simple filters. Cannot process files without text-based content or binary-only files meaningfully.", + "examples": [ + "Generate a word count metric from a text log file.", + "Calculate the average numeric value in a CSV file column with a filter applied.", + "Compute the distribution of values in a JSON array from raw file content." + ] + }, + "tags": [ + "file-operations", + "analytics", + "metrics", + "data-processing", + "file-analysis" + ], + "examples": [ + { + "inputJson": "{\"filePath\":\"/data/logs/server.log\",\"metricType\":\"lineCount\"}", + "description": "Count the total lines in a server log file." + }, + { + "inputJson": "{\"fileContent\":\"name,score\\nAlice,85\\nBob,90\",\"metricType\":\"averageValue\",\"filters\":{\"column\":\"score\"},\"fileFormat\":\"csv\"}", + "description": "Calculate the average score from CSV content provided directly." + }, + { + "inputJson": "{\"filePath\":\"/data/reports/data.json\",\"metricType\":\"distribution\",\"filters\":{\"field\":\"status\"},\"fileFormat\":\"json\"}", + "description": "Compute the distribution of 'status' values in a JSON file." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Metric", + "context": null + } + }, + { + "name": "file-operations.generateSummary", + "description": "This tool accepts the content of a text-based file or document and generates a concise summary capturing the key points. It processes plain text files or textual inputs such as reports, articles, or documents, and produces a brief, coherent summary as output.", + "category": "file-operations", + "parameters": [ + { + "name": "fileContent", + "type": "string", + "description": "The full textual content of the file or document to summarize.", + "required": true, + "defaultValue": "" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "The maximum length of the generated summary in number of characters.", + "required": false, + "defaultValue": "500" + }, + { + "name": "language", + "type": "string", + "description": "The language code of the input content to tailor summarization accordingly (e.g., en, es).", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeKeySentences", + "type": "boolean", + "description": "Whether to include the key sentences extracted from the text in the summary output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the summary text and optionally key sentences if requested." + }, + "aiAgent": { + "useCase": "Use this tool when needing to create concise summaries of lengthy text documents to quickly understand main points without reading the entire file. Useful for summarizing reports, articles, or any text file content within automated workflows or document processing systems.", + "limitations": "This tool cannot process non-text file formats (e.g., images, audio). The quality of summaries depends on the input text clarity and length; very short texts may produce inadequate summaries.", + "examples": [ + "Summarize a long project report to extract key findings.", + "Generate an executive summary for a textual document file.", + "Create a brief overview from a research paper text." + ] + }, + "tags": [ + "file", + "summary", + "text-processing", + "document", + "automation" + ], + "examples": [ + { + "inputJson": "{\"fileContent\":\"In 2023, the company achieved a 20% growth in revenue due to strategic market expansion and improved product offerings. Customer satisfaction ratings increased by 15% compared to the previous year. Challenges included supply chain disruptions and increased competition in key markets.\",\"maxSummaryLength\":200,\"language\":\"en\",\"includeKeySentences\":false}", + "description": "Generate a concise summary of a business report highlighting growth, customer satisfaction, and challenges." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Summary", + "context": null + } + }, + { + "name": "file-operations.createContainer", + "description": "Creates a container directory structure on the file system for organizing related files. Accepts a base path and container name, optionally including subdirectories and initial metadata files. Processes parameters to create the folder hierarchy and initializes it for further file management. Returns the full path of the created container and status information.", + "category": "file-operations", + "parameters": [ + { + "name": "basePath", + "type": "string", + "description": "Absolute path where the container directory will be created", + "required": true, + "defaultValue": "" + }, + { + "name": "containerName", + "type": "string", + "description": "Name of the container directory to be created", + "required": true, + "defaultValue": "" + }, + { + "name": "subdirectories", + "type": "array", + "description": "List of subdirectory names to create inside the container", + "required": false, + "defaultValue": "[]" + }, + { + "name": "initializeMetadataFile", + "type": "boolean", + "description": "Whether to create an initial metadata JSON file inside the container", + "required": false, + "defaultValue": "false" + }, + { + "name": "metadataContent", + "type": "object", + "description": "Object containing key-value pairs to write into the metadata file if initialized", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "Details of the created container including absolute path, list of created subdirectories, and success status" + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically create an organized folder container on the file system for storing and managing related files, optionally with predefined subfolders and metadata initialization. It's useful for setting up project directories, data buckets, or file containers for infrastructure management.", + "limitations": "This tool does not handle file uploads or real containerization technologies like Docker containers. It only manages directory structures on local or network file systems where permissions allow.", + "examples": [ + "Create a container named 'ProjectX' in '/data' with subfolders ['input','output'] and a metadata file with project info.", + "Create a simple container directory at '/tmp/session42' without subdirectories or metadata file." + ] + }, + "tags": [ + "file system", + "directory management", + "container folder", + "infrastructure", + "file organization" + ], + "examples": [ + { + "inputJson": "{\"basePath\":\"/data\",\"containerName\":\"ProjectX\",\"subdirectories\":[\"input\",\"output\"],\"initializeMetadataFile\":true,\"metadataContent\":{\"owner\":\"teamA\",\"created\":\"2024-06-01\"}}", + "description": "Create a container 'ProjectX' with subfolders and metadata file under '/data'." + }, + { + "inputJson": "{\"basePath\":\"/tmp\",\"containerName\":\"session42\",\"subdirectories\":[],\"initializeMetadataFile\":false}", + "description": "Create a simple container directory 'session42' under '/tmp' with no subfolders or metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Container", + "context": null + } + }, + { + "name": "file-operations.createEvent", + "description": "Creates a structured event JSON file for analytics purposes based on provided event metadata and attributes. Accepts event name, timestamp, user data, event properties, and file output path. Generates a JSON file representing the event at the specified location, suitable for ingestion into event processing systems.", + "category": "file-operations", + "parameters": [ + { + "name": "eventName", + "type": "string", + "description": "The name of the event to be recorded", + "required": true, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted timestamp of when the event occurred", + "required": true, + "defaultValue": "" + }, + { + "name": "userId", + "type": "string", + "description": "Unique identifier of the user associated with the event", + "required": false, + "defaultValue": "" + }, + { + "name": "eventProperties", + "type": "object", + "description": "Key-value pairs describing attributes or metadata related to the event", + "required": false, + "defaultValue": "{}" + }, + { + "name": "outputFilePath", + "type": "string", + "description": "Full path including filename where the event JSON will be saved", + "required": true, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Object with success status and file path where event was saved" + }, + "aiAgent": { + "useCase": "This tool should be used when there is a need to programmatically generate and save individual analytics event files in JSON format based on variable input data. It helps automate the creation of event data payloads for downstream ingestion or archival, ensuring consistent structure and timestamping.", + "limitations": "It does not validate semantic correctness of event names or properties beyond JSON structure, nor does it send or ingest events into analytics systems itself.", + "examples": [ + "Create a 'purchase' event JSON for user 1234 with order details, saved to /tmp/events/purchase1.json.", + "Generate a 'page_view' event with timestamp and no user ID, write to ./events/view.json.", + "Create a custom event with properties and store to a specific directory for batch upload later." + ] + }, + "tags": [ + "file-operations", + "event", + "analytics", + "create", + "json", + "output" + ], + "examples": [ + { + "inputJson": "{\"eventName\":\"user_signup\",\"timestamp\":\"2024-06-01T10:00:00Z\",\"userId\":\"user_5678\",\"eventProperties\":{\"plan\":\"pro\",\"referrer\":\"ad_campaign_12\"},\"outputFilePath\":\"./events/user_signup_20240601.json\"}", + "description": "Generate a user signup event with metadata and save to a file." + }, + { + "inputJson": "{\"eventName\":\"page_view\",\"timestamp\":\"2024-06-01T11:30:20Z\",\"userId\":\"\",\"eventProperties\":{\"page\":\"home\",\"duration\":35},\"outputFilePath\":\"./events/page_view_home.json\"}", + "description": "Create a page view event without user ID, including page and duration properties." + }, + { + "inputJson": "{\"eventName\":\"purchase\",\"timestamp\":\"2024-06-01T12:45:00Z\",\"userId\":\"user_1234\",\"eventProperties\":{\"product_id\":\"abc123\",\"price\":19.99,\"currency\":\"USD\"},\"outputFilePath\":\"./events/purchase_abc123.json\"}", + "description": "Create a purchase event with detailed pricing and product information." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Event", + "context": null + } + }, + { + "name": "file-operations.createMetric", + "description": "This tool accepts raw file data, such as logs, CSVs, or JSON records, and computes statistical or aggregated metrics based on user-defined criteria. It processes file content to produce summary metrics like counts, averages, sums, or custom calculations, outputting a JSON object containing the resulting analytics.", + "category": "file-operations", + "parameters": [ + { + "name": "inputFilePath", + "type": "string", + "description": "Path to the input data file to be analyzed (required).", + "required": true, + "defaultValue": "" + }, + { + "name": "fileType", + "type": "string", + "description": "Type of input file: 'csv', 'json', or 'log' (optional, defaults to 'csv').", + "required": false, + "defaultValue": "csv" + }, + { + "name": "metricDefinitions", + "type": "array", + "description": "Array of objects defining metrics to calculate, each with 'field', 'operation' (e.g., count, sum, avg), and 'alias' for output keys (required).", + "required": true, + "defaultValue": "" + }, + { + "name": "filterConditions", + "type": "object", + "description": "Optional filtering criteria to apply on the data before metrics are calculated (e.g., {\"status\":\"active\"}).", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFilePath", + "type": "string", + "description": "Optional path to save the resulting metrics JSON; if not specified, output is returned in-memory.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A JSON object containing computed metric results keyed by aliases specified in metricDefinitions." + }, + "aiAgent": { + "useCase": "Use when analytics metrics need to be extracted from raw file-based datasets, such as computing sales totals from CSV reports or error counts from log files. This tool helps automate metric creation from files without manual scripting.", + "limitations": "Does not handle extremely large files that exceed memory limits; designed for files that fit in memory. Does not perform advanced statistical analysis beyond basic aggregations. Not suitable for streaming data processing.", + "examples": [ + "Calculate the total and average sales amount from a CSV sales report.", + "Count the number of error occurrences in a log file filtered by error severity.", + "Generate metrics like average response time and total requests from JSON API logs." + ] + }, + "tags": [ + "file-operations", + "metrics", + "analytics", + "aggregation", + "data-processing", + "csv", + "json", + "log" + ], + "examples": [ + { + "inputJson": "{\"inputFilePath\":\"/data/sales.csv\",\"fileType\":\"csv\",\"metricDefinitions\":[{\"field\":\"amount\",\"operation\":\"sum\",\"alias\":\"totalSales\"},{\"field\":\"amount\",\"operation\":\"avg\",\"alias\":\"averageSales\"}],\"filterConditions\":{\"region\":\"North\"}}", + "description": "Calculate total and average sales from a CSV filtered to region 'North'." + }, + { + "inputJson": "{\"inputFilePath\":\"/logs/app.log\",\"fileType\":\"log\",\"metricDefinitions\":[{\"field\":\"errorLevel\",\"operation\":\"count\",\"alias\":\"errorCount\"}],\"filterConditions\":{\"errorLevel\":\"ERROR\"}}", + "description": "Count number of ERROR entries in an application log file." + }, + { + "inputJson": "{\"inputFilePath\":\"/data/api_responses.json\",\"fileType\":\"json\",\"metricDefinitions\":[{\"field\":\"responseTime\",\"operation\":\"avg\",\"alias\":\"avgResponseTime\"},{\"field\":\"statusCode\",\"operation\":\"count\",\"alias\":\"totalRequests\"}]}", + "description": "Compute average response time and total requests from JSON API response logs." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Metric", + "context": null + } + }, + { + "name": "file-operations.createService", + "description": "Creates a service configuration and accompanying directory structure within a specified base path. Accepts parameters such as service name, service type (e.g., REST, gRPC), base directory path, and optional template selection. Generates standardized service folder with configuration files and optional starter code, returning the path and a summary of created files.", + "category": "file-operations", + "parameters": [ + { + "name": "serviceName", + "type": "string", + "description": "The name identifier for the service to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "serviceType", + "type": "string", + "description": "The type of service to create; e.g., 'REST', 'gRPC', or 'GraphQL'.", + "required": true, + "defaultValue": "" + }, + { + "name": "basePath", + "type": "string", + "description": "Filesystem path where the service directory will be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "useTemplate", + "type": "string", + "description": "Optional template name for structuring the service; if empty, a default template is used.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeSampleCode", + "type": "boolean", + "description": "Whether to include starter sample code files in the created service directory.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Details of the created service including the full path and a list of created files with their types" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically scaffold a new service infrastructure component within a given directory, supporting multiple service types and templates. Useful in CI/CD pipelines, automated project generation, or when orchestrating codebase modularization.", + "limitations": "This tool does not implement the actual service logic or handle deployment; it only scaffolds configuration and directory structure according to templates.", + "examples": [ + "Create a new REST service called 'UserAPI' in '/services' with sample code included.", + "Generate a gRPC service named 'PaymentProcessor' with a custom template without sample code.", + "Set up a GraphQL service 'InventoryService' in a specified path using the default template." + ] + }, + "tags": [ + "file", + "service", + "creation", + "infrastructure", + "template", + "scaffolding", + "automation" + ], + "examples": [ + { + "inputJson": "{\"serviceName\":\"UserAPI\",\"serviceType\":\"REST\",\"basePath\":\"/var/projects/services\",\"useTemplate\":\"\",\"includeSampleCode\":true}", + "description": "Create a REST API service named UserAPI in the /var/projects/services directory, including sample starter code." + }, + { + "inputJson": "{\"serviceName\":\"PaymentProcessor\",\"serviceType\":\"gRPC\",\"basePath\":\"/home/dev/services\",\"useTemplate\":\"payment-template\",\"includeSampleCode\":false}", + "description": "Generate a gRPC service named PaymentProcessor under /home/dev/services using a custom template without sample code." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Service", + "context": null + } + }, + { + "name": "file-operations.createNotification", + "description": "Creates a notification file with specified content and metadata. Accepts inputs such as notification title, message body, recipient list, and optional priority level. Processes the inputs to generate a structured notification saved as a JSON or text file. Outputs the file path and confirmation of creation.", + "category": "file-operations", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title or subject of the notification message.", + "required": true, + "defaultValue": "" + }, + { + "name": "message", + "type": "string", + "description": "The main body content of the notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipients", + "type": "array", + "description": "List of recipient identifiers (e.g., emails or usernames) for the notification.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "priority", + "type": "string", + "description": "Optional priority level of the notification (e.g., low, normal, high).", + "required": false, + "defaultValue": "normal" + }, + { + "name": "outputFormat", + "type": "string", + "description": "File format for the output notification (json or txt).", + "required": false, + "defaultValue": "json" + }, + { + "name": "outputPath", + "type": "string", + "description": "Path where the notification file will be saved. Defaults to current working directory.", + "required": false, + "defaultValue": "./" + } + ], + "returns": { + "type": "object", + "description": "An object containing the output file path and a success confirmation message." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a persistent notification file for auditing, message dispatch, or logging purposes in file systems. It is suitable for creating notifications that can be consumed later by other processes or users, ensuring the notification content and metadata are saved in a structured format.", + "limitations": "This tool does not send or dispatch notifications through communication channels (email, SMS, push). It only creates notification files with content; actual delivery requires additional tools.", + "examples": [ + "Create a high priority notification with title 'Server Alert' sent to admin and support team, saved as JSON file.", + "Generate a simple notification message for users about scheduled maintenance in plain text format saved to a specified folder.", + "Create a normal priority notification with a message body and a list of email recipients, saving output in default path." + ] + }, + "tags": [ + "file", + "notification", + "create", + "message", + "output", + "json", + "text", + "logging" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Server Alert\",\"message\":\"CPU usage exceeded threshold.\",\"recipients\":[\"admin@example.com\",\"support@example.com\"],\"priority\":\"high\",\"outputFormat\":\"json\",\"outputPath\":\"/notifications\"}", + "description": "Create a high priority JSON notification file titled 'Server Alert' for admin and support." + }, + { + "inputJson": "{\"title\":\"Maintenance Notice\",\"message\":\"Scheduled maintenance at 10 PM.\",\"recipients\":[\"user1\",\"user2\"],\"outputFormat\":\"txt\"}", + "description": "Generate a plain text notification about maintenance for two users in default directory." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Notification", + "context": null + } + }, + { + "name": "file-operations.createOrder", + "description": "Creates a new order file by accepting detailed order information including customer data, list of items with quantities and prices, shipping details, and order metadata, then generates a structured JSON file representing the order ready for storage or further processing.", + "category": "file-operations", + "parameters": [ + { + "name": "orderId", + "type": "string", + "description": "Unique identifier for the order.", + "required": true, + "defaultValue": "" + }, + { + "name": "customerInfo", + "type": "object", + "description": "Object containing customer details like name, contact info, and address.", + "required": true, + "defaultValue": "" + }, + { + "name": "items", + "type": "array", + "description": "List of ordered items where each item includes product ID, name, quantity, and price per unit.", + "required": true, + "defaultValue": "" + }, + { + "name": "shippingDetails", + "type": "object", + "description": "Information about shipment method, shipping address, and expected delivery date.", + "required": true, + "defaultValue": "" + }, + { + "name": "orderDate", + "type": "string", + "description": "ISO 8601 formatted date string representing when the order was placed.", + "required": true, + "defaultValue": "" + }, + { + "name": "paymentStatus", + "type": "string", + "description": "Status of the payment for the order (e.g., pending, completed, failed).", + "required": false, + "defaultValue": "pending" + }, + { + "name": "notes", + "type": "string", + "description": "Optional notes or special instructions related to the order.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFilePath", + "type": "string", + "description": "File path where the order JSON file will be saved.", + "required": true, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing success status and the path to the created order file." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a structured digital record of a customer order and save it as a file for archival, integration, or further business processing. It is applicable for e-commerce platforms, inventory management, or order tracking systems requiring consistent order file creation.", + "limitations": "This tool does not handle order validation against inventory stock or payment processing; it only formats and writes the order data to a file. It also assumes the provided file path is writable and the agent has necessary permissions.", + "examples": [ + "Create an order file for a new purchase including customer and shipping information.", + "Generate a JSON file summarizing an order with multiple items and save it to disk.", + "Save order details with payment status and notes into a structured file for backend use." + ] + }, + "tags": [ + "file", + "order", + "create", + "business", + "json", + "data-management" + ], + "examples": [ + { + "inputJson": "{\"orderId\":\"ORD12345\",\"customerInfo\":{\"name\":\"Alice Johnson\",\"email\":\"alice@example.com\",\"phone\":\"123-456-7890\",\"address\":\"123 Maple St, Springfield\"},\"items\":[{\"productId\":\"P100\",\"name\":\"Widget\",\"quantity\":3,\"price\":19.99},{\"productId\":\"P200\",\"name\":\"Gadget\",\"quantity\":1,\"price\":99.95}],\"shippingDetails\":{\"method\":\"Standard\",\"address\":\"123 Maple St, Springfield\",\"deliveryDate\":\"2024-07-10\"},\"orderDate\":\"2024-06-25T10:30:00Z\",\"paymentStatus\":\"completed\",\"notes\":\"Leave package at front door.\",\"outputFilePath\":\"/orders/ORD12345.json\"}", + "description": "Creating a complete order JSON file with multiple items, shipping info, and notes." + }, + { + "inputJson": "{\"orderId\":\"ORD54321\",\"customerInfo\":{\"name\":\"Bob Smith\",\"email\":\"bob@example.net\",\"phone\":\"987-654-3210\",\"address\":\"456 Oak Ave, Shelbyville\"},\"items\":[{\"productId\":\"P300\",\"name\":\"Thingamajig\",\"quantity\":2,\"price\":49.50}],\"shippingDetails\":{\"method\":\"Express\",\"address\":\"456 Oak Ave, Shelbyville\",\"deliveryDate\":\"2024-07-05\"},\"orderDate\":\"2024-06-26T14:15:00Z\",\"outputFilePath\":\"/orders/ORD54321.json\"}", + "description": "Generating an order file for a single item with express shipping and default payment status." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Order", + "context": null + } + }, + { + "name": "file-operations.createKey", + "description": "Generates a cryptographic key file using specified algorithm and key size. Inputs include algorithm type, key length, and output file path. Produces a file containing the generated key in PEM or raw binary format depending on parameters.", + "category": "file-operations", + "parameters": [ + { + "name": "algorithm", + "type": "string", + "description": "The cryptographic algorithm to use for key generation (e.g., RSA, ECDSA, AES).", + "required": true, + "defaultValue": "" + }, + { + "name": "keySize", + "type": "number", + "description": "Size of the key in bits (e.g., 2048 for RSA). Must be valid for selected algorithm.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputPath", + "type": "string", + "description": "File system path where the generated key file will be saved.", + "required": true, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "Output file format: 'PEM' for base64-encoded text or 'RAW' for binary key.", + "required": false, + "defaultValue": "PEM" + }, + { + "name": "passphrase", + "type": "string", + "description": "Optional passphrase to encrypt the key file. Leave empty for unencrypted key.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the outputPath confirming where the key file was saved, and a success boolean indicating operation success." + }, + "aiAgent": { + "useCase": "Use this tool when a cryptographic key needs to be programmatically generated and saved to disk for use in secure communications, encryption, or authentication. It supports various algorithms and formats allowing flexible integration into security workflows.", + "limitations": "Does not support hardware security module (HSM) integration or advanced key lifecycle management. Passphrase encryption is basic and not suitable for high-security scenarios without additional protections.", + "examples": [ + "Generate a 2048-bit RSA key and save it in PEM format with no passphrase.", + "Create a 256-bit AES key saved in raw binary format.", + "Generate an ECDSA key with a passphrase in PEM format." + ] + }, + "tags": [ + "file-operations", + "security", + "cryptography", + "key-generation", + "encryption", + "file-creation" + ], + "examples": [ + { + "inputJson": "{\"algorithm\":\"RSA\",\"keySize\":2048,\"outputPath\":\"/keys/private_rsa.pem\",\"format\":\"PEM\",\"passphrase\":\"\"}", + "description": "Generate a 2048-bit RSA key in PEM format without passphrase." + }, + { + "inputJson": "{\"algorithm\":\"AES\",\"keySize\":256,\"outputPath\":\"/keys/aes_key.bin\",\"format\":\"RAW\",\"passphrase\":\"\"}", + "description": "Generate a 256-bit AES key saved as raw binary file." + }, + { + "inputJson": "{\"algorithm\":\"ECDSA\",\"keySize\":256,\"outputPath\":\"/keys/ecdsa_key.pem\",\"format\":\"PEM\",\"passphrase\":\"mySecretPass\"}", + "description": "Generate an ECDSA key with a passphrase in PEM format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Key", + "context": null + } + }, + { + "name": "file-operations.createAlert", + "description": "Creates a structured security alert file based on provided threat details and metadata. Accepts alert information such as title, severity, affected files, timestamps, and description as input, and generates a standardized JSON alert file for security monitoring and response system ingestion.", + "category": "file-operations", + "parameters": [ + { + "name": "alertTitle", + "type": "string", + "description": "The title or name of the security alert to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "severityLevel", + "type": "string", + "description": "The severity level of the alert, such as 'Low', 'Medium', 'High', or 'Critical'.", + "required": true, + "defaultValue": "Medium" + }, + { + "name": "affectedFiles", + "type": "array", + "description": "List of file paths or identifiers that are affected by the security issue.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "description", + "type": "string", + "description": "A detailed description of the security issue triggering the alert.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted timestamp indicating when the alert was generated.", + "required": false, + "defaultValue": "" + }, + { + "name": "additionalData", + "type": "object", + "description": "Optional additional metadata or context related to the alert, as key-value pairs.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "An object containing the JSON string of the alert file and the file name to be saved." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically generate structured security alert files for ingestion by monitoring systems or for archival. Ideal in automated security pipelines that detect and log threats or anomalies involving files. Use it to create consistent alert files that contain all relevant impact and context details.", + "limitations": "This tool does not perform threat detection or analysis itself; it only formats and generates alert files from given data. It cannot send or distribute alerts, nor does it validate the threat content beyond formatting.", + "examples": [ + "Create an alert for a malware detection with high severity affecting specified files.", + "Generate a low severity alert describing suspicious file changes with optional metadata.", + "Produce a critical alert with timestamp and detailed description for incident reporting." + ] + }, + "tags": [ + "file", + "security", + "alert", + "create", + "monitoring", + "incident" + ], + "examples": [ + { + "inputJson": "{\"alertTitle\":\"Malware Detected\",\"severityLevel\":\"High\",\"affectedFiles\":[\"/usr/bin/evil.exe\",\"/tmp/malicious.dll\"],\"description\":\"Detected a malware infection in system binaries.\",\"timestamp\":\"2024-06-01T12:30:00Z\",\"additionalData\":{\"detector\":\"AVScanner v3.2\",\"scanId\":\"1234567890\"}}", + "description": "Generate a high severity malware detection alert for specific infected files with additional detection metadata." + }, + { + "inputJson": "{\"alertTitle\":\"Suspicious File Modification\",\"severityLevel\":\"Low\",\"description\":\"File modification detected outside of normal change window.\",\"affectedFiles\":[\"/var/log/syslog\"],\"additionalData\":{\"user\":\"unknown\",\"process\":\"unknown\"}}", + "description": "Create a low severity alert for suspicious file modification with minimal metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Alert", + "context": null + } + }, + { + "name": "file-operations.createConfig", + "description": "Creates a configuration file in JSON or YAML format based on provided parameters. Accepts configuration settings as key-value pairs and outputs a text file string containing the properly formatted configuration. Supports optional formatting options such as indentation and file type selection.", + "category": "file-operations", + "parameters": [ + { + "name": "configData", + "type": "object", + "description": "A key-value object representing configuration settings to include in the config file.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileType", + "type": "string", + "description": "The output file format: 'json' or 'yaml'. Defaults to 'json'.", + "required": false, + "defaultValue": "json" + }, + { + "name": "indentation", + "type": "number", + "description": "Number of spaces to use for indentation in the config file. Defaults to 2.", + "required": false, + "defaultValue": "2" + }, + { + "name": "includeComments", + "type": "boolean", + "description": "Whether to include explanatory comments in the config file (only supported for YAML). Defaults to false.", + "required": false, + "defaultValue": "false" + }, + { + "name": "fileName", + "type": "string", + "description": "Optional desired file name for the config file. If empty, no file name is assigned.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated config file content as a string, the file type, and optional file name." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a structured config file for software, services, or tools based on dynamic or user-supplied configuration parameters. It is useful for automating config file creation in JSON or YAML format, supporting formatting preferences.", + "limitations": "Cannot generate configuration files in formats other than JSON or YAML. Does not validate configuration semantics or schema correctness beyond formatting.", + "examples": [ + "Create a JSON config file with settings for database connection.", + "Generate a YAML config file with indentation of 4 spaces including comments.", + "Produce a config file without specifying a file name, defaulting to JSON and 2-space indentation." + ] + }, + "tags": [ + "file-creation", + "configuration", + "json", + "yaml", + "automation", + "formatting" + ], + "examples": [ + { + "inputJson": "{\"configData\":{\"host\":\"localhost\",\"port\":8080,\"useSSL\":true},\"fileType\":\"json\",\"indentation\":4,\"includeComments\":false,\"fileName\":\"serverConfig.json\"}", + "description": "Create a JSON config file named 'serverConfig.json' with specified server settings and 4-space indentation." + }, + { + "inputJson": "{\"configData\":{\"database\":\"testdb\",\"user\":\"admin\",\"password\":\"secret\"},\"fileType\":\"yaml\",\"indentation\":2,\"includeComments\":true,\"fileName\":\"\"}", + "description": "Generate a YAML config file with database connection settings, 2-space indentation, including comments, without specifying file name." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Config", + "context": null + } + }, + { + "name": "video-processing.downloadCode", + "description": "Downloads video processing code snippets or scripts from specified online repositories or URLs. Accepts a URL or repository identifier and programming language preference, fetches the code relevant to video editing or analysis, and returns the code content as a string or saves it to a file if specified.", + "category": "video-processing", + "parameters": [ + { + "name": "sourceUrl", + "type": "string", + "description": "The URL of the repository or web page hosting the video processing code to download.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language of the desired code snippets (e.g., Python, JavaScript, C++).", + "required": false, + "defaultValue": "Python" + }, + { + "name": "saveToFile", + "type": "boolean", + "description": "If true, saves the downloaded code to a local file instead of just returning it as a string.", + "required": false, + "defaultValue": "false" + }, + { + "name": "filePath", + "type": "string", + "description": "Local file path where the downloaded code should be saved, if saveToFile is true.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the fetched code as a string and the file path if the code was saved locally. Example: { codeContent: string, savedPath: string (empty if not saved) }" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to retrieve ready-to-use or sample video processing code snippets or scripts from online sources to assist users in development or automation tasks. This is helpful for fetching up-to-date scripts, examples, or libraries for video editing and analysis purposes.", + "limitations": "Cannot verify the security or correctness of downloaded code; cannot execute or test the code; depends on the accessibility of the URL and repository structure; may not handle complex repository authentication or rate limiting.", + "examples": [ + "Download Python video stabilizer code from a GitHub gist URL.", + "Fetch JavaScript code for video frame extraction from a public repo URL and save it locally.", + "Get C++ OpenCV video filtering sample code from an online resource as a string." + ] + }, + "tags": [ + "video-processing", + "code-download", + "automation", + "scripting", + "video-editing" + ], + "examples": [ + { + "inputJson": "{\"sourceUrl\":\"https://gist.github.com/user123/video_stabilizer.py\",\"language\":\"Python\",\"saveToFile\":false,\"filePath\":\"\"}", + "description": "Download Python video stabilizer script as string from a GitHub Gist URL." + }, + { + "inputJson": "{\"sourceUrl\":\"https://github.com/example/video-tools/blob/main/frame_extraction.js\",\"language\":\"JavaScript\",\"saveToFile\":true,\"filePath\":\"./downloads/frame_extraction.js\"}", + "description": "Download JavaScript frame extraction code and save to local file." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Code", + "context": null + } + }, + { + "name": "video-processing.analyzeAccount", + "description": "Analyzes video account data by processing video metadata, engagement metrics, and content classification to provide a comprehensive report of account activity and performance. Accepts video account identifiers and configuration parameters, performs data aggregation and video content analysis, and outputs performance insights and content categorization summaries.", + "category": "video-processing", + "parameters": [ + { + "name": "accountId", + "type": "string", + "description": "Unique identifier for the video account to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "dateRange", + "type": "object", + "description": "Time period for analysis with startDate and endDate in ISO format (YYYY-MM-DD).", + "required": false, + "defaultValue": "{\"startDate\":\"\",\"endDate\":\"\"}" + }, + { + "name": "includeVideoContentAnalysis", + "type": "boolean", + "description": "Whether to perform automated analysis of video content (e.g., scene detection, content classification).", + "required": false, + "defaultValue": "true" + }, + { + "name": "engagementMetrics", + "type": "array", + "description": "List of engagement metrics to include in the analysis, e.g., ['views','likes','comments','shares'].", + "required": false, + "defaultValue": "[\"views\",\"likes\",\"comments\"]" + }, + { + "name": "maxVideos", + "type": "number", + "description": "Maximum number of recent videos to include in the analysis.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "An analysis report containing summarized engagement statistics, trending content classifications, video performance metrics, and account activity insights." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a consolidated analysis report about a video content creator's account. This includes extracting insights from engagement data, classifying video content for thematic trends, and summarizing video performance over a given time range.", + "limitations": "The tool requires access to the video platform's data or API and does not perform deep content understanding beyond metadata and general content classification. It cannot generate real-time analytics and depends on the availability and quality of input data.", + "examples": [ + "Analyze engagement and content trends for a specific video creator's account during the last quarter.", + "Generate a performance summary report of the top 50 videos uploaded in the past month.", + "Provide content classification statistics and engagement breakdowns for an influencer’s account." + ] + }, + "tags": [ + "video-processing", + "analysis", + "account", + "engagement", + "content-classification", + "report", + "performance" + ], + "examples": [ + { + "inputJson": "{\"accountId\":\"creator123\",\"dateRange\":{\"startDate\":\"2023-01-01\",\"endDate\":\"2023-03-31\"},\"includeVideoContentAnalysis\":true,\"engagementMetrics\":[\"views\",\"likes\",\"comments\"],\"maxVideos\":50}", + "description": "Analyze the last quarter's performance and content classifications for account 'creator123' including views, likes, and comments across the 50 most recent videos." + }, + { + "inputJson": "{\"accountId\":\"vid_channel_789\",\"includeVideoContentAnalysis\":false,\"maxVideos\":20}", + "description": "Generate engagement report without content analysis for the 20 most recent videos from 'vid_channel_789'." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Account", + "context": null + } + }, + { + "name": "video-processing.analyzeJSON", + "description": "This tool accepts a JSON input representing metadata or extracted features from a video file, such as frame data, timestamps, detected objects, or scene changes. It processes this structured data to analyze video content patterns like scene durations, object appearance frequencies, motion statistics, and outputs a summarized JSON report highlighting key analytical insights, enabling automated video understanding and reporting.", + "category": "video-processing", + "parameters": [ + { + "name": "inputJSON", + "type": "string", + "description": "A JSON-formatted string containing video metadata or extracted video feature data to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "analysisType", + "type": "string", + "description": "Specifies the type of analysis to perform on the JSON data, e.g., 'sceneAnalysis', 'objectFrequency', or 'motionStatistics'.", + "required": false, + "defaultValue": "sceneAnalysis" + }, + { + "name": "includeTimestamps", + "type": "boolean", + "description": "Whether to include timestamp details in the analysis output for more granular insights.", + "required": false, + "defaultValue": "false" + }, + { + "name": "minObjectConfidence", + "type": "number", + "description": "Minimum confidence threshold (0-1) for detected objects to be considered in the analysis.", + "required": false, + "defaultValue": "0.5" + }, + { + "name": "maxReportItems", + "type": "number", + "description": "Maximum number of top results (e.g. objects or scenes) to include in the output report.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "A JSON object summarizing the analyzed video data, including metrics such as scene durations, object counts and frequencies, motion intensity averages, timestamps (if requested), and other relevant statistical insights derived from the input JSON." + }, + "aiAgent": { + "useCase": "Use this tool when you have video metadata or feature data available in JSON format and require an automated analysis to extract meaningful insights such as scene compositions, object appearances over time, or motion trends without processing raw video frames. It is ideal for building intelligent video indexing, summarization, or quality analysis pipelines where raw video is represented as structured JSON data.", + "limitations": "This tool cannot process raw video files or unstructured video content. It relies on well-formed JSON input with appropriate video metadata or extracted feature data. It does not perform video decoding or feature extraction itself, only analysis of provided JSON representations.", + "examples": [ + "Analyze JSON metadata from a video to report average scene lengths and number of scenes.", + "Calculate frequency of detected objects above a confidence threshold within a JSON object describing video detections.", + "Generate a motion intensity summary from JSON motion vector data with timestamps included." + ] + }, + "tags": [ + "video-processing", + "analysis", + "json", + "video-metadata", + "scene-analysis", + "object-detection", + "motion-analysis" + ], + "examples": [ + { + "inputJson": "{\"inputJSON\":\"{\\\"scenes\\\":[{\\\"start\\\":0,\\\"end\\\":10},{\\\"start\\\":10,\\\"end\\\":25},{\\\"start\\\":25,\\\"end\\\":40}]}\" ,\"analysisType\":\"sceneAnalysis\",\"includeTimestamps\":true}", + "description": "Analyze simple scene metadata JSON to report total number of scenes and their durations including timestamps." + }, + { + "inputJson": "{\"inputJSON\":\"{\\\"objects\\\":[{\\\"label\\\":\\\"person\\\",\\\"confidence\\\":0.8,\\\"timestamp\\\":5},{\\\"label\\\":\\\"car\\\",\\\"confidence\\\":0.6,\\\"timestamp\\\":15},{\\\"label\\\":\\\"person\\\",\\\"confidence\\\":0.9,\\\"timestamp\\\":20}]}\" ,\"analysisType\":\"objectFrequency\",\"minObjectConfidence\":0.7}", + "description": "Analyze detected objects in the JSON and return frequency counts of objects with confidence above 0.7." + }, + { + "inputJson": "{\"inputJSON\":\"{\\\"motion\\\":[{\\\"intensity\\\":0.3,\\\"timestamp\\\":2},{\\\"intensity\\\":0.7,\\\"timestamp\\\":8},{\\\"intensity\\\":0.5,\\\"timestamp\\\":16}]}\" ,\"analysisType\":\"motionStatistics\",\"includeTimestamps\":false}", + "description": "Generate motion intensity statistics from JSON motion vector data without timestamps." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "JSON", + "context": null + } + }, + { + "name": "video-processing.analyzeText", + "description": "This tool accepts a video file or a video URL as input and extracts any visible textual content within the video frames. It performs optical character recognition (OCR) on video frames sampled at customizable intervals, identifies text language, and provides a structured output of detected text segments along with their timestamps and bounding boxes, enabling analysis of on-screen text throughout the video.", + "category": "video-processing", + "parameters": [ + { + "name": "videoSource", + "type": "string", + "description": "URL or file path of the video to analyze for text content.", + "required": true, + "defaultValue": "" + }, + { + "name": "samplingInterval", + "type": "number", + "description": "Time interval in seconds between frames sampled for text extraction. Smaller intervals increase accuracy but require more processing.", + "required": false, + "defaultValue": "1" + }, + { + "name": "languages", + "type": "array", + "description": "List of language codes to limit OCR detection to specific languages, improving accuracy.", + "required": false, + "defaultValue": "[\"eng\"]" + }, + { + "name": "detectHandwritten", + "type": "boolean", + "description": "Whether to attempt detection of handwritten text within video frames.", + "required": false, + "defaultValue": "false" + }, + { + "name": "returnBoundingBoxes", + "type": "boolean", + "description": "Whether to include bounding box coordinates of detected text segments in the output.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing a list of detected text entries with their extracted text, timestamps, confidence scores, bounding boxes (if requested), and identified languages." + }, + "aiAgent": { + "useCase": "AI agents should use this tool when needing to extract and analyze any textual content visible within video files or streams, for example, to extract subtitles embedded as visuals, identify signs or labels in video footage, or index text for search. It is suitable for videos in multiple languages and can provide temporal positioning of text occurrences.", + "limitations": "The accuracy depends on video quality and text visibility. It may struggle with very low resolution, obstructions, or stylized fonts. Handwritten text detection is experimental and less accurate than printed text OCR. It does not perform speech-to-text transcription.", + "examples": [ + "Extract all the visible text every 2 seconds from this product demo video to create an index of on-screen labels.", + "Analyze the movie trailer video to detect and list all text and their display times, including subtitles burnt into the frames.", + "Detect handwritten notes appearing briefly in the educational video to assist with content summarization." + ] + }, + "tags": [ + "video", + "text recognition", + "OCR", + "analysis", + "multilingual", + "subtitles", + "handwriting" + ], + "examples": [ + { + "inputJson": "{\"videoSource\":\"https://example.com/videos/demo.mp4\",\"samplingInterval\":2,\"languages\":[\"eng\",\"spa\"],\"detectHandwritten\":false,\"returnBoundingBoxes\":true}", + "description": "Extract English and Spanish printed text every 2 seconds from a demo video, returning bounding box coordinates." + }, + { + "inputJson": "{\"videoSource\":\"file:///local/path/trailer.mov\",\"samplingInterval\":1,\"languages\":[\"eng\"],\"detectHandwritten\":false,\"returnBoundingBoxes\":false}", + "description": "Extract visible English text every 1 second from a local movie trailer file without bounding boxes." + }, + { + "inputJson": "{\"videoSource\":\"https://example.com/videos/lecture.mp4\",\"samplingInterval\":3,\"languages\":[\"eng\"],\"detectHandwritten\":true,\"returnBoundingBoxes\":true}", + "description": "Detect both printed and handwritten text visible every 3 seconds in an educational lecture video, including bounding boxes." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Text", + "context": null + } + }, + { + "name": "video-processing.downloadFile", + "description": "Downloads a video file from a specified URL or online source to a local storage path. It accepts the video URL and optional headers or authentication tokens, performs the network request to retrieve the video content, verifies download completion, and saves the media file locally, returning the file path and metadata.", + "category": "video-processing", + "parameters": [ + { + "name": "videoUrl", + "type": "string", + "description": "The direct URL or link to the video file to be downloaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "destinationPath", + "type": "string", + "description": "The local filesystem path where the downloaded video file should be saved, including filename and extension.", + "required": true, + "defaultValue": "" + }, + { + "name": "headers", + "type": "object", + "description": "Optional HTTP headers (e.g., authentication tokens) to include in the download request.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait for the download to complete before timing out.", + "required": false, + "defaultValue": "60" + }, + { + "name": "overwrite", + "type": "boolean", + "description": "Whether to overwrite the destination file if it already exists. Defaults to false.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the local path of the downloaded file, the file size in bytes, and a success indicator." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to retrieve and store video files from internet sources for offline access or further processing. It supports authenticated downloads and ensures the file is saved locally with appropriate handling for existing files and timeouts.", + "limitations": "Cannot handle video streams that require special download protocols beyond HTTP/HTTPS GET. Does not perform video format validation beyond saving the file. Requires valid URL and network access.", + "examples": [ + "Download a public video file from a direct URL to local storage.", + "Download a video file requiring custom authentication headers.", + "Save a video file to a specific folder, overwriting existing files if necessary." + ] + }, + "tags": [ + "download", + "video", + "network", + "file", + "media", + "fetch" + ], + "examples": [ + { + "inputJson": "{\"videoUrl\": \"https://example.com/videos/sample.mp4\", \"destinationPath\": \"/tmp/sample.mp4\"}", + "description": "Download a video from a public URL and save it to /tmp/sample.mp4 without additional headers." + }, + { + "inputJson": "{\"videoUrl\": \"https://secure.example.com/video/12345\", \"destinationPath\": \"/videos/secure_video.mp4\", \"headers\": {\"Authorization\": \"Bearer abcdef12345\"}, \"timeoutSeconds\": 120}", + "description": "Download a secured video using Bearer token authorization and set a timeout of 120 seconds." + }, + { + "inputJson": "{\"videoUrl\": \"https://example.com/media/myvideo.mov\", \"destinationPath\": \"/media/myvideo.mov\", \"overwrite\": true}", + "description": "Download and overwrite an existing video file at the given path." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "File", + "context": null + } + }, + { + "name": "video-processing.analyzeMessage", + "description": "Analyzes the spoken or displayed messages within a video file. It accepts video input, extracts and transcribes audio, detects on-screen text, and processes both to identify key messages, sentiment, and themes. Output includes transcript text and summarized message insights.", + "category": "video-processing", + "parameters": [ + { + "name": "videoUrl", + "type": "string", + "description": "URL or local path to the input video file to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code for audio transcription (e.g., 'en' for English).", + "required": false, + "defaultValue": "en" + }, + { + "name": "extractOnScreenText", + "type": "boolean", + "description": "Whether to extract and analyze on-screen text present within the video frames.", + "required": false, + "defaultValue": "true" + }, + { + "name": "sentimentAnalysis", + "type": "boolean", + "description": "Whether to perform sentiment analysis on the transcribed and extracted textual messages.", + "required": false, + "defaultValue": "true" + }, + { + "name": "summaryLength", + "type": "number", + "description": "Approximate number of sentences in the summary of the analyzed message.", + "required": false, + "defaultValue": "3" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the full transcript text, any extracted on-screen text, sentiment scores, and a concise summary of the message content." + }, + "aiAgent": { + "useCase": "Use this tool when you need to understand the communication content within a video, including spoken dialogue and important text on screen, such as video tutorials, presentations, or marketing content. It helps extract meaningful messages and insights without manual review.", + "limitations": "Cannot analyze messages if audio or on-screen text quality is too poor for accurate extraction or transcription. Supports only languages available for transcription. Does not interpret non-verbal cues like facial expressions or tone beyond text sentiment.", + "examples": [ + "Analyze the key messages in this product demo video.", + "Extract and summarize all spoken and displayed text from a marketing video.", + "Provide a sentiment summary of the main message in this tutorial video." + ] + }, + "tags": [ + "video", + "message analysis", + "transcription", + "text extraction", + "sentiment analysis", + "summarization" + ], + "examples": [ + { + "inputJson": "{\"videoUrl\":\"https://example.com/video1.mp4\",\"language\":\"en\",\"extractOnScreenText\":true,\"sentimentAnalysis\":true,\"summaryLength\":3}", + "description": "Analyze English video for spoken message and on-screen text with sentiment, summarizing main points." + }, + { + "inputJson": "{\"videoUrl\":\"/videos/company-presentation.mov\",\"language\":\"en\",\"extractOnScreenText\":false,\"sentimentAnalysis\":false,\"summaryLength\":2}", + "description": "Analyze spoken messages only from a company presentation video, without on-screen text or sentiment analysis." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Message", + "context": null + } + }, + { + "name": "video-processing.downloadDocument", + "description": "Downloads documents linked to or embedded in a video file or streaming source. Accepts a video URL or local file path, searches for embedded or linked documents (e.g., subtitles, metadata files, or attachments), then downloads and saves them to a specified output path. Outputs file paths of documents downloaded.", + "category": "video-processing", + "parameters": [ + { + "name": "videoSource", + "type": "string", + "description": "URL or local file path of the video to scan for linked documents.", + "required": true, + "defaultValue": "" + }, + { + "name": "documentTypes", + "type": "array", + "description": "List of document file extensions or types to search for and download (e.g., ['srt', 'vtt', 'pdf']).", + "required": false, + "defaultValue": "[\"srt\",\"vtt\"]" + }, + { + "name": "outputDirectory", + "type": "string", + "description": "Local directory path where downloaded documents should be saved.", + "required": true, + "defaultValue": "" + }, + { + "name": "maxDocuments", + "type": "number", + "description": "Maximum number of documents to download per video source. Use 0 for no limit.", + "required": false, + "defaultValue": "0" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "If true, overwrite files in output directory that have the same name.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing a list of file paths to the downloaded documents and a summary status." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to extract and retrieve documents embedded or linked within video files or streams, such as subtitles, metadata files, or accompanying documents, in order to perform further processing or analysis.", + "limitations": "This tool cannot extract documents that are only referenced verbally in the video content; it only downloads linked or embedded files. It may not support all possible document types depending on codec and container formats.", + "examples": [ + "Download subtitle files embedded in a video at URL 'https://example.com/video.mp4' and save them locally.", + "Extract linked PDF documents from a lecture recording stored at /videos/lecture.mp4.", + "Retrieve closed captions files of type 'vtt' from a streaming source and save to '/tmp/docs'." + ] + }, + "tags": [ + "video", + "document", + "download", + "subtitles", + "metadata", + "extraction" + ], + "examples": [ + { + "inputJson": "{\"videoSource\":\"https://example.com/videos/sample.mp4\",\"documentTypes\":[\"srt\",\"pdf\"],\"outputDirectory\":\"/tmp/documents\",\"maxDocuments\":5,\"overwriteExisting\":true}", + "description": "Download up to 5 subtitle files and PDFs embedded or linked from a remote video URL, saving to /tmp/documents, overwriting existing files." + }, + { + "inputJson": "{\"videoSource\":\"/home/user/videos/lecture.mkv\",\"documentTypes\":[\"vtt\"],\"outputDirectory\":\"/home/user/docs\",\"maxDocuments\":0,\"overwriteExisting\":false}", + "description": "Extract all 'vtt' subtitle documents linked or embedded in a local MKV video file, saving to /home/user/docs without overwriting existing files." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Document", + "context": null + } + }, + { + "name": "video-processing.formatCode", + "description": "Formats programming code snippets related to video processing tasks. Accepts code string input, processes it to properly indent, apply syntax highlighting, and optionally convert to a specified language or style, then outputs the formatted code as a string suitable for display or embedding in video projects.", + "category": "video-processing", + "parameters": [ + { + "name": "code", + "type": "string", + "description": "The raw code snippet to be formatted, supporting languages commonly used in video processing (e.g., Python, JavaScript, C++).", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The programming language of the input code to determine appropriate syntax rules. Defaults to auto-detection if empty.", + "required": false, + "defaultValue": "" + }, + { + "name": "style", + "type": "string", + "description": "Formatting style or theme to apply (e.g., 'default', 'dark', 'monokai'). Determines colors and styling of syntax highlighting.", + "required": false, + "defaultValue": "default" + }, + { + "name": "indentSize", + "type": "number", + "description": "Number of spaces to use for indentation in the formatted code. Defaults to 4.", + "required": false, + "defaultValue": "4" + }, + { + "name": "convertLanguage", + "type": "string", + "description": "Optionally convert the code snippet to another programming language if supported (e.g., convert Python to JavaScript). Empty means no conversion.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted (and optionally converted) code as a string, along with metadata like detected language and applied style." + }, + "aiAgent": { + "useCase": "Use this tool when you have raw or unformatted code snippets related to video processing tasks that need proper syntax formatting for readability or display. Ideal for formatting code before embedding in video tutorials, documentation, or demonstrations. Also useful when normalizing code style or converting between languages relevant for video processing.", + "limitations": "Cannot perfectly convert complex code logic between programming languages; supports standard highlighting and formatting but not execution or correctness verification. Limited language conversion support, primarily standard languages used in video processing.", + "examples": [ + "Format a raw Python code snippet for syntax highlighting with a dark theme.", + "Convert a JavaScript video processing snippet to Python and format the result.", + "Indent and style a C++ code sample with 2-space indentation for embedding." + ] + }, + "tags": [ + "video processing", + "code formatting", + "syntax highlighting", + "programming", + "code conversion" + ], + "examples": [ + { + "inputJson": "{\"code\":\"def process_frame(frame):\\n return frame * 2\",\"language\":\"python\",\"style\":\"monokai\",\"indentSize\":4,\"convertLanguage\":\"\"}", + "description": "Format a Python code snippet with monokai styling and 4-space indentation." + }, + { + "inputJson": "{\"code\":\"function processFrame(frame) { return frame * 2; }\",\"language\":\"javascript\",\"style\":\"default\",\"indentSize\":2,\"convertLanguage\":\"python\"}", + "description": "Convert a JavaScript function to Python code and format with default style and 2-space indentation." + }, + { + "inputJson": "{\"code\":\"#include \\nint main() { std::cout << \\\"Video Processing\\\"; return 0; }\",\"language\":\"cpp\",\"style\":\"dark\",\"indentSize\":2,\"convertLanguage\":\"\"}", + "description": "Format a C++ code snippet with dark style and 2-space indentation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Code", + "context": null + } + }, + { + "name": "video-processing.composeEmail", + "description": "This tool helps compose an email incorporating video content by accepting a video file URL or path, extracting a short video summary or thumbnail, and generating a personalized email message embedding the video preview and a custom message. It outputs a complete email object with subject, body (HTML), and video attachment or link.", + "category": "video-processing", + "parameters": [ + { + "name": "videoUrl", + "type": "string", + "description": "URL or path to the video file to include or reference in the email", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientEmail", + "type": "string", + "description": "Email address of the recipient to whom the email will be sent", + "required": true, + "defaultValue": "" + }, + { + "name": "senderEmail", + "type": "string", + "description": "Email address of the sender", + "required": true, + "defaultValue": "" + }, + { + "name": "subject", + "type": "string", + "description": "Subject line for the email", + "required": false, + "defaultValue": "\"Check out this video\"" + }, + { + "name": "customMessage", + "type": "string", + "description": "Personalized message to include in the email body alongside the video preview", + "required": false, + "defaultValue": "\"Hello, please see the video attached.\"" + }, + { + "name": "includeThumbnail", + "type": "boolean", + "description": "Whether to extract and embed a video thumbnail image in the email body", + "required": false, + "defaultValue": "true" + }, + { + "name": "thumbnailTimestamp", + "type": "number", + "description": "Timestamp (in seconds) in the video at which to capture the thumbnail", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "An email object with subject, htmlBody including embedded video preview or links, plainTextBody message, sender and recipient info, and video attachment or reference URL" + }, + "aiAgent": { + "useCase": "Use this tool when an agent needs to generate a professional or personalized email that centers on sharing video content, such as promotional videos, tutorials, or updates. It automates video preview extraction and constructs an email that effectively communicates video context and includes an engaging message.", + "limitations": "This tool does not send the email; it only composes and generates the content. It cannot deeply analyze video content for context beyond thumbnail extraction and basic summary. It requires a valid video URL accessible to the tool.", + "examples": [ + "Compose an email to a client with a product demo video link and a personalized greeting.", + "Generate an email sharing a training video with a company employee including a thumbnail preview.", + "Create an email for a marketing campaign embedding a short clip from a promotional video with custom subject and message." + ] + }, + "tags": [ + "video-processing", + "email", + "composition", + "communication", + "marketing", + "automation" + ], + "examples": [ + { + "inputJson": "{\"videoUrl\":\"https://example.com/videos/demo.mp4\",\"recipientEmail\":\"client@example.com\",\"senderEmail\":\"sales@example.com\",\"subject\":\"Product Demo Video\",\"customMessage\":\"Hi there, please check out our latest product demo!\",\"includeThumbnail\":true,\"thumbnailTimestamp\":10}", + "description": "Compose an email to a client with a product demo video including a thumbnail preview captured at 10 seconds." + }, + { + "inputJson": "{\"videoUrl\":\"https://videos.company.com/training1.mp4\",\"recipientEmail\":\"employee@company.com\",\"senderEmail\":\"hr@company.com\",\"customMessage\":\"Please review this training video before next week.\"}", + "description": "Generate an email sharing a training video with an employee, using default subject and including thumbnail preview at default timestamp." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Email", + "context": null + } + }, + { + "name": "video-processing.uploadDocument", + "description": "This tool allows uploading document files (such as PDFs, DOCX, or TXT) to be embedded or referenced within a video project. It accepts a document file input, metadata describing the document, and an optional thumbnail image. The output confirms successful upload and provides a URL to access the document within the video editing platform.", + "category": "video-processing", + "parameters": [ + { + "name": "documentFile", + "type": "string", + "description": "Path or URL to the document file to be uploaded (PDF, DOCX, TXT formats supported)", + "required": true, + "defaultValue": "" + }, + { + "name": "documentTitle", + "type": "string", + "description": "Title or name of the document for display purposes", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Short description or summary of the document's contents", + "required": false, + "defaultValue": "" + }, + { + "name": "thumbnailImage", + "type": "string", + "description": "Optional path or URL to a thumbnail image representing the document", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Array of tags or keywords associated with the document for search and categorization", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing upload status, a unique document ID, and URL to access or embed the document" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to upload external document files into a video editing environment, enabling integration of supporting documents into the video project for reference or presentation. It helps manage associated metadata to facilitate searchability and embedding within video timelines or interfaces.", + "limitations": "This tool does not perform any document content analysis, conversion, or editing. It only uploads and registers the document within the video system.", + "examples": [ + "Upload a PDF design spec document to be linked in the video timeline.", + "Add a presentation slide deck document with a custom thumbnail to the project.", + "Attach a transcript text file associated with a recorded video segment." + ] + }, + "tags": [ + "video", + "upload", + "document", + "file-management", + "media-integration" + ], + "examples": [ + { + "inputJson": "{\"documentFile\":\"https://example.com/files/project_spec.pdf\",\"documentTitle\":\"Project Specifications\",\"description\":\"Detailed specs for Q3 project\",\"thumbnailImage\":\"https://example.com/images/spec_thumb.png\",\"tags\":[\"specs\",\"Q3\",\"design\"]}", + "description": "Uploading a PDF specification document with metadata and thumbnail." + }, + { + "inputJson": "{\"documentFile\":\"C:/Users/user/Documents/notes.docx\",\"documentTitle\":\"Meeting Notes\",\"description\":\"Notes from client meeting\",\"tags\":[\"meeting\",\"notes\"]}", + "description": "Uploading a local DOCX file without thumbnail but with tags." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Document", + "context": null + } + }, + { + "name": "video-processing.formatDocument", + "description": "This tool accepts a video file containing recorded documents or presentations, processes the video to extract and format visible textual content into structured document formats like PDF or DOCX. It supports basic editing like text alignment, font normalization, and page structuring, producing polished documents ready for sharing or archiving.", + "category": "video-processing", + "parameters": [ + { + "name": "videoFilePath", + "type": "string", + "description": "Path or URL of the input video file to process containing the document visuals.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output document format, e.g., 'pdf' or 'docx'.", + "required": true, + "defaultValue": "pdf" + }, + { + "name": "pagesPerDocument", + "type": "number", + "description": "Number of pages to split the output document into if multiple pages are detected; 0 means single document.", + "required": false, + "defaultValue": "0" + }, + { + "name": "textAlignment", + "type": "string", + "description": "Preferred text alignment in the output document (left, center, right, justify).", + "required": false, + "defaultValue": "left" + }, + { + "name": "fontStyle", + "type": "string", + "description": "Font style to apply to extracted text, e.g., 'Times New Roman', 'Arial'.", + "required": false, + "defaultValue": "Arial" + }, + { + "name": "normalizeFontSize", + "type": "boolean", + "description": "Whether to standardize all extracted text to a uniform font size.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeImages", + "type": "boolean", + "description": "Flag to decide if images extracted from video frames should be included in the document.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "Language code for OCR processing, like 'en' for English, to improve text extraction accuracy.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted document in base64 encoding and metadata such as page count and document size." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert videos that show documents, presentations, or whiteboard sessions into well-formatted text documents. It is useful for generating editable and shareable document files from recorded meetings, lectures, or handwritten notes captured in a video.", + "limitations": "Cannot perfectly handle heavily distorted or very low-resolution video frames. Complex layouts or non-text visual content may not be accurately converted. It processes visible text but does not transcribe speech or audio content.", + "examples": [ + "Extract and format a PDF document from the provided lecture recording video.", + "Convert a video showing handwritten notes into a DOCX document with uniform font and left alignment.", + "Generate a formatted multipage PDF from a presentation video, including images and text aligned justified." + ] + }, + "tags": [ + "video-processing", + "document-formatting", + "OCR", + "video-to-document", + "text-extraction", + "document-generation" + ], + "examples": [ + { + "inputJson": "{\"videoFilePath\":\"/videos/meeting_notes.mp4\",\"outputFormat\":\"pdf\",\"pagesPerDocument\":1,\"textAlignment\":\"left\",\"fontStyle\":\"Times New Roman\",\"normalizeFontSize\":true,\"includeImages\":true,\"language\":\"en\"}", + "description": "Convert a meeting notes video into a single-page, left-aligned, Times New Roman font PDF document including all images." + }, + { + "inputJson": "{\"videoFilePath\":\"http://example.com/handwritten_lecture.mp4\",\"outputFormat\":\"docx\",\"pagesPerDocument\":0,\"textAlignment\":\"justify\",\"fontStyle\":\"Arial\",\"normalizeFontSize\":true,\"includeImages\":false,\"language\":\"en\"}", + "description": "Process an online video of handwritten lecture notes into a justified Arial DOCX document without images, combining all content into one document." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Document", + "context": null + } + }, + { + "name": "video-processing.formatEmail", + "description": "Formats email content embedded within video metadata or subtitles by extracting, sanitizing, and structuring email addresses and associated text for clear display or export. Accepts video files or subtitle files as input, processes email format consistency, and outputs a cleaned, standardized email text file or structured data.", + "category": "video-processing", + "parameters": [ + { + "name": "inputVideoFile", + "type": "string", + "description": "Path or URL to the video file containing embedded email information (optional if subtitleFile is provided).", + "required": false, + "defaultValue": "" + }, + { + "name": "subtitleFile", + "type": "string", + "description": "Path or URL to a subtitle file (SRT/ASS) containing email text to be formatted (optional if inputVideoFile is provided).", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format for the extracted email content, e.g., 'text', 'json'.", + "required": true, + "defaultValue": "text" + }, + { + "name": "sanitizeEmails", + "type": "boolean", + "description": "Whether to sanitize and validate email addresses to standard format and remove invalid entries.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeContext", + "type": "boolean", + "description": "Include timestamps or surrounding text context for each email extracted (only if available).", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxEmails", + "type": "number", + "description": "Maximum number of email entries to extract and format (0 for unlimited).", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An object with a 'formattedOutput' property containing the cleaned, formatted emails in the requested output format." + }, + "aiAgent": { + "useCase": "Use this tool whenever an AI agent needs to extract and clean email information embedded within video content or subtitles for communication, contact extraction, or compliance purposes. It helps in collecting email addresses presented in videos or subtitle tracks and formatting them into a standardized output for downstream applications.", + "limitations": "Cannot extract emails from video content without embedded metadata or subtitle text. Not a tool for detecting emails from video frames via image recognition or speech. Limited to text-based metadata or subtitles only.", + "examples": [ + "Extract all email addresses from the subtitle file of a training video and output them in JSON format.", + "Format and sanitize email addresses embedded in video metadata and export as plain text.", + "Limit extraction to 5 email addresses from a given subtitle file and include timestamps for reference." + ] + }, + "tags": [ + "video-processing", + "email", + "formatting", + "extraction", + "subtitle-processing", + "metadata", + "communication" + ], + "examples": [ + { + "inputJson": "{\"subtitleFile\":\"path/to/video_subtitles.srt\",\"outputFormat\":\"json\",\"sanitizeEmails\":true,\"includeContext\":true,\"maxEmails\":10}", + "description": "Extract up to 10 sanitized emails from a subtitle file with timestamps and export as JSON." + }, + { + "inputJson": "{\"inputVideoFile\":\"https://example.com/video.mp4\",\"outputFormat\":\"text\",\"sanitizeEmails\":true,\"includeContext\":false}", + "description": "Extract and format email addresses embedded in video metadata from a video file as plain text." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Email", + "context": null + } + }, + { + "name": "video-processing.uploadCode", + "description": "Uploads custom video processing code to the platform allowing integration of user-defined algorithms into video workflows. Accepts source code files or code snippets in supported languages (e.g., Python, JavaScript), validates and stores them, returning a unique code ID for later execution on videos.", + "category": "video-processing", + "parameters": [ + { + "name": "codeContent", + "type": "string", + "description": "The source code text to be uploaded for video processing integration.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language of the code (e.g., 'python', 'javascript').", + "required": true, + "defaultValue": "" + }, + { + "name": "codeName", + "type": "string", + "description": "A human-readable name or title for the uploaded code snippet.", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A description explaining what the code does and its use case.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum allowed execution time in seconds for the code during processing.", + "required": false, + "defaultValue": "60" + } + ], + "returns": { + "type": "object", + "description": "An object containing a unique identifier for the uploaded code, the code name, language, status of upload, and any validation messages." + }, + "aiAgent": { + "useCase": "Use this tool when you need to upload custom video processing algorithms or filters as code to the platform. It enables dynamic extension of video workflows by applying user-defined logic, such as specialized transformations, analysis, or effects that are not natively available.", + "limitations": "This tool only uploads code; it does not execute it. Uploaded code must comply with supported languages and platform constraints. It doesn't validate full functional correctness or security beyond basic syntax validation.", + "examples": [ + "Upload a Python script that detects faces in videos.", + "Add a JavaScript filter for custom color grading.", + "Store a machine learning inference model’s preprocessing code for later use." + ] + }, + "tags": [ + "upload", + "code", + "video", + "processing", + "custom", + "script", + "integration" + ], + "examples": [ + { + "inputJson": "{\"codeContent\":\"def process(video):\\n # code to invert video colors\\n return inverted_video\",\"language\":\"python\",\"codeName\":\"InvertColors\",\"description\":\"Inverts the colors of the input video.\",\"timeoutSeconds\":30}", + "description": "Uploading a Python code snippet named 'InvertColors' which inverts video colors." + }, + { + "inputJson": "{\"codeContent\":\"function enhanceContrast(frame) {\\nreturn enhancedFrame;\\n}\",\"language\":\"javascript\",\"codeName\":\"EnhanceContrast\",\"description\":\"Enhances contrast of video frames.\",\"timeoutSeconds\":45}", + "description": "Uploading a JavaScript function for contrast enhancement in video frames." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Code", + "context": null + } + }, + { + "name": "video-processing.composeDocument", + "description": "Composes a finalized video presentation document by merging multiple video clips, images, text annotations, and metadata. The tool accepts JSON inputs describing video segments, overlay text, and layout preferences, performs compositing and sequencing, and outputs a video file along with a structured project document (JSON) summarizing the compilation details and timestamps.", + "category": "video-processing", + "parameters": [ + { + "name": "videoSegments", + "type": "array", + "description": "An array of video clip objects with source URLs, start and end times, and order in the sequence.", + "required": true, + "defaultValue": "" + }, + { + "name": "imageOverlays", + "type": "array", + "description": "An array of image overlay objects specifying image URLs, position coordinates, durations, and layer order on the video timeline.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "textAnnotations", + "type": "array", + "description": "Text objects with content, font style, position, and timing for overlay on video segments.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired video output format (e.g., 'mp4', 'mov', 'webm').", + "required": false, + "defaultValue": "mp4" + }, + { + "name": "resolution", + "type": "string", + "description": "Output video resolution (e.g., '1920x1080').", + "required": false, + "defaultValue": "1920x1080" + }, + { + "name": "frameRate", + "type": "number", + "description": "Frames per second for the output video.", + "required": false, + "defaultValue": "30" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to generate and include a metadata document summarizing the composition details.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the composed video file URL and a JSON document detailing the composition timeline, sources, overlays, and annotations." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to assemble multiple media inputs into a final coherent video document with descriptive metadata. Ideal for generating presentations, video reports, or tutorials combining video clips, images, and text overlays.", + "limitations": "Cannot perform advanced video effects like 3D rendering or real-time interactive elements. Does not support editing audio tracks beyond simple sequencing.", + "examples": [ + "Compose a video document from three clips with title overlay and export as mp4.", + "Merge images and text annotations on a base video clip to create a presentation video with metadata JSON.", + "Generate a 1080p video summary document with specified frame rate including timestamps and source references." + ] + }, + "tags": [ + "video", + "composition", + "document", + "editing", + "multimedia", + "overlay", + "sequencing", + "presentation" + ], + "examples": [ + { + "inputJson": "{\"videoSegments\":[{\"sourceUrl\":\"https://example.com/clip1.mp4\",\"startTime\":0,\"endTime\":10,\"order\":1},{\"sourceUrl\":\"https://example.com/clip2.mp4\",\"startTime\":5,\"endTime\":15,\"order\":2}],\"imageOverlays\":[{\"imageUrl\":\"https://example.com/logo.png\",\"position\":{\"x\":50,\"y\":50},\"startTime\":0,\"endTime\":15,\"layer\":1}],\"textAnnotations\":[{\"text\":\"Introduction\",\"font\":\"Arial\",\"position\":{\"x\":100,\"y\":200},\"startTime\":0,\"endTime\":5}],\"outputFormat\":\"mp4\",\"resolution\":\"1280x720\",\"frameRate\":25,\"includeMetadata\":true}", + "description": "Compose a short video combining two clips with a logo image overlay and introductory text, outputting a 1280x720 mp4 video at 25fps including metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Document", + "context": null + } + }, + { + "name": "video-processing.generateDataset", + "description": "Generates a labeled dataset from input video files by extracting frames at specified intervals, applying optional preprocessing, and associating labels or annotations. Accepts multiple video files along with labeling information and outputs a structured dataset suitable for machine learning or analysis tasks.", + "category": "video-processing", + "parameters": [ + { + "name": "videoFiles", + "type": "array", + "description": "Array of input video file paths or URLs to process", + "required": true, + "defaultValue": "" + }, + { + "name": "frameExtractionRate", + "type": "number", + "description": "Number of frames to extract per second from each video", + "required": true, + "defaultValue": "1" + }, + { + "name": "labels", + "type": "object", + "description": "Mapping of video file names to labels or category tags for annotation", + "required": false, + "defaultValue": "{}" + }, + { + "name": "annotationFormat", + "type": "string", + "description": "Format of annotations to include, e.g., 'boundingBoxes', 'segmentation', or 'none'", + "required": false, + "defaultValue": "none" + }, + { + "name": "preprocessingSteps", + "type": "array", + "description": "List of preprocessing steps to apply to extracted frames, e.g., ['resize:224x224','normalize']", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Dataset output format, e.g., 'COCO', 'PascalVOC', 'customJSON'", + "required": false, + "defaultValue": "COCO" + }, + { + "name": "outputLocation", + "type": "string", + "description": "Filesystem path or cloud storage location to save the generated dataset", + "required": true, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object detailing the generated dataset summary, including dataset path, total frames extracted, and any errors encountered" + }, + "aiAgent": { + "useCase": "Use this tool when needing to create annotated video frame datasets for training or evaluating computer vision models. Useful for extracting frames at controlled intervals, applying consistent preprocessing, and organizing labels and annotations according to common dataset formats.", + "limitations": "This tool does not perform complex annotation generation like automatic object detection or segmentation. It requires pre-defined labels or minimal annotations provided by the user. It also does not handle real-time video stream processing.", + "examples": [ + "> Generate a dataset from multiple videos extracting 2 frames per second labeled with car and pedestrian tags", + "Generate dataset frames resized to 224x224 pixels with normalization, output in COCO format stored at /datasets/cars_pedestrians", + "Create a dataset extracting frames at 1fps with no annotations for raw frame analysis" + ] + }, + "tags": [ + "video-processing", + "dataset-generation", + "frame-extraction", + "annotation", + "machine-learning", + "computer-vision" + ], + "examples": [ + { + "inputJson": "{\"videoFiles\":[\"/videos/traffic1.mp4\",\"/videos/traffic2.mp4\"],\"frameExtractionRate\":2,\"labels\":{\"traffic1.mp4\":\"car\",\"traffic2.mp4\":\"pedestrian\"},\"annotationFormat\":\"none\",\"preprocessingSteps\":[\"resize:224x224\",\"normalize\"],\"outputFormat\":\"COCO\",\"outputLocation\":\"/datasets/traffic\"}", + "description": "Generate a dataset extracting 2 frames per second from two traffic videos, applying resizing and normalization preprocessing, labeling them as car and pedestrian categories, and saving in COCO format." + }, + { + "inputJson": "{\"videoFiles\":[\"http://example.com/video/drones.mp4\"],\"frameExtractionRate\":1,\"labels\":{},\"annotationFormat\":\"none\",\"preprocessingSteps\":[],\"outputFormat\":\"customJSON\",\"outputLocation\":\"/datasets/drones\"}", + "description": "Create a raw frame dataset with 1fps extraction from an online drone footage video with no labels or preprocessing, outputting to a custom JSON format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Dataset", + "context": null + } + }, + { + "name": "video-processing.generateTest", + "description": "Generates a validation test video clip from a source video file. Accepts a video input path and optional test parameters to create a test segment with specific length, start time, and overlays for assessment. Outputs a test video file suitable for validating video processing workflows.", + "category": "video-processing", + "parameters": [ + { + "name": "sourceVideoPath", + "type": "string", + "description": "Filesystem path or URL to the input video file to generate the test from.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputTestPath", + "type": "string", + "description": "Filesystem path where the generated test video clip will be saved.", + "required": true, + "defaultValue": "" + }, + { + "name": "startTimeSeconds", + "type": "number", + "description": "Start time in seconds in the source video to begin the test clip extraction.", + "required": false, + "defaultValue": "0" + }, + { + "name": "durationSeconds", + "type": "number", + "description": "Duration in seconds of the test clip to generate.", + "required": false, + "defaultValue": "10" + }, + { + "name": "overlayText", + "type": "string", + "description": "Text to overlay on the test clip for identification or debugging purposes.", + "required": false, + "defaultValue": "" + }, + { + "name": "overlayPosition", + "type": "string", + "description": "Position of the overlay text on the video (e.g., 'top-left','bottom-right').", + "required": false, + "defaultValue": "top-left" + }, + { + "name": "includeAudio", + "type": "boolean", + "description": "Whether to include audio in the test clip output.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with the output file path and metadata about the generated test clip, including duration and resolution." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create short video clips as test samples from larger video files, for validating video processing pipelines, performing quality checks, or generating sample content with optional overlays for debugging and identification. It supports specifying clip length, start time, audio inclusion, and custom overlays to tailor test videos.", + "limitations": "Cannot generate test clips without a valid source video. Overlay text is limited to simple text strings without styling options. Does not perform format conversion beyond generating the test clip. Requires accessible video path and write permissions at output location.", + "examples": [ + "Generate a 15-second test clip starting at 30 seconds into the video with overlay text 'Test Segment 1'.", + "Create a 10-second silent test clip without audio from the beginning of the source video.", + "Produce a test clip with overlay at bottom-right corner for debugging." + ] + }, + "tags": [ + "video-processing", + "testing", + "validation", + "clip-generation", + "overlay", + "video-editing", + "quality-check" + ], + "examples": [ + { + "inputJson": "{\"sourceVideoPath\":\"/videos/sample.mp4\",\"outputTestPath\":\"/tests/sample_test.mp4\",\"startTimeSeconds\":30,\"durationSeconds\":15,\"overlayText\":\"Test Segment 1\",\"overlayPosition\":\"top-left\",\"includeAudio\":true}", + "description": "Generate a 15-second test clip starting 30 seconds into input video, with overlay text at top-left, including audio." + }, + { + "inputJson": "{\"sourceVideoPath\":\"/videos/event.mp4\",\"outputTestPath\":\"/tests/event_test_silent.mp4\",\"durationSeconds\":10,\"includeAudio\":false}", + "description": "Generate a 10-second silent test clip from start of the event video without overlay text." + }, + { + "inputJson": "{\"sourceVideoPath\":\"/videos/raw_footage.mp4\",\"outputTestPath\":\"/tests/debug_clip.mp4\",\"overlayText\":\"Debug Clip\",\"overlayPosition\":\"bottom-right\"}", + "description": "Generate a default 10-second test clip with overlay text in bottom-right corner for debugging." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Test", + "context": null + } + }, + { + "name": "video-processing.createServer", + "description": "Creates and configures a dedicated video processing server instance. Accepts configuration parameters such as server hardware specs, software environment, and networking options. Sets up the server with required video processing frameworks and outputs connection details and status.", + "category": "video-processing", + "parameters": [ + { + "name": "cpuCores", + "type": "number", + "description": "Number of CPU cores to allocate for the server instance.", + "required": true, + "defaultValue": "" + }, + { + "name": "memoryGB", + "type": "number", + "description": "Amount of RAM in gigabytes to allocate to the server.", + "required": true, + "defaultValue": "" + }, + { + "name": "storageGB", + "type": "number", + "description": "Disk storage size in gigabytes for video processing data and temporary files.", + "required": true, + "defaultValue": "" + }, + { + "name": "gpuEnabled", + "type": "boolean", + "description": "Whether to enable GPU acceleration for video processing tasks.", + "required": false, + "defaultValue": "false" + }, + { + "name": "operatingSystem", + "type": "string", + "description": "Operating system to install on the server (e.g., Ubuntu 22.04, Windows Server 2019).", + "required": true, + "defaultValue": "" + }, + { + "name": "installedSoftware", + "type": "array", + "description": "List of video processing software or frameworks to pre-install (e.g., FFmpeg, OpenCV, NVIDIA drivers).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "networkConfiguration", + "type": "object", + "description": "Network settings including IP address configuration, firewall rules, and ports to open.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "Details of the created server including server ID, IP address, status, and a summary of resources allocated." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically provision a new server for video processing tasks, such as encoding, transcoding, or analysis, ensuring the environment is pre-configured with necessary hardware and software to meet workload demands.", + "limitations": "Does not handle ongoing server management such as scaling, patching, or workload scheduling; does not include automatic deployment of video processing jobs.", + "examples": [ + "Create a video processing server with 8 CPU cores, 32GB RAM, GPU enabled, Ubuntu OS, and FFmpeg installed.", + "Set up a server with minimal resources (4 cores, 16GB RAM) for testing video transcoding pipelines.", + "Provision a high-storage server (500GB) with OpenCV and CUDA drivers for advanced video analytics." + ] + }, + "tags": [ + "video-processing", + "server-creation", + "infrastructure", + "video-encoding", + "GPU-acceleration" + ], + "examples": [ + { + "inputJson": "{\"cpuCores\":8,\"memoryGB\":32,\"storageGB\":200,\"gpuEnabled\":true,\"operatingSystem\":\"Ubuntu 22.04\",\"installedSoftware\":[\"FFmpeg\",\"NVIDIA drivers\"],\"networkConfiguration\":{\"ipType\":\"dynamic\",\"firewallRules\":[{\"port\":22,\"protocol\":\"tcp\",\"action\":\"allow\"},{\"port\":8080,\"protocol\":\"tcp\",\"action\":\"allow\"}]}}", + "description": "Create a robust video processing server with GPU acceleration and common software pre-installed." + }, + { + "inputJson": "{\"cpuCores\":4,\"memoryGB\":16,\"storageGB\":100,\"gpuEnabled\":false,\"operatingSystem\":\"Windows Server 2019\",\"installedSoftware\":[\"OpenCV\"],\"networkConfiguration\":{\"ipType\":\"static\",\"ipAddress\":\"192.168.1.50\",\"firewallRules\":[{\"port\":3389,\"protocol\":\"tcp\",\"action\":\"allow\"}]}}", + "description": "Provision a moderate-capacity Windows server with OpenCV pre-installed for video analysis tasks." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Server", + "context": null + } + }, + { + "name": "video-processing.createWord", + "description": "This tool generates a single word as a stylized text graphic overlay that can be added to video frames or clips. It accepts the word text along with font style, size, color, position, and optional animation effects, then produces a transparent PNG or video snippet with the word rendered for seamless insertion into video projects.", + "category": "video-processing", + "parameters": [ + { + "name": "wordText", + "type": "string", + "description": "The exact word to create as a text overlay graphic.", + "required": true, + "defaultValue": "" + }, + { + "name": "fontFamily", + "type": "string", + "description": "Font family name to apply to the word (e.g., Arial, Helvetica).", + "required": false, + "defaultValue": "Arial" + }, + { + "name": "fontSize", + "type": "number", + "description": "Font size in points or pixels for the word graphic.", + "required": false, + "defaultValue": "48" + }, + { + "name": "fontColor", + "type": "string", + "description": "Color of the word text in hex code or CSS color name.", + "required": false, + "defaultValue": "#FFFFFF" + }, + { + "name": "position", + "type": "object", + "description": "X and Y coordinates (as percentages 0-100) to position the word on the video frame.", + "required": false, + "defaultValue": "{\"x\":50,\"y\":50}" + }, + { + "name": "animationEffect", + "type": "string", + "description": "Optional animation effect applied to the word (e.g., fadeIn, slideUp).", + "required": false, + "defaultValue": "" + }, + { + "name": "duration", + "type": "number", + "description": "Duration in seconds for the word animation or display.", + "required": false, + "defaultValue": "3" + }, + { + "name": "backgroundTransparent", + "type": "boolean", + "description": "If true, outputs with transparent background for overlay purposes.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the URL or path to the generated word overlay asset (PNG image or video snippet), plus metadata like dimensions and format." + }, + "aiAgent": { + "useCase": "Use this tool when needing to create a customizable word as a graphical overlay for videos, such as titles, captions, or emphasis words, with control over style, animation, and positioning. It aids in generating precise word elements without manual video editing.", + "limitations": "Cannot create multi-word sentences or paragraphs; limited to a single word. Animation options are basic and predefined; does not support complex motion graphics or video integration directly.", + "examples": [ + "Create the word 'Welcome' with large white font at the center with a fadeIn animation.", + "Generate the word 'Sale' in red, bold font positioned bottom-right with no animation.", + "Produce the word 'Hello' in blue, 60pt font with slideUp effect and transparent background." + ] + }, + "tags": [ + "video", + "text-overlay", + "word", + "animation", + "graphics", + "video-editing", + "subtitle" + ], + "examples": [ + { + "inputJson": "{\"wordText\":\"Welcome\",\"fontFamily\":\"Verdana\",\"fontSize\":72,\"fontColor\":\"#FFFFFF\",\"position\":{\"x\":50,\"y\":50},\"animationEffect\":\"fadeIn\",\"duration\":4,\"backgroundTransparent\":true}", + "description": "Create 'Welcome' word in white Verdana font, large size centered with fadeIn animation." + }, + { + "inputJson": "{\"wordText\":\"Sale\",\"fontFamily\":\"Impact\",\"fontSize\":64,\"fontColor\":\"#FF0000\",\"position\":{\"x\":90,\"y\":90},\"animationEffect\":\"\",\"duration\":3,\"backgroundTransparent\":true}", + "description": "Generate 'Sale' in red Impact font positioned bottom-right corner with no animation." + }, + { + "inputJson": "{\"wordText\":\"Hello\",\"fontFamily\":\"Arial\",\"fontSize\":60,\"fontColor\":\"#0000FF\",\"position\":{\"x\":50,\"y\":70},\"animationEffect\":\"slideUp\",\"duration\":5,\"backgroundTransparent\":true}", + "description": "Produce 'Hello' in blue Arial font with slideUp effect positioned mid-lower center." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Word", + "context": null + } + }, + { + "name": "video-processing.createDatabase", + "description": "Creates and initializes a structured database to store metadata and analysis results extracted from video files. It accepts configuration parameters detailing database type and schema preferences, processes video metadata and frame analysis summaries, and outputs connection details and status of the created database for subsequent querying and video data management.", + "category": "video-processing", + "parameters": [ + { + "name": "databaseType", + "type": "string", + "description": "Type of database to create, e.g., 'sqlite', 'postgresql', or 'mongodb'.", + "required": true, + "defaultValue": "" + }, + { + "name": "connectionString", + "type": "string", + "description": "Connection string or file path for the database location and access.", + "required": true, + "defaultValue": "" + }, + { + "name": "schemaDefinition", + "type": "object", + "description": "JSON object defining the database schema including tables, fields, and data types for storing video metadata and analysis results.", + "required": true, + "defaultValue": "" + }, + { + "name": "initializeWithSampleData", + "type": "boolean", + "description": "Whether to populate the database initially with sample video metadata and analysis entries.", + "required": false, + "defaultValue": "false" + }, + { + "name": "enableIndexing", + "type": "boolean", + "description": "Flag to create indexes on key fields to optimize query performance.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Details of the database creation status, including success flag, connection info, and any error messages encountered." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to organize video metadata and analysis outputs systematically for efficient storage and retrieval in a dedicated database. Essential for workflows involving large video datasets requiring scalable, queryable infrastructure.", + "limitations": "This tool does not perform video analysis itself; it only creates the database structure to store results from separate analysis tools. It also does not manage database maintenance or real-time updates beyond initial creation.", + "examples": [ + "Create a PostgreSQL database with a predefined schema for storing video timestamps, labels, and face recognition results.", + "Initialize a local SQLite database file with indexes enabled for quick retrieval of video scene metadata.", + "Set up a MongoDB database with sample data to prototype an AI-powered video tagging system." + ] + }, + "tags": [ + "video-processing", + "database", + "metadata", + "video-analysis", + "storage", + "video-metadata", + "infrastructure" + ], + "examples": [ + { + "inputJson": "{\"databaseType\":\"sqlite\",\"connectionString\":\"./videos.db\",\"schemaDefinition\":{\"tables\":{\"videos\":{\"fields\":{\"id\":\"INTEGER PRIMARY KEY\",\"filename\":\"TEXT\",\"duration\":\"REAL\",\"format\":\"TEXT\"}},\"frames\":{\"fields\":{\"id\":\"INTEGER PRIMARY KEY\",\"videoId\":\"INTEGER\",\"timestamp\":\"REAL\",\"sceneLabel\":\"TEXT\",\"faceCount\":\"INTEGER\"}}}},\"initializeWithSampleData\":true,\"enableIndexing\":true}", + "description": "Create an SQLite database named videos.db with tables for videos and frame-level metadata, initializing with sample entries and indexes enabled." + }, + { + "inputJson": "{\"databaseType\":\"postgresql\",\"connectionString\":\"postgres://user:pass@localhost:5432/videodb\",\"schemaDefinition\":{\"tables\":{\"video_metadata\":{\"fields\":{\"video_id\":\"UUID PRIMARY KEY\",\"title\":\"VARCHAR(255)\",\"upload_date\":\"DATE\"}},\"analysis_results\":{\"fields\":{\"result_id\":\"UUID PRIMARY KEY\",\"video_id\":\"UUID\",\"label\":\"TEXT\",\"confidence\":\"FLOAT\"}}}},\"initializeWithSampleData\":false,\"enableIndexing\":true}", + "description": "Set up a PostgreSQL database remotely with a schema for video metadata and AI analysis outputs, without initial data population, with indexing." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Database", + "context": null + } + }, + { + "name": "video-processing.createDataset", + "description": "This tool accepts a collection of video files and associated metadata, along with user-defined labeling criteria and formatting options. It processes the videos by extracting frames, applying optional preprocessing filters, and annotating frames or segments according to labels provided or detected. The output is a structured dataset formatted for machine learning tasks, including images/videos, annotations, and metadata exports.", + "category": "video-processing", + "parameters": [ + { + "name": "videoFiles", + "type": "array", + "description": "List of video file paths or URLs to include in the dataset.", + "required": true, + "defaultValue": "" + }, + { + "name": "labelDefinitions", + "type": "object", + "description": "Definitions of labels/tags to apply for annotation, including label names and attributes.", + "required": true, + "defaultValue": "" + }, + { + "name": "frameExtractionRate", + "type": "number", + "description": "Number of frames per second to extract from each video for annotation and dataset inclusion.", + "required": false, + "defaultValue": "1" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output dataset format, e.g., 'COCO', 'PascalVOC', or 'TFRecord'.", + "required": false, + "defaultValue": "COCO" + }, + { + "name": "preprocessingOptions", + "type": "object", + "description": "Options for video preprocessing like resizing, cropping, or color adjustments before dataset creation.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeAudio", + "type": "boolean", + "description": "Whether to include extracted audio clips in the dataset if present in videos.", + "required": false, + "defaultValue": "false" + }, + { + "name": "annotationType", + "type": "string", + "description": "Type of annotation to create: 'frameLabel', 'boundingBox', 'segmentationMask', or 'actionLabel'.", + "required": false, + "defaultValue": "frameLabel" + }, + { + "name": "outputDestination", + "type": "string", + "description": "File path or cloud storage location to save the generated dataset files.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object with dataset metadata including paths to generated annotation files, extracted frames or clips, and summary statistics like number of videos processed and annotations created." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert raw video footage into a structured dataset suitable for training machine learning models, especially for computer vision tasks like object detection, classification, and segmentation. It helps automate frame extraction, annotation application, and formatting to common dataset standards.", + "limitations": "The tool does not perform automatic labeling unless labelDefinitions include auto-labeling rules or external AI models are integrated. It requires videos to be accessible and in supported formats. Complex annotations like 3D poses or multi-object tracking need additional processing outside this tool.", + "examples": [ + "Create a dataset by extracting 2 frames per second from surveillance videos with bounding box annotations labeled as 'person' or 'vehicle', output in COCO format.", + "Generate a dataset from sports videos including segmentation masks and save it to cloud storage for model training.", + "Produce a frame-labeled dataset from dashcam footage with audio clips included for multimodal analysis." + ] + }, + "tags": [ + "video-processing", + "dataset-creation", + "machine-learning", + "annotation", + "frame-extraction", + "preprocessing" + ], + "examples": [ + { + "inputJson": "{\"videoFiles\":[\"s3://videos/input1.mp4\",\"s3://videos/input2.mp4\"],\"labelDefinitions\":{\"person\":{\"color\":\"red\"},\"vehicle\":{\"color\":\"blue\"}},\"frameExtractionRate\":2,\"outputFormat\":\"COCO\",\"annotationType\":\"boundingBox\",\"outputDestination\":\"s3://datasets/output/\"}", + "description": "Extract bounding box annotations for persons and vehicles at 2 fps from two videos and save as COCO dataset in specified S3 path." + }, + { + "inputJson": "{\"videoFiles\":[\"/data/sports_match1.mp4\"],\"labelDefinitions\":{\"player\":{\"color\":\"green\"}},\"frameExtractionRate\":1,\"outputFormat\":\"PascalVOC\",\"annotationType\":\"segmentationMask\",\"includeAudio\":true,\"outputDestination\":\"/data/processed_dataset/\"}", + "description": "Create a PascalVOC dataset from a sports match video including segmentation masks for players and audio clips saved locally." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dataset", + "context": null + } + }, + { + "name": "video-processing.createMessage", + "description": "Creates a video message by overlaying customizable text onto a background video clip. Accepts a video file or URL, message text, and optional style parameters like font, size, color, and positioning. Outputs a new video file with the message embedded as an overlay, suitable for sharing or communication purposes.", + "category": "video-processing", + "parameters": [ + { + "name": "videoSource", + "type": "string", + "description": "Path or URL of the background video on which to overlay the message text.", + "required": true, + "defaultValue": "" + }, + { + "name": "messageText", + "type": "string", + "description": "Text content of the message to overlay onto the video.", + "required": true, + "defaultValue": "" + }, + { + "name": "fontName", + "type": "string", + "description": "Name of the font to use for the message text (e.g., Arial, Helvetica).", + "required": false, + "defaultValue": "Arial" + }, + { + "name": "fontSize", + "type": "number", + "description": "Size of the font in points for the message text overlay.", + "required": false, + "defaultValue": "24" + }, + { + "name": "fontColor", + "type": "string", + "description": "Color of the message text in hex code or common color name (e.g., #FFFFFF or white).", + "required": false, + "defaultValue": "#FFFFFF" + }, + { + "name": "positionX", + "type": "number", + "description": "Horizontal position in pixels from the left edge of the video frame for the overlay text.", + "required": false, + "defaultValue": "50" + }, + { + "name": "positionY", + "type": "number", + "description": "Vertical position in pixels from the top edge of the video frame for the overlay text.", + "required": false, + "defaultValue": "50" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output video format (e.g., mp4, mov).", + "required": false, + "defaultValue": "mp4" + }, + { + "name": "duration", + "type": "number", + "description": "Duration in seconds to display the message overlay during the video. If shorter than video length, overlay disappears afterwards.", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the path or URL to the newly created video message file and metadata including duration and format." + }, + "aiAgent": { + "useCase": "Use this tool when an agent needs to create a personalized or informative video message by embedding text onto a video clip for communication, marketing, or social sharing. Ideal for generating sharable short videos with custom text overlays.", + "limitations": "Cannot create animated or styled text beyond simple font, size, color, and position. Does not support multi-line text wrapping or advanced video editing effects.", + "examples": [ + "Create a video message from a given video URL with text \"Hello, welcome!\" in blue Arial font at top-left.", + "Overlay a countdown message \"3...2...1...\" on a local MP4 video file with large red font centered.", + "Generate a motivational quote on a background video with white font positioned near bottom-right for 8 seconds." + ] + }, + "tags": [ + "video editing", + "text overlay", + "message creation", + "communication", + "video processing", + "media generation" + ], + "examples": [ + { + "inputJson": "{\"videoSource\":\"https://example.com/videos/sample.mp4\",\"messageText\":\"Hello, welcome!\",\"fontName\":\"Arial\",\"fontSize\":30,\"fontColor\":\"blue\",\"positionX\":20,\"positionY\":20,\"outputFormat\":\"mp4\",\"duration\":7}", + "description": "Create an MP4 video message overlaying 'Hello, welcome!' in blue Arial font near the top-left corner for 7 seconds." + }, + { + "inputJson": "{\"videoSource\":\"/local/path/to/video.mov\",\"messageText\":\"3...2...1...\",\"fontName\":\"Helvetica\",\"fontSize\":50,\"fontColor\":\"#FF0000\",\"positionX\":400,\"positionY\":200,\"outputFormat\":\"mov\",\"duration\":5}", + "description": "Create a MOV video message with a red countdown text \"3...2...1...\" overlay centered around coordinates (400, 200) for 5 seconds." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Message", + "context": null + } + }, + { + "name": "video-processing.createAPI", + "description": "Generates a customizable RESTful API service interface for video processing tasks such as transcoding, filtering, or analysis. Accepts configuration parameters defining video processing features and outputs generated API endpoint definitions and example client requests for integration.", + "category": "video-processing", + "parameters": [ + { + "name": "apiName", + "type": "string", + "description": "The name to assign to the generated API service.", + "required": true, + "defaultValue": "" + }, + { + "name": "videoFormatsSupported", + "type": "array", + "description": "List of video file formats (e.g., mp4, avi) that the API will accept and process.", + "required": true, + "defaultValue": "[\"mp4\"]" + }, + { + "name": "processingFunctions", + "type": "array", + "description": "Array of video processing functions to expose via the API, such as 'transcode', 'extractFrames', 'applyFilter'.", + "required": true, + "defaultValue": "[\"transcode\"]" + }, + { + "name": "authenticationRequired", + "type": "boolean", + "description": "Whether the generated API requires authentication for access.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxUploadSizeMB", + "type": "number", + "description": "Maximum allowed upload size in megabytes for video files.", + "required": false, + "defaultValue": "500" + }, + { + "name": "enableLogging", + "type": "boolean", + "description": "If true, the API will log processing requests and errors.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Default output video format after processing (e.g., mp4, webm).", + "required": false, + "defaultValue": "mp4" + } + ], + "returns": { + "type": "object", + "description": "An object containing generated API endpoint specifications including routes, accepted parameters, response schemas, and sample client usage examples." + }, + "aiAgent": { + "useCase": "Use this tool to generate ready-to-deploy or prototype RESTful video processing APIs tailored to specific video formats and processing needs. Ideal for integrating video processing capabilities into applications without manual backend coding. Assists AI agents in automating video feature deployments.", + "limitations": "This tool generates API specifications and example code snippets but does not implement or deploy the actual backend services. Does not handle real-time streaming or low-level video codec operations.", + "examples": [ + "Create a video processing API named 'VideoProcessor' supporting mp4 and avi formats with transcoding and frame extraction functions.", + "Generate an API that supports filtering videos and requires authentication for secure usage.", + "Generate an API with a maximum upload size of 100MB that outputs all processed videos in webm format." + ] + }, + "tags": [ + "video", + "API", + "generation", + "processing", + "backend", + "transcoding", + "filtering" + ], + "examples": [ + { + "inputJson": "{\"apiName\":\"VideoProcessor\",\"videoFormatsSupported\":[\"mp4\",\"avi\"],\"processingFunctions\":[\"transcode\",\"extractFrames\"],\"authenticationRequired\":true,\"maxUploadSizeMB\":100,\"enableLogging\":true,\"outputFormat\":\"mp4\"}", + "description": "Create an API named VideoProcessor supporting mp4 and avi with transcoding and frame extraction, requiring authentication, 100MB max upload, and mp4 output." + }, + { + "inputJson": "{\"apiName\":\"FilterAPI\",\"videoFormatsSupported\":[\"mp4\"],\"processingFunctions\":[\"applyFilter\"],\"authenticationRequired\":false,\"maxUploadSizeMB\":500,\"enableLogging\":false,\"outputFormat\":\"mp4\"}", + "description": "Create a simple filter-only API for mp4 videos, no authentication, with logging disabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "API", + "context": null + } + }, + { + "name": "video-processing.createIssue", + "description": "This tool accepts a video file or video URL along with a detailed description of a problem or bug encountered during video processing or playback. It processes the input by packaging the issue details, metadata about the video file, and environment info into a standardized issue report. The output is a structured issue object ready to be posted to issue trackers or bug management systems.", + "category": "video-processing", + "parameters": [ + { + "name": "videoSource", + "type": "string", + "description": "A file path, URL, or identifier for the video where the issue was found.", + "required": true, + "defaultValue": "" + }, + { + "name": "issueTitle", + "type": "string", + "description": "A concise title summarizing the issue detected in the video processing workflow.", + "required": true, + "defaultValue": "" + }, + { + "name": "issueDescription", + "type": "string", + "description": "A detailed explanation describing the symptoms, steps to reproduce, and context of the issue.", + "required": true, + "defaultValue": "" + }, + { + "name": "environmentDetails", + "type": "object", + "description": "Optional metadata about the environment such as software version, platform, or hardware where the issue occurred.", + "required": false, + "defaultValue": "" + }, + { + "name": "severityLevel", + "type": "string", + "description": "The severity level of the issue (e.g., 'low', 'medium', 'high', 'critical').", + "required": false, + "defaultValue": "medium" + } + ], + "returns": { + "type": "object", + "description": "A structured issue report object containing all provided details along with extracted video metadata such as format, length, and resolution." + }, + "aiAgent": { + "useCase": "This tool is suitable for AI agents dealing with video content analysis platforms, quality assurance tasks, or automated bug reporting systems. When an AI detects anomalies or problems during video processing, it can invoke this tool to generate a well-structured issue report to facilitate tracking and resolution.", + "limitations": "The tool does not perform automatic diagnosis or fix the issues; it only creates a structured report for human or downstream agent review.", + "examples": [ + "Create an issue report for a video file that has audio desync problems.", + "Generate a bug report with severity 'high' for a video that fails to render subtitles properly.", + "Document playback freezing issue from a video URL including environment software versions." + ] + }, + "tags": [ + "video-processing", + "issue-reporting", + "bug-tracking", + "quality-assurance", + "video-analysis" + ], + "examples": [ + { + "inputJson": "{\"videoSource\":\"http://example.com/video.mp4\",\"issueTitle\":\"Audio desync detected\",\"issueDescription\":\"The audio track lags behind the video by approximately 2 seconds during playback.\",\"environmentDetails\":{\"playerVersion\":\"1.4.2\",\"os\":\"Windows 10\"},\"severityLevel\":\"high\"}", + "description": "Report an audio desynchronization issue for a remote video URL with environment info and high severity." + }, + { + "inputJson": "{\"videoSource\":\"/videos/sample.mov\",\"issueTitle\":\"Subtitle rendering failure\",\"issueDescription\":\"Subtitles do not appear despite being embedded in the video file.\",\"severityLevel\":\"medium\"}", + "description": "Create an issue report about subtitles not rendering for a local video file with default medium severity." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Issue", + "context": null + } + }, + { + "name": "video-processing.createTest", + "description": "Creates a unit test script for video processing functions based on provided video processing parameters and expected outcomes. Accepts a JSON specification of the video operation to test, generates test code in specified language, and outputs the test script as a string for integration in automated pipelines.", + "category": "video-processing", + "parameters": [ + { + "name": "videoOperation", + "type": "object", + "description": "JSON object describing the video processing operation to be tested (e.g., filter type, effect parameters).", + "required": true, + "defaultValue": "" + }, + { + "name": "expectedOutput", + "type": "object", + "description": "Object defining the expected properties or results of the video operation, for assert validation in the test.", + "required": true, + "defaultValue": "" + }, + { + "name": "testFramework", + "type": "string", + "description": "The target testing framework/language for the generated test code (e.g., 'jest', 'mocha', 'pytest').", + "required": true, + "defaultValue": "jest" + }, + { + "name": "includeSetup", + "type": "boolean", + "description": "Whether to include setup and teardown code for video resource initialization in the test script.", + "required": false, + "defaultValue": "true" + }, + { + "name": "testName", + "type": "string", + "description": "The name/description of the test case to be included in the test script.", + "required": false, + "defaultValue": "\"Video Processing Operation Test\"" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the generated test script code as a string and the language/framework used." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to automatically generate code tests for video processing functions to validate their behavior against expected outcomes. Particularly useful in continuous integration and code validation for video editing libraries or pipelines.", + "limitations": "Does not execute the test code or verify actual video output. Test logic is limited to what can be expressed in the provided expectedOutput specification. Not suitable for generating end-to-end video playback tests or visual validations.", + "examples": [ + "Generate a Jest test for a video filter operation expecting a certain frame transformation.", + "Create a Pytest unit test for a video transcoding function with specific parameters.", + "Produce a Mocha test script validating color correction effect outputs." + ] + }, + "tags": [ + "video-processing", + "testing", + "code-generation", + "automation", + "unit-test", + "video-editing" + ], + "examples": [ + { + "inputJson": "{\"videoOperation\":{\"type\":\"grayscaleFilter\",\"intensity\":0.8},\"expectedOutput\":{\"frameFormat\":\"grayscale\",\"intensity\":0.8},\"testFramework\":\"jest\",\"includeSetup\":true,\"testName\":\"Grayscale Filter Intensity Test\"}", + "description": "Generate a Jest test for applying a grayscale filter with intensity 0.8 and validate output frame format and intensity." + }, + { + "inputJson": "{\"videoOperation\":{\"type\":\"resize\",\"width\":1920,\"height\":1080},\"expectedOutput\":{\"width\":1920,\"height\":1080},\"testFramework\":\"pytest\",\"includeSetup\":false,\"testName\":\"Resize to Full HD\"}", + "description": "Create a Pytest test to verify the resize function correctly changes video dimensions to 1920x1080." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Test", + "context": null + } + }, + { + "name": "video-processing.createAccount", + "description": "Creates a new user account for the video processing platform, accepting user credentials and profile information as input, validating the details, and outputting an account ID and status confirmation upon successful creation.", + "category": "video-processing", + "parameters": [ + { + "name": "username", + "type": "string", + "description": "Unique username for the account login", + "required": true, + "defaultValue": "" + }, + { + "name": "email", + "type": "string", + "description": "User's email address for notifications and recovery", + "required": true, + "defaultValue": "" + }, + { + "name": "password", + "type": "string", + "description": "Password for account authentication", + "required": true, + "defaultValue": "" + }, + { + "name": "fullName", + "type": "string", + "description": "Full name of the user", + "required": false, + "defaultValue": "" + }, + { + "name": "role", + "type": "string", + "description": "User role for permissions (e.g., admin, editor, viewer)", + "required": false, + "defaultValue": "viewer" + }, + { + "name": "subscriptionPlan", + "type": "string", + "description": "Subscription plan selected for video processing service", + "required": false, + "defaultValue": "free" + } + ], + "returns": { + "type": "object", + "description": "An object containing the unique accountId, creation status, and any error messages if applicable" + }, + "aiAgent": { + "useCase": "Use this tool when there is a need to programmatically register or onboard new users into the video processing system, especially when creating accounts with specific roles and subscription plans for access control and billing purposes.", + "limitations": "This tool does not handle password strength validation or send verification emails; these must be handled separately. It also does not manage existing account updates or deletions.", + "examples": [ + "Create a new editor user account with a premium subscription.", + "Register a viewer account for trial access.", + "Add an admin account with full permissions." + ] + }, + "tags": [ + "video-processing", + "account-management", + "user-registration", + "onboarding" + ], + "examples": [ + { + "inputJson": "{\"username\":\"videomaster123\",\"email\":\"master@videoplatform.com\",\"password\":\"SecurePass123!\",\"fullName\":\"Video Master\",\"role\":\"editor\",\"subscriptionPlan\":\"premium\"}", + "description": "Create an editor account with a premium subscription plan." + }, + { + "inputJson": "{\"username\":\"trialuser\",\"email\":\"trial@videoplatform.com\",\"password\":\"TrialPass456\",\"role\":\"viewer\"}", + "description": "Create a basic viewer account for trial usage with default free subscription." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Account", + "context": null + } + }, + { + "name": "video-processing.createCommit", + "description": "Creates a version control commit reflecting changes in a video editing project. Accepts a project identifier, list of modified video assets, commit message, and author info. Generates a commit record capturing changed multimedia files, timestamps, and metadata, outputting a commit object with metadata and diff summary.", + "category": "video-processing", + "parameters": [ + { + "name": "projectId", + "type": "string", + "description": "Unique identifier of the video editing project to commit changes for.", + "required": true, + "defaultValue": "" + }, + { + "name": "modifiedAssets", + "type": "array", + "description": "Array of objects representing video/audio/image assets that were changed, including their file paths and change types (added, modified, deleted).", + "required": true, + "defaultValue": "" + }, + { + "name": "commitMessage", + "type": "string", + "description": "Descriptive message summarizing the changes included in the commit.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "Name of the person or system creating the commit.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorEmail", + "type": "string", + "description": "Email of the author creating the commit, for metadata purposes.", + "required": false, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 timestamp for the commit creation time. Defaults to current time if not provided.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the commit with properties including commitId, projectId, authorName, authorEmail, commitMessage, timestamp, and a summary of modified assets (change type and file paths)." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to finalize and record a set of changes made in a video-editing project environment into version control. This is useful for maintaining history of multimedia editing sessions or synchronizing collaborative edits.", + "limitations": "This tool does not handle merging conflicts or pushing commits to remote repositories; it only creates a local commit object. It assumes change tracking data is provided by upstream processes.", + "examples": [ + "Create a commit for project 'vid123' with added and modified video clips reflecting today's edits.", + "Record an author's changes with detailed commit message for archival in the version control system.", + "Generate a timestamped commit for modifications including deletions of unused audio tracks." + ] + }, + "tags": [ + "video-processing", + "version-control", + "commit", + "multimedia", + "editing", + "project-management" + ], + "examples": [ + { + "inputJson": "{\"projectId\":\"vid123\",\"modifiedAssets\":[{\"filePath\":\"/videos/clip1.mp4\",\"changeType\":\"modified\"},{\"filePath\":\"/audio/track1.mp3\",\"changeType\":\"added\"}],\"commitMessage\":\"Added background audio and updated clip1 visuals.\",\"authorName\":\"Jane Doe\",\"authorEmail\":\"jane@example.com\",\"timestamp\":\"2024-06-10T14:30:00Z\"}", + "description": "Create a commit for project 'vid123' recording modified video and added audio assets with commit metadata." + }, + { + "inputJson": "{\"projectId\":\"projectX\",\"modifiedAssets\":[{\"filePath\":\"/images/thumbnail.png\",\"changeType\":\"deleted\"}],\"commitMessage\":\"Removed old thumbnail image.\",\"authorName\":\"VideoEditorBot\"}", + "description": "Create a commit for project 'projectX' noting the deletion of a thumbnail image, using current timestamp and no email." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Commit", + "context": null + } + }, + { + "name": "video-processing.createImage", + "description": "Generates a high-quality image extracted or created from a video file. The tool accepts a video source URL or file path, a timestamp (in seconds) to capture a frame, optional resizing dimensions, and output format. It outputs an image file that can be used for thumbnails, previews, or analysis.", + "category": "video-processing", + "parameters": [ + { + "name": "videoSource", + "type": "string", + "description": "The URL or local path of the source video file to extract the image from.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "number", + "description": "The time in seconds into the video to capture the image frame.", + "required": true, + "defaultValue": "0" + }, + { + "name": "width", + "type": "number", + "description": "The desired width of the output image in pixels. If not set, original frame width is used.", + "required": false, + "defaultValue": "" + }, + { + "name": "height", + "type": "number", + "description": "The desired height of the output image in pixels. If not set, original frame height is used.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Output image format, e.g., 'png', 'jpeg'. Default is 'png'.", + "required": false, + "defaultValue": "png" + }, + { + "name": "quality", + "type": "number", + "description": "JPEG quality from 1 to 100, applicable if outputFormat is jpeg. Defaults to 90.", + "required": false, + "defaultValue": "90" + } + ], + "returns": { + "type": "object", + "description": "An object containing base64 encoded image data and metadata about the image created." + }, + "aiAgent": { + "useCase": "Use this tool when a specific frame image is needed from a video source, such as creating thumbnails, snapshots for video previews, or extracting frames for analysis. It supports precise timestamp frame capture and optional resizing to fit output requirements.", + "limitations": "Cannot extract images from DRM-protected or corrupted videos. Performance depends on video encoding support and input video accessibility. Does not create images from scratch or apply filters beyond resizing.", + "examples": [ + "Create a PNG snapshot of the frame at 10 seconds from a local video file.", + "Generate a JPEG thumbnail image of size 320x240 from a video URL at 5.5 seconds.", + "Extract a full-resolution image frame from video starting point (0 seconds)." + ] + }, + "tags": [ + "video", + "image", + "frame-extraction", + "thumbnail", + "snapshot", + "video-processing", + "media" + ], + "examples": [ + { + "inputJson": "{\"videoSource\":\"/videos/sample.mp4\",\"timestamp\":10,\"outputFormat\":\"png\"}", + "description": "Extract a PNG image from sample.mp4 at 10 seconds." + }, + { + "inputJson": "{\"videoSource\":\"https://example.com/video.mov\",\"timestamp\":5.5,\"width\":320,\"height\":240,\"outputFormat\":\"jpeg\",\"quality\":80}", + "description": "Create a resized JPEG thumbnail at 5.5 seconds from remote video URL." + }, + { + "inputJson": "{\"videoSource\":\"/videos/movie.avi\",\"timestamp\":0}", + "description": "Capture the first frame of a local AVI video in default PNG format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Image", + "context": null + } + }, + { + "name": "video-processing.createJSON", + "description": "This tool accepts video metadata and optional frame analysis data as input and processes it to generate a structured JSON file summarizing the video properties, annotations, detected scenes, and other relevant information. The output JSON facilitates video indexing, cataloging, or further automated processing.", + "category": "video-processing", + "parameters": [ + { + "name": "videoFilePath", + "type": "string", + "description": "Path or URL to the input video file to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeFrameAnalysis", + "type": "boolean", + "description": "Flag to include detailed frame-by-frame analysis data in output JSON.", + "required": false, + "defaultValue": "false" + }, + { + "name": "sceneDetectionSensitivity", + "type": "number", + "description": "Sensitivity level for scene boundary detection; higher values detect more scene changes (range 0.0 to 1.0).", + "required": false, + "defaultValue": "0.5" + }, + { + "name": "maxFramesToAnalyze", + "type": "number", + "description": "Maximum number of frames to analyze for frame-level metadata to limit processing time (0 for all frames).", + "required": false, + "defaultValue": "0" + }, + { + "name": "metadataOverrides", + "type": "object", + "description": "Optional key-value pairs to override or add to extracted video metadata in output JSON.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A JSON object containing the video metadata summary, detected scene list with timecodes, optional detailed frame analysis (if requested), and any user overrides applied." + }, + "aiAgent": { + "useCase": "Use this tool when you need to extract structured metadata and analytic summaries from video files for cataloging, indexing, or further downstream video processing tasks. It is useful for generating standardized JSON representations describing video content, scenes, and analysis data.", + "limitations": "This tool does not perform actual video editing or rendering and relies on the availability and accessibility of the input video file. Frame analysis is limited by processing capacity and user-defined max frame count.", + "examples": [ + "Generate a JSON summary of the video located at 'https://example.com/video.mp4' including scene detection with medium sensitivity.", + "Create a JSON structured report of a local video file with detailed frame analysis enabled but limit processing to 1000 frames.", + "Produce a metadata JSON with overrides to tag a video as 'ProjectX' with custom fields." + ] + }, + "tags": [ + "video", + "metadata", + "scene-detection", + "frame-analysis", + "json", + "indexing" + ], + "examples": [ + { + "inputJson": "{\"videoFilePath\":\"/videos/event.mp4\",\"includeFrameAnalysis\":true,\"sceneDetectionSensitivity\":0.7,\"maxFramesToAnalyze\":5000,\"metadataOverrides\":{\"project\":\"Conference2024\",\"reviewed\":false}}", + "description": "Generate JSON metadata and detailed frame-by-frame data with increased scene detection sensitivity and capped frame analysis for a conference video." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "JSON", + "context": null + } + }, + { + "name": "audio-processing.analyzeText", + "description": "This tool analyzes text transcriptions of audio content to extract meaningful linguistic features such as sentiment, keyword density, speaker emotion indicators, and readability scores. It accepts a raw text string as input, processes linguistic and semantic attributes, and outputs a structured summary report characterizing the content and style of the spoken words.", + "category": "audio-processing", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The full text transcription of the audio content to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The language code (e.g., 'en' for English) of the input text to improve analysis accuracy.", + "required": false, + "defaultValue": "en" + }, + { + "name": "analyzeSentiment", + "type": "boolean", + "description": "Whether to perform sentiment analysis on the text content.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractKeywords", + "type": "boolean", + "description": "Whether to extract and return the most relevant keywords from the text.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeReadability", + "type": "boolean", + "description": "Whether to calculate readability and complexity scores for the text.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "A structured object containing sentiment scores, a list of keywords with relevance scores, readability metrics, and detected emotional tone indicators detected from the text." + }, + "aiAgent": { + "useCase": "Use this tool when you have a textual transcript derived from audio recordings (such as podcasts, interviews, or lectures) and you need to analyze the linguistic content to understand sentiment trends, main topics, or readability without processing raw audio. It helps in summarizing and extracting insights from spoken content once converted to text.", + "limitations": "This tool does not perform audio to text transcription; it requires clean, formatted text input. Its accuracy depends on the input text quality and language support. It does not detect audio-specific features like intonation or non-verbal sounds.", + "examples": [ + "Analyze a customer support call transcript for sentiment and key topics.", + "Extract keyword density and readability scores from a podcast transcript to create show notes.", + "Evaluate emotional tone and sentiment in a recorded interview text to aid content summarization." + ] + }, + "tags": [ + "audio-processing", + "text-analysis", + "sentiment-analysis", + "keyword-extraction", + "readability", + "transcription-analysis" + ], + "examples": [ + { + "inputJson": "{\"text\":\"Thank you for calling our support line. We are happy to assist you today.\",\"language\":\"en\",\"analyzeSentiment\":true,\"extractKeywords\":true,\"includeReadability\":true}", + "description": "Analyze a short English customer service transcript segment for sentiment, keywords, and readability." + }, + { + "inputJson": "{\"text\":\"In today's episode, we dive into artificial intelligence and its impact on modern technology.\",\"language\":\"en\",\"analyzeSentiment\":false,\"extractKeywords\":true,\"includeReadability\":true}", + "description": "Extract keywords and readability metrics from a podcast episode introduction text." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Text", + "context": null + } + }, + { + "name": "audio-processing.analyzeWord", + "description": "Analyzes a spoken word segment from an audio file to extract phonetic transcription, emotional tone, speech clarity, and word duration. Accepts an audio file format (wav, mp3) and timestamps for the word segment, processes audio to identify linguistic and acoustic features, and outputs detailed properties about the word's pronunciation and prosody.", + "category": "audio-processing", + "parameters": [ + { + "name": "audioFilePath", + "type": "string", + "description": "Path or URL to the audio file containing the spoken word segment to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "startTime", + "type": "number", + "description": "Start time in seconds indicating where the spoken word begins in the audio file.", + "required": true, + "defaultValue": "" + }, + { + "name": "endTime", + "type": "number", + "description": "End time in seconds indicating where the spoken word ends in the audio file.", + "required": true, + "defaultValue": "" + }, + { + "name": "languageCode", + "type": "string", + "description": "Optional BCP-47 language code of the spoken word to improve phonetic and linguistic analysis (e.g., 'en-US').", + "required": false, + "defaultValue": "\"en-US\"" + }, + { + "name": "includeEmotionAnalysis", + "type": "boolean", + "description": "Whether to include emotional tone analysis of the spoken word in the output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing phonetic transcription, estimated emotion (if requested), speech clarity score (0 to 1), duration of the word in seconds, and confidence scores for each analysis dimension." + }, + "aiAgent": { + "useCase": "This tool is useful for AI agents assisting in linguistic research, speech therapy, language learning applications, or voice user interface development, where detailed analysis of individual spoken words within audio files is needed. It helps in understanding pronunciation, emotion, and clarity of a particular word segment.", + "limitations": "Does not perform full sentence or continuous speech analysis; accuracy depends on audio quality; emotion detection is limited to general tone categories and may not capture nuanced emotions.", + "examples": [ + "Analyze the word 'hello' spoken between 2.5s and 3.0s in this conversation audio for phonetic clarity.", + "Extract emotional tone and phonetic details of a single word at 10.1 to 10.5 seconds from a podcast episode.", + "Evaluate the pronunciation clarity of a non-native speaker's spoken word segment in an MP3 file from 5.0 to 5.8 seconds." + ] + }, + "tags": [ + "audio", + "speech", + "linguistics", + "phonetics", + "emotion-analysis", + "word-level", + "speech-clarity" + ], + "examples": [ + { + "inputJson": "{\"audioFilePath\":\"https://example.com/audio/conversation.wav\",\"startTime\":2.5,\"endTime\":3.0,\"languageCode\":\"en-US\",\"includeEmotionAnalysis\":true}", + "description": "Analyze phonetic transcription and emotional tone of a spoken word segment in an English conversation audio." + }, + { + "inputJson": "{\"audioFilePath\":\"/local/path/podcast.mp3\",\"startTime\":10.1,\"endTime\":10.5,\"languageCode\":\"en-US\",\"includeEmotionAnalysis\":false}", + "description": "Extract phonetic transcription and speech clarity score of a single word segment from a podcast audio file." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Word", + "context": null + } + }, + { + "name": "audio-processing.analyzeAccount", + "description": "This tool accepts audio recordings related to business account interactions, such as customer service calls or sales meetings. It processes the audio to analyze speaker sentiment, call engagement metrics, and topic distribution. The output is a comprehensive report summarizing account communication quality and key insights to improve customer relations.", + "category": "audio-processing", + "parameters": [ + { + "name": "accountId", + "type": "string", + "description": "Unique identifier of the business account for which the audio is analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "audioFiles", + "type": "array", + "description": "List of audio file URLs or base64-encoded audio data representing account-related interactions to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language spoken in the audio files (ISO 639-1 code) to improve transcription and sentiment accuracy.", + "required": false, + "defaultValue": "en" + }, + { + "name": "sentimentAnalysis", + "type": "boolean", + "description": "Whether to perform sentiment analysis on the spoken content.", + "required": false, + "defaultValue": "true" + }, + { + "name": "topicModeling", + "type": "boolean", + "description": "Whether to extract main topics discussed in the audio to identify key themes.", + "required": false, + "defaultValue": "true" + }, + { + "name": "engagementMetrics", + "type": "boolean", + "description": "Whether to calculate metrics like talk time ratio and interruptions to assess engagement levels.", + "required": false, + "defaultValue": "true" + }, + { + "name": "detailedTranscript", + "type": "boolean", + "description": "Include a full speaker-attributed transcript with timestamps in the output report if true.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object including sentiment scores, engagement metrics, identified topics, summary insights, and optionally transcripts, all linked to the specified account." + }, + "aiAgent": { + "useCase": "Use this tool when analyzing audio recordings from business account communications, such as customer support calls or sales discussions, to gain insights on customer sentiment, key discussed topics, and interaction quality. This helps in enhancing customer relationship strategies and training staff.", + "limitations": "Cannot replace human judgment in nuanced communication analysis; accuracy depends on audio quality and language support. Does not analyze non-verbal cues or external context beyond audio content.", + "examples": [ + "Analyze recent customer service calls for account ID 12345 to assess customer satisfaction and call effectiveness.", + "Get a summary of main topics and sentiment trends from sales meeting recordings for account XYZ.", + "Provide an engagement metrics report including talk time ratios for technical support calls related to account ABC." + ] + }, + "tags": [ + "audio", + "business", + "sentiment-analysis", + "topic-modeling", + "customer-service", + "engagement", + "transcription" + ], + "examples": [ + { + "inputJson": "{\"accountId\":\"acc123\",\"audioFiles\":[\"https://example.com/call1.mp3\",\"https://example.com/call2.mp3\"],\"language\":\"en\",\"sentimentAnalysis\":true,\"topicModeling\":true,\"engagementMetrics\":true,\"detailedTranscript\":false}", + "description": "Analyze two English audio calls for account 'acc123' with all analyses enabled except transcript." + }, + { + "inputJson": "{\"accountId\":\"client789\",\"audioFiles\":[\"data:audio/wav;base64,UklGRngAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YQAAAA==\"],\"language\":\"en\",\"sentimentAnalysis\":false,\"topicModeling\":true,\"engagementMetrics\":false,\"detailedTranscript\":true}", + "description": "Analyze one audio recording given as base64 for client 'client789', with topic modeling and transcript included but no sentiment or engagement metrics." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Account", + "context": null + } + }, + { + "name": "audio-processing.downloadCode", + "description": "Downloads audio processing code files or repositories from specified URLs or repositories, supporting various version control hosts. Accepts source URLs or repository identifiers, optional branch or tag, and target local directory. Returns download success status and local path of saved code.", + "category": "audio-processing", + "parameters": [ + { + "name": "sourceUrl", + "type": "string", + "description": "URL of the code repository or file to download, e.g., GitHub repo URL or direct raw file link.", + "required": true, + "defaultValue": "" + }, + { + "name": "branchOrTag", + "type": "string", + "description": "Optional branch or tag name to download specific version of the code. If empty, defaults to repository default branch.", + "required": false, + "defaultValue": "" + }, + { + "name": "targetDirectory", + "type": "string", + "description": "Local directory path where the code will be saved after download. If not specified, uses current working directory.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeSubmodules", + "type": "boolean", + "description": "Whether to include git submodules if present. Defaults to false.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Result object containing success boolean, message detail, and local path of downloaded code if successful." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically retrieve audio processing code from external repositories or URLs for analysis, modification, or integration within an audio editing or AI workflow. Ideal for automating the setup of audio processing modules or scripts from popular code hosts.", + "limitations": "Does not execute or validate downloaded code; relies on network availability. Limited to public repositories or accessible URLs; private repos require prior authentication setup which is not handled by this tool.", + "examples": [ + "Download audio noise reduction script code from a public GitHub repo for modification.", + "Retrieve latest version of an open-source audio analysis plugin to incorporate into local project.", + "Obtain code files from a repository branch for testing compatibility with audio processing pipeline." + ] + }, + "tags": [ + "audio", + "download", + "code", + "repository", + "automation", + "audio-processing" + ], + "examples": [ + { + "inputJson": "{\"sourceUrl\":\"https://github.com/audio-tools/noise-reduction.git\",\"branchOrTag\":\"master\",\"targetDirectory\":\"/user/projects/audio-tools\"}", + "description": "Download the master branch of 'noise-reduction' audio tool repository into specified local directory." + }, + { + "inputJson": "{\"sourceUrl\":\"https://raw.githubusercontent.com/audio-analysis/fft/main/fft.js\",\"branchOrTag\":\"\",\"targetDirectory\":\"\"}", + "description": "Download a single raw JS file for FFT analysis from GitHub into the current directory." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Code", + "context": null + } + }, + { + "name": "audio-processing.analyzeJSON", + "description": "Analyzes an audio file and returns a detailed JSON report containing audio features such as tempo, pitch, key, spectral characteristics, and detected segments. Input can be an audio file URL or base64-encoded audio data. Output is a structured JSON summarizing the audio analysis results for further processing or visualization.", + "category": "audio-processing", + "parameters": [ + { + "name": "audioSource", + "type": "string", + "description": "URL or base64 string of the input audio file to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "analysisTypes", + "type": "array", + "description": "Array of analysis types to perform, e.g., ['tempo', 'pitch', 'key', 'segments', 'spectral']", + "required": false, + "defaultValue": "[\"tempo\",\"pitch\",\"key\"]" + }, + { + "name": "segmentDuration", + "type": "number", + "description": "Duration in seconds for segment analysis to chunk audio into parts for segment detection.", + "required": false, + "defaultValue": "5" + }, + { + "name": "includeWaveformData", + "type": "boolean", + "description": "Whether to include simplified waveform data in the JSON output for visualization purposes.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A JSON object containing keys for each requested analysis type with detailed metrics and metadata about the audio." + }, + "aiAgent": { + "useCase": "Use this tool when needing comprehensive audio feature extraction from an audio file to enable further AI processing, visualization, or decision-making. Ideal for music analysis, audio quality assessment, or feature extraction for machine learning.", + "limitations": "This tool does not perform speech-to-text transcription or semantic audio classification. It focuses on quantitative audio feature extraction, not content understanding.", + "examples": [ + "Analyze an audio file URL for tempo and pitch.", + "Extract key, tempo, and segment markers from base64-encoded audio.", + "Get detailed spectral features including waveform data for audio visualization." + ] + }, + "tags": [ + "audio", + "analysis", + "feature-extraction", + "tempo", + "pitch", + "spectral", + "segments" + ], + "examples": [ + { + "inputJson": "{\"audioSource\":\"https://example.com/audio/song.mp3\",\"analysisTypes\":[\"tempo\",\"pitch\"]}", + "description": "Analyze an online mp3 file to extract tempo and pitch information." + }, + { + "inputJson": "{\"audioSource\":\"data:audio/wav;base64,UklGRiQAAABXQVZFZm10IBAAAAABAAEA...\",\"analysisTypes\":[\"key\",\"segments\"],\"segmentDuration\":10}", + "description": "Analyze base64 encoded wav data to extract musical key and segment boundaries with 10 second segments." + }, + { + "inputJson": "{\"audioSource\":\"https://example.com/audio/speech.wav\",\"analysisTypes\":[\"spectral\"],\"includeWaveformData\":true}", + "description": "Analyze a speech wav audio at spectral level including waveform data output." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "JSON", + "context": null + } + }, + { + "name": "audio-processing.analyzeMessage", + "description": "Analyzes an audio message file to extract communication features such as sentiment, speaker emotion, speech rate, and keyword highlights. Accepts common audio formats and produces a structured summary including emotional tone, key topic words, and speech metrics.", + "category": "audio-processing", + "parameters": [ + { + "name": "audioFilePath", + "type": "string", + "description": "Path or URL to the audio message file to analyze (wav, mp3, etc.)", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the message audio (e.g., 'en' for English). Used for keyword extraction and sentiment analysis.", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeTranscript", + "type": "boolean", + "description": "Whether to perform speech-to-text transcription and include it in the output summary.", + "required": false, + "defaultValue": "true" + }, + { + "name": "emotionModel", + "type": "string", + "description": "Specify the emotion recognition model to use (e.g., 'basic', 'advanced').", + "required": false, + "defaultValue": "basic" + }, + { + "name": "keywordsCount", + "type": "number", + "description": "Number of top keywords to extract from the message content.", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "Analysis results including sentiment score, detected emotions, speech rate (words per minute), key topics and an optional transcript of the message." + }, + "aiAgent": { + "useCase": "Use this tool when needing to understand or summarize emotional and topical content from audio messages, such as voicemails or customer service calls. It helps extract insights without manual listening, supporting sentiment evaluation, topic spotting, and conversational metrics.", + "limitations": "Does not provide full natural language understanding or context beyond audio content. Accuracy depends on audio quality and language model support. It is not a real-time streaming analyzer, designed for pre-recorded messages.", + "examples": [ + "Analyze sentiment and key topics from a voicemail audio file in English.", + "Extract emotional tone and speech metrics from a customer service call recording.", + "Generate a transcript and keywords summary from a meeting audio message." + ] + }, + "tags": [ + "audio", + "analysis", + "sentiment", + "emotion-detection", + "keyword-extraction", + "speech-metrics", + "voice-message" + ], + "examples": [ + { + "inputJson": "{\"audioFilePath\":\"/data/messages/message1.wav\",\"language\":\"en\",\"includeTranscript\":true,\"emotionModel\":\"advanced\",\"keywordsCount\":7}", + "description": "Analyze an English voicemail with advanced emotion detection and return 7 key keywords plus transcript." + }, + { + "inputJson": "{\"audioFilePath\":\"https://example.com/audio/call2.mp3\",\"includeTranscript\":false}", + "description": "Analyze a remote audio file without transcription, extracting sentiment and speech rate." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Message", + "context": null + } + }, + { + "name": "audio-processing.downloadFile", + "description": "Downloads an audio file from a specified URL or cloud storage location to local or designated storage. Accepts a URL or cloud path, supports optional authentication tokens, and allows output format conversion options. Produces a successfully downloaded audio file in the target format and location.", + "category": "audio-processing", + "parameters": [ + { + "name": "sourceUrl", + "type": "string", + "description": "The URL or cloud storage path of the audio file to download.", + "required": true, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Optional authentication token for accessing protected resources.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired audio file format after download (e.g., mp3, wav, flac). Defaults to original format if not specified.", + "required": false, + "defaultValue": "" + }, + { + "name": "destinationPath", + "type": "string", + "description": "Local file system path or storage target where the file will be saved. Defaults to current working directory.", + "required": false, + "defaultValue": "./" + } + ], + "returns": { + "type": "object", + "description": "Details of the downloaded audio file including file path, format, file size in bytes, and any conversion applied." + }, + "aiAgent": { + "useCase": "Use this tool when needing to fetch audio files from online or cloud sources for further processing or playback within audio processing pipelines. Ideal for acquiring remote media when authentication or format conversion is required.", + "limitations": "Cannot download files from unsupported protocols or sites blocking automated downloads; does not perform audio content analysis or validation beyond file retrieval; conversion only supports common audio formats.", + "examples": [ + "Download an mp3 audio file from a public URL to local storage.", + "Download a protected audio file requiring an authentication token and save as wav format.", + "Fetch an audio file from cloud storage to a specified destination path without format change." + ] + }, + "tags": [ + "audio", + "download", + "file", + "media", + "cloud", + "format-conversion" + ], + "examples": [ + { + "inputJson": "{\"sourceUrl\":\"https://example.com/audio/song.mp3\",\"outputFormat\":\"wav\",\"destinationPath\":\"/user/downloads/audio\"}", + "description": "Download an MP3 from a public URL and convert it to WAV format saved to a specified local directory." + }, + { + "inputJson": "{\"sourceUrl\":\"https://privatecloudstorage.com/bucket/audio1234.flac\",\"authToken\":\"abcdef123456\"}", + "description": "Download a protected FLAC audio file using an authentication token, saving in original format to default location." + }, + { + "inputJson": "{\"sourceUrl\":\"https://cdn.example.org/podcast/episode1.aac\",\"destinationPath\":\"./podcasts\"}", + "description": "Download an AAC podcast episode without conversion, saving to a local podcasts directory." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "File", + "context": null + } + }, + { + "name": "audio-processing.downloadDocument", + "description": "Downloads an audio-related document from a specified URL, validating its format (PDF, DOCX, TXT) and storing it locally or returning it as a base64 string. Accepts the document URL and options for output format and storage path, enabling integration with audio processing workflows requiring associated documentation.", + "category": "audio-processing", + "parameters": [ + { + "name": "documentUrl", + "type": "string", + "description": "The full URL to the audio-related document to download (supports HTTP/HTTPS).", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format for the downloaded document: 'base64' to return as string or 'file' to save locally.", + "required": true, + "defaultValue": "file" + }, + { + "name": "savePath", + "type": "string", + "description": "Local filesystem path where to save the document if outputFormat is 'file'. Ignored if outputFormat is 'base64'.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing success status, file path if saved, or base64 content string if requested, plus any error message." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to retrieve and locally save or encode any audio-related documentation (manuals, specs, transcripts) referenced by a URL to facilitate offline access or further parsing. Ideal when the document is needed alongside audio data for analysis or user reference.", + "limitations": "This tool does not parse or analyze the contents of the documents; it only downloads and stores or encodes them. It cannot modify or validate document content beyond format checking. Network errors or invalid URLs may fail the operation.", + "examples": [ + "Download the user manual PDF for the audio device from the given URL and save it locally.", + "Retrieve a transcript document as a base64 string for embedding in a report.", + "Save an online specification DOCX file for later offline review." + ] + }, + "tags": [ + "download", + "document", + "audio-documentation", + "file-storage", + "base64", + "url-fetching" + ], + "examples": [ + { + "inputJson": "{\"documentUrl\":\"https://example.com/audio-manual.pdf\",\"outputFormat\":\"file\",\"savePath\":\"/tmp/audio-manual.pdf\"}", + "description": "Download a PDF manual and save it locally." + }, + { + "inputJson": "{\"documentUrl\":\"https://example.com/audio-transcript.txt\",\"outputFormat\":\"base64\"}", + "description": "Retrieve a transcript document and get its base64 encoded content." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Document", + "context": null + } + }, + { + "name": "audio-processing.uploadCode", + "description": "This tool accepts audio-processing code snippets as input in various programming languages (e.g., Python, JavaScript). It uploads and stores the code securely for integration with audio editing pipelines or AI-assisted audio tools and returns a confirmation with the stored code's metadata and ID for future execution or reference.", + "category": "audio-processing", + "parameters": [ + { + "name": "codeSnippet", + "type": "string", + "description": "The source code snippet for audio processing to be uploaded (required).", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language of the code snippet, e.g., 'python', 'javascript' (required).", + "required": true, + "defaultValue": "" + }, + { + "name": "author", + "type": "string", + "description": "Name or identifier of the code author (optional).", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Brief description of what the code does or its purpose (optional).", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "List of tags related to the code functionality for easier categorization and search (optional).", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing a unique code ID, language, upload timestamp, and optional metadata like description and author." + }, + "aiAgent": { + "useCase": "Use this tool when you want to programmatically upload audio-processing code snippets to a managed system for later retrieval, execution, or sharing, enabling AI agents to integrate dynamic audio-processing logic into workflows.", + "limitations": "This tool does not execute or validate code correctness or security; it only uploads and stores code snippets for later use.", + "examples": [ + "Upload a Python function that normalizes audio volume.", + "Upload a JavaScript snippet for applying a custom audio filter.", + "Store user-defined DSP algorithms in code form for remote execution." + ] + }, + "tags": [ + "audio-processing", + "code-upload", + "snippet-storage", + "programming", + "AI-integration" + ], + "examples": [ + { + "inputJson": "{\"codeSnippet\":\"def normalize(audio):\\n peak = max(abs(audio))\\n return audio/peak\",\"language\":\"python\",\"author\":\"audioDev123\",\"description\":\"Normalizes audio volume to max peak\",\"tags\":[\"normalization\",\"audio\",\"python\"]}", + "description": "Uploading a Python function to normalize the volume of audio data." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Code", + "context": null + } + }, + { + "name": "audio-processing.uploadFile", + "description": "Uploads an audio file to the system for subsequent AI-driven audio editing or analysis tasks. Accepts common audio formats (e.g., MP3, WAV) and returns metadata about the uploaded file including duration, format, and sample rate, confirming successful upload and readiness for processing.", + "category": "audio-processing", + "parameters": [ + { + "name": "filePath", + "type": "string", + "description": "The local path or URL of the audio file to be uploaded. Accepts standard audio formats such as MP3, WAV, FLAC.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileName", + "type": "string", + "description": "Optional, the name to assign to the uploaded file. If omitted, the original file name is used.", + "required": false, + "defaultValue": "" + }, + { + "name": "overwrite", + "type": "boolean", + "description": "Whether to overwrite an existing file with the same name in the system. Defaults to false, which will reject duplicate names.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the status of the upload operation and metadata of the uploaded audio file, including duration (seconds), format, sample rate (Hz), and file size (bytes)." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to ingest user-provided audio files to prepare for further processing such as transcription, enhancement, or analysis. It handles file validation and storage, providing metadata to facilitate downstream steps.", + "limitations": "This tool only uploads and validates the audio file; it does not perform any audio editing, conversion, or analysis by itself.", + "examples": [ + "Upload a WAV audio recording from local device for noise reduction processing.", + "Upload an MP3 podcast episode URL to initiate transcription.", + "Upload a client's FLAC audio file, ensuring existing file is not overwritten." + ] + }, + "tags": [ + "upload", + "audio", + "file-management", + "media-processing", + "audio-format", + "preprocessing" + ], + "examples": [ + { + "inputJson": "{\"filePath\":\"/user/audio/interview.wav\",\"fileName\":\"interview.wav\",\"overwrite\":false}", + "description": "Uploading a local WAV audio file without overwriting existing files." + }, + { + "inputJson": "{\"filePath\":\"https://example.com/audio/sample.mp3\",\"fileName\":\"sample_podcast.mp3\",\"overwrite\":true}", + "description": "Uploading an MP3 audio from a URL with overwrite enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "File", + "context": null + } + }, + { + "name": "audio-processing.uploadDocument", + "description": "Uploads an audio-related document (such as transcripts, annotated scripts, or audio notes) to an audio processing system. Accepts files in common document formats (PDF, DOCX, TXT). Processes metadata extraction and stores the document for further AI-based audio analysis or project management. Returns a confirmation with document ID and summary extraction.", + "category": "audio-processing", + "parameters": [ + { + "name": "fileName", + "type": "string", + "description": "Name of the document file including extension to be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileContentBase64", + "type": "string", + "description": "Base64 encoded content of the document file to upload.", + "required": true, + "defaultValue": "" + }, + { + "name": "documentType", + "type": "string", + "description": "Type of the document (e.g., transcript, script, notes) to categorize the upload.", + "required": false, + "defaultValue": "transcript" + }, + { + "name": "projectId", + "type": "string", + "description": "Identifier of the audio project this document relates to, if any.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "List of tags to describe or categorize the document for easier searching later.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "Object containing upload status, assigned document ID, extracted metadata summary, and optionally detected language or keywords." + }, + "aiAgent": { + "useCase": "Use this tool when you need to upload documents related to audio projects or analyses, such as transcripts or annotated scripts, into an AI audio processing environment for further use and retrieval. Helps agents manage project documents alongside audio files.", + "limitations": "This tool does not process audio files themselves, nor perform transcription. It only uploads documents related to audio projects. It cannot validate the document content beyond basic metadata extraction.", + "examples": [ + "Upload a transcript document to a podcast audio project.", + "Add annotated script notes to a music production project.", + "Upload meeting notes related to an audio recording session." + ] + }, + "tags": [ + "audio", + "document", + "upload", + "project-management", + "transcript", + "annotation" + ], + "examples": [ + { + "inputJson": "{\"fileName\":\"episode01_transcript.pdf\",\"fileContentBase64\":\"JVBERi0xLjUKJcfs...\",\"documentType\":\"transcript\",\"projectId\":\"proj123\",\"tags\":[\"podcast\",\"episode1\"]}", + "description": "Upload a PDF transcript of episode 01 for a podcast project." + }, + { + "inputJson": "{\"fileName\":\"session_notes.txt\",\"fileContentBase64\":\"VGhpcyBpcyBhbiBhbm5vdGF0aW9uIGZvciB0aGUgc2Vzc2lvbi4=\",\"documentType\":\"notes\",\"projectId\":\"music789\",\"tags\":[\"mixing\",\"session\"]}", + "description": "Upload plain text notes from a music mixing session." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Document", + "context": null + } + }, + { + "name": "audio-processing.formatCode", + "description": "This tool accepts audio-processing-related source code snippets as input and formats them according to standard code style conventions for improved readability and maintainability. It supports multiple programming languages used in audio processing such as Python, C++, and JavaScript, and returns the formatted code as a string.", + "category": "audio-processing", + "parameters": [ + { + "name": "sourceCode", + "type": "string", + "description": "The raw source code string that needs formatting. Supports audio-processing code in Python, C++, JavaScript, etc.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The programming language of the source code to apply appropriate formatting rules (e.g., 'python', 'cpp', 'javascript').", + "required": true, + "defaultValue": "" + }, + { + "name": "indentationSpaces", + "type": "number", + "description": "Number of spaces used for indentation in the formatted output. Typical values are 2 or 4.", + "required": false, + "defaultValue": "4" + }, + { + "name": "maxLineLength", + "type": "number", + "description": "Maximum length of each line before wrapping occurs. Helps ensure readable code width.", + "required": false, + "defaultValue": "80" + }, + { + "name": "useTabs", + "type": "boolean", + "description": "Whether to use tab characters for indentation instead of spaces.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted code as a string and any formatting errors or warnings encountered." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to cleanly format audio-processing code snippets for display, sharing, or integration to improve readability and maintain consistent coding style. Ideal when processing code examples, scripts, or library source code related to audio tasks.", + "limitations": "Does not perform code syntax validation or error correction beyond formatting. May not fully support obscure or custom syntaxes beyond common languages specified.", + "examples": [ + "Format a Python script that implements an audio filter with 4-space indentation.", + "Format C++ audio DSP code with 2-space indentation and max line length of 100.", + "Format JavaScript code for an audio visualization module using tabs instead of spaces." + ] + }, + "tags": [ + "audio-processing", + "code-formatting", + "code-style", + "source-code", + "programming", + "audio-development" + ], + "examples": [ + { + "inputJson": "{\"sourceCode\":\"def process_audio(sample):\\n return sample*2\\n\",\"language\":\"python\",\"indentationSpaces\":4,\"maxLineLength\":80,\"useTabs\":false}", + "description": "Format a simple Python function for audio processing with 4-space indentation." + }, + { + "inputJson": "{\"sourceCode\":\"void applyReverb(float* buffer, int size){for(int i=0;i\",\"imageType\":\"waveform\",\"width\":800,\"height\":400,\"colorMap\":\"gray\"}", + "description": "Create a gray-scale waveform image from raw base64 audio data." + }, + { + "inputJson": "{\"audioInput\":\"https://example.com/audio/podcast-episode.wav\",\"imageType\":\"spectrogram\",\"timeRange\":[30,60]}", + "description": "Extract a spectrogram image for the segment between 30 and 60 seconds of a podcast audio file." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Image", + "context": null + } + }, + { + "name": "audio-processing.createText", + "description": "Generates textual metadata or captions from an input audio clip by analyzing its content, speech, or sound events. Accepts audio files in common formats and outputs a structured text describing spoken words or audio scene content, useful for captions, indexing, or search.", + "category": "audio-processing", + "parameters": [ + { + "name": "audioFilePath", + "type": "string", + "description": "File path or URL to the input audio file to analyze; supports formats like mp3, wav, or m4a.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en', 'es') specifying the spoken language for speech recognition to improve accuracy.", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeTimestamps", + "type": "boolean", + "description": "Whether to include timestamps for each recognized word or phrase in the output text.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxDurationSeconds", + "type": "number", + "description": "Maximum duration of audio to process in seconds; longer audio may be truncated for processing limits.", + "required": false, + "defaultValue": "300" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output text: 'plain' for simple text, 'json' for structured captions with timestamps.", + "required": false, + "defaultValue": "plain" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with a 'text' field containing the transcribed or generated descriptive text; optionally includes structured caption data if requested." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create textual representations from audio content for accessibility, search indexing, content summarization, or automated caption generation from audio files. It is suitable for podcasts, videos, interviews, and general audio content where speech or identifiable sounds are present.", + "limitations": "Does not support real-time processing; accuracy depends on audio quality and language support; cannot generate text for music without lyrics or purely instrumental sounds.", + "examples": [ + "Generate a plain transcript of a podcast segment in English.", + "Create timestamped captions for a recorded interview in Spanish.", + "Extract a summarized descriptive text of an environmental sound recording." + ] + }, + "tags": [ + "audio", + "speech-to-text", + "captioning", + "transcription", + "metadata", + "audio analysis" + ], + "examples": [ + { + "inputJson": "{\"audioFilePath\":\"/path/to/podcast.mp3\",\"language\":\"en\",\"includeTimestamps\":false,\"maxDurationSeconds\":300,\"outputFormat\":\"plain\"}", + "description": "Generate a plain text transcript of the first 5 minutes of a podcast audio file in English." + }, + { + "inputJson": "{\"audioFilePath\":\"https://example.com/interview.wav\",\"language\":\"es\",\"includeTimestamps\":true,\"maxDurationSeconds\":600,\"outputFormat\":\"json\"}", + "description": "Create JSON formatted captions with timestamps for a Spanish interview audio file up to 10 minutes." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Text", + "context": null + } + }, + { + "name": "audio-processing.createAccount", + "description": "Creates a user account specifically for managing audio processing projects and subscriptions. Accepts user details and preferences, validates them, and returns account confirmation with account ID and access tokens for audio editing and AI-driven processing services.", + "category": "audio-processing", + "parameters": [ + { + "name": "username", + "type": "string", + "description": "Unique username for the user account", + "required": true, + "defaultValue": "" + }, + { + "name": "email", + "type": "string", + "description": "Email address for account registration and notifications", + "required": true, + "defaultValue": "" + }, + { + "name": "password", + "type": "string", + "description": "Password for securing the user account", + "required": true, + "defaultValue": "" + }, + { + "name": "subscriptionPlan", + "type": "string", + "description": "Subscription plan for audio processing services (e.g., free, premium)", + "required": false, + "defaultValue": "free" + }, + { + "name": "preferences", + "type": "object", + "description": "User preferences such as default audio formats and processing presets", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "Returns an object including accountId, username, email, subscriptionPlan, preferences, and an accessToken to authenticate audio processing requests." + }, + "aiAgent": { + "useCase": "Use this tool when creating new user accounts for audio processing platforms that leverage AI for audio editing, enhancement, or analysis. It consolidates user credentials, preferences, and subscription data into one account for personalized service.", + "limitations": "This tool does not handle authentication beyond initial creation, nor does it manage password recovery or advanced user management functions.", + "examples": [ + "Create a new user account with premium subscription and preferences for MP3 output.", + "Register a user with default free plan and custom processing presets." + ] + }, + "tags": [ + "audio-processing", + "account-management", + "user-registration", + "subscription", + "AI-audio" + ], + "examples": [ + { + "inputJson": "{\"username\":\"audiophile123\",\"email\":\"user@example.com\",\"password\":\"SecurePass!2024\",\"subscriptionPlan\":\"premium\",\"preferences\":{\"defaultAudioFormat\":\"wav\",\"autoNormalize\":true}}", + "description": "Creating a premium user account with WAV format preference and auto normalization enabled." + }, + { + "inputJson": "{\"username\":\"newuser\",\"email\":\"newuser@example.com\",\"password\":\"password123\"}", + "description": "Creating a free-tier account with default preferences." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Account", + "context": null + } + }, + { + "name": "audio-processing.createDatabase", + "description": "Creates a structured audio sample database from provided audio files for easy search, categorization, and retrieval. Accepts audio file paths and metadata, processes audio features for indexing, and outputs a JSON database with organized audio entries.", + "category": "audio-processing", + "parameters": [ + { + "name": "audioFilePaths", + "type": "array", + "description": "Array of strings specifying file paths or URLs of audio files to include in the database.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadataFields", + "type": "array", + "description": "List of metadata field names (e.g. 'artist', 'genre') to associate with each audio entry.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "extractFeatures", + "type": "boolean", + "description": "Whether to automatically extract audio features like tempo, pitch, and timbre for indexing.", + "required": false, + "defaultValue": "true" + }, + { + "name": "databaseName", + "type": "string", + "description": "Name or identifier for the created database.", + "required": false, + "defaultValue": "AudioSampleDB" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output database file (e.g., 'json', 'xml').", + "required": false, + "defaultValue": "json" + } + ], + "returns": { + "type": "object", + "description": "An object representing the audio sample database including entries with audio metadata and extracted features, formatted as specified." + }, + "aiAgent": { + "useCase": "Use this tool when needing to organize a collection of audio files into a searchable and structured format for music production, research, or machine learning tasks. It helps agents build databases that facilitate quick retrieval and analysis of audio samples.", + "limitations": "Cannot analyze audio content beyond feature extraction; does not handle audio editing or transcription. Requires valid audio file inputs accessible to the system.", + "examples": [ + "Create a database from a batch of mp3 files for a music cataloging app.", + "Generate an audio sample database with metadata fields for genre and artist for a music recommendation system.", + "Compile a database of environmental sounds with extracted features for a sound classification AI model." + ] + }, + "tags": [ + "audio-processing", + "database", + "audio-samples", + "feature-extraction", + "indexing", + "metadata", + "music", + "machine-learning" + ], + "examples": [ + { + "inputJson": "{\"audioFilePaths\":[\"/audio/snare.wav\",\"/audio/kick.wav\"],\"metadataFields\":[\"instrument\",\"bpm\"],\"extractFeatures\":true,\"databaseName\":\"drumSamples\",\"outputFormat\":\"json\"}", + "description": "Create a JSON database of drum sample audio files with extracted audio features and metadata fields instrument and bpm." + }, + { + "inputJson": "{\"audioFilePaths\":[\"https://example.com/sound1.mp3\",\"https://example.com/sound2.mp3\"],\"metadataFields\":[],\"extractFeatures\":false,\"databaseName\":\"fieldRecordings\"}", + "description": "Create a database named 'fieldRecordings' from remote audio URLs without extracting features." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Database", + "context": null + } + }, + { + "name": "audio-processing.createServer", + "description": "Creates and configures a dedicated server instance optimized for hosting audio processing pipelines. Accepts parameters defining server capacity, supported audio formats, processing plugins, and network settings. Outputs server initialization results including server ID, status, endpoint URLs, and configuration summary.", + "category": "audio-processing", + "parameters": [ + { + "name": "serverName", + "type": "string", + "description": "Human-readable name for the server instance to identify it in management consoles.", + "required": true, + "defaultValue": "" + }, + { + "name": "maxConcurrentSessions", + "type": "number", + "description": "Maximum number of simultaneous audio processing sessions the server can handle.", + "required": true, + "defaultValue": "10" + }, + { + "name": "supportedFormats", + "type": "array", + "description": "List of audio file formats (e.g., mp3, wav, flac) that the server is configured to process.", + "required": false, + "defaultValue": "[\"mp3\",\"wav\"]" + }, + { + "name": "processingPlugins", + "type": "array", + "description": "Array of audio processing plugin names or identifiers to load on server startup for effects or analysis.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "region", + "type": "string", + "description": "Geographic region or data center location where the server should be deployed (e.g., us-east-1).", + "required": false, + "defaultValue": "us-east-1" + }, + { + "name": "enableAutoScaling", + "type": "boolean", + "description": "Flag to enable automatic scaling of server resources based on load demand.", + "required": false, + "defaultValue": "false" + }, + { + "name": "networkSettings", + "type": "object", + "description": "Custom network configuration parameters such as port mappings, firewall rules, and bandwidth limits.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Object containing serverId, currentStatus, endpointUrls for API access and streaming, and a summary of the effective configuration." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically deploy or configure servers dedicated to audio processing tasks. Ideal for launching scalable infrastructure that supports batch or real-time audio effects, format conversion, or analysis pipelines in a network-accessible environment.", + "limitations": "Does not manage individual audio files or processing jobs. This tool strictly handles server infrastructure setup, not application-level audio manipulations or monitoring.", + "examples": [ + "Create a server named 'MixServer01' that supports mp3 and wav formats with auto-scaling enabled.", + "Deploy an audio processing server with specified plugins for noise reduction and equalization in the eu-west-2 region.", + "Configure a small server instance limited to 5 concurrent sessions for testing purposes." + ] + }, + "tags": [ + "audio", + "server", + "infrastructure", + "deployment", + "processing", + "scalable", + "cloud" + ], + "examples": [ + { + "inputJson": "{\"serverName\":\"MixServer01\",\"maxConcurrentSessions\":20,\"supportedFormats\":[\"mp3\",\"wav\"],\"processingPlugins\":[\"noiseReduction\",\"equalizer\"],\"region\":\"us-west-2\",\"enableAutoScaling\":true}", + "description": "Create a scalable audio processing server named MixServer01 with noise reduction and equalizer plugins in the US West region." + }, + { + "inputJson": "{\"serverName\":\"TestAudioSrv\",\"maxConcurrentSessions\":5,\"supportedFormats\":[\"flac\"],\"enableAutoScaling\":false}", + "description": "Deploy a small test server handling FLAC format without auto-scaling." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Server", + "context": null + } + }, + { + "name": "audio-processing.createDataset", + "description": "Creates a structured audio dataset from supplied audio recordings and associated metadata. Accepts an array of audio file paths or URLs along with optional annotations like transcripts, speaker labels, and tags. Processes inputs to generate a standardized dataset suitable for training or evaluation of audio AI models, outputting metadata in JSON format.", + "category": "audio-processing", + "parameters": [ + { + "name": "audioFiles", + "type": "array", + "description": "List of audio file paths or URLs to include in the dataset", + "required": true, + "defaultValue": "" + }, + { + "name": "annotations", + "type": "object", + "description": "Optional object containing annotations such as transcripts, speaker info, or tags keyed by audio file identifiers", + "required": false, + "defaultValue": "" + }, + { + "name": "sampleRate", + "type": "number", + "description": "Desired sample rate to which audio files should be resampled", + "required": false, + "defaultValue": "16000" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format for the output dataset metadata, e.g., 'JSON', 'CSV'", + "required": false, + "defaultValue": "JSON" + }, + { + "name": "includeWaveforms", + "type": "boolean", + "description": "Whether to include pre-processed waveform data representations in the dataset output", + "required": false, + "defaultValue": "false" + }, + { + "name": "normalizeAudio", + "type": "boolean", + "description": "Whether to normalize audio volumes before creating the dataset", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns a dataset object with metadata for each audio file, including path, duration, sample rate, and linked annotations. Provides summary statistics and paths to processed audio files if normalization or resampling applied." + }, + "aiAgent": { + "useCase": "Use this tool when building a coherent and standardized audio dataset from raw audio files for machine learning tasks like speech recognition, speaker identification, or audio event detection. It helps aggregate audio and annotations into a consistent format ready for model training or testing.", + "limitations": "This tool does not perform speech-to-text transcription or advanced annotation generation; annotations must be pre-provided or generated externally. It also does not host audio files or handle dataset version control.", + "examples": [ + "Create a dataset from a folder of podcast audio files with speaker and transcript annotations to train a speaker diarization model.", + "Generate a dataset of environmental sound clips with tags for different sound types for an audio classification project.", + "Prepare a normalized and resampled dataset of lecture recordings with timestamps and text transcripts for training ASR models." + ] + }, + "tags": [ + "audio", + "dataset", + "machine-learning", + "preprocessing", + "annotation", + "speech", + "normalization" + ], + "examples": [ + { + "inputJson": "{\"audioFiles\":[\"https://example.com/audio1.wav\",\"https://example.com/audio2.wav\"],\"annotations\":{\"audio1\":{\"transcript\":\"Hello world\",\"speaker\":\"Speaker1\"},\"audio2\":{\"transcript\":\"Testing one two\",\"speaker\":\"Speaker2\"}},\"sampleRate\":22050,\"outputFormat\":\"JSON\",\"includeWaveforms\":true,\"normalizeAudio\":true}", + "description": "Create a JSON dataset from two online audio files with transcripts and speaker labels, resampled to 22050Hz with normalization." + }, + { + "inputJson": "{\"audioFiles\":[\"/local/path/sound1.mp3\",\"/local/path/sound2.mp3\"],\"sampleRate\":16000,\"outputFormat\":\"CSV\",\"includeWaveforms\":false,\"normalizeAudio\":false}", + "description": "Generate a CSV report dataset from two local mp3 sound files without waveform data or normalization, using 16kHz sample rate." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dataset", + "context": null + } + }, + { + "name": "audio-processing.createTest", + "description": "This tool generates automated audio processing test cases based on provided audio clips and test criteria. It accepts audio input files along with test specifications such as expected properties (e.g., duration, format, sample rate) and outputs a structured test script in JSON format that can be used to validate audio processing pipelines or software components.", + "category": "audio-processing", + "parameters": [ + { + "name": "audioFilePath", + "type": "string", + "description": "Path or URL to the input audio file to be tested.", + "required": true, + "defaultValue": "" + }, + { + "name": "expectedDurationSeconds", + "type": "number", + "description": "Expected duration of audio in seconds for test validation.", + "required": false, + "defaultValue": "" + }, + { + "name": "expectedSampleRate", + "type": "number", + "description": "Expected sample rate (Hz) of the audio file.", + "required": false, + "defaultValue": "" + }, + { + "name": "expectedChannels", + "type": "number", + "description": "Expected number of audio channels (1 for mono, 2 for stereo, etc.).", + "required": false, + "defaultValue": "" + }, + { + "name": "testName", + "type": "string", + "description": "Custom name for the generated test case.", + "required": false, + "defaultValue": "AudioTestCase" + }, + { + "name": "includeWaveformCheck", + "type": "boolean", + "description": "If true, generate test steps to verify waveform shape consistency.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxTestDurationSeconds", + "type": "number", + "description": "Maximum duration of audio to test; audio longer than this will be truncated for test purposes.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns a JSON object containing a structured automated audio test script including metadata, expected audio properties, and validation steps." + }, + "aiAgent": { + "useCase": "Use this tool when needing to automatically create structured automated test scripts for audio processing components, validating input audio properties and ensuring conformity to expected audio parameters. Ideal for development or QA scenarios where consistent, repeatable audio tests are needed.", + "limitations": "This tool does not perform audio processing or modification itself. It does not validate the correctness of audio content, only properties. It assumes the provided audio input file is accessible and valid.", + "examples": [ + "Create a test case to validate that an uploaded audio file matches a given sample rate and duration.", + "Generate an audio test script with waveform checks for regression testing in an audio SDK.", + "Produce a truncated audio test for a long audio file with expected channel validation." + ] + }, + "tags": [ + "audio", + "testing", + "automation", + "validation", + "audio-processing", + "qa" + ], + "examples": [ + { + "inputJson": "{\"audioFilePath\":\"/samples/test-audio.wav\",\"expectedDurationSeconds\":30,\"expectedSampleRate\":44100,\"expectedChannels\":2,\"testName\":\"StereoAudioTest\",\"includeWaveformCheck\":true}", + "description": "Generates a test script for a stereo audio file expected to be 30 seconds long at 44.1kHz including waveform validation." + }, + { + "inputJson": "{\"audioFilePath\":\"http://example.com/audio/mono-sample.mp3\",\"expectedDurationSeconds\":15,\"expectedChannels\":1,\"testName\":\"MonoAudioShortTest\"}", + "description": "Creates an audio test case for a mono audio sample with 15 seconds duration expected, without waveform checks." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Test", + "context": null + } + }, + { + "name": "audio-processing.createIssue", + "description": "This tool accepts audio files and metadata related to an audio processing bug or feature request and generates a standardized issue report suitable for code repositories or audio processing projects. It analyzes the input details, formats the issue content with relevant outlines, and outputs a structured issue object containing title, description, and reproduction steps.", + "category": "audio-processing", + "parameters": [ + { + "name": "audioFilePath", + "type": "string", + "description": "File path or URL to the audio file that demonstrates the issue or feature request", + "required": true, + "defaultValue": "" + }, + { + "name": "issueType", + "type": "string", + "description": "Type of issue to create, e.g., 'bug', 'feature request', 'improvement'", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Detailed description explaining the problem or feature as observed in the audio processing context", + "required": true, + "defaultValue": "" + }, + { + "name": "stepsToReproduce", + "type": "array", + "description": "Step-by-step instructions to reproduce the issue using the audio file and processing tools", + "required": false, + "defaultValue": "[]" + }, + { + "name": "expectedBehavior", + "type": "string", + "description": "Description of the expected behavior or output from the audio processing system", + "required": false, + "defaultValue": "" + }, + { + "name": "actualBehavior", + "type": "string", + "description": "Description of the actual behavior or output observed", + "required": false, + "defaultValue": "" + }, + { + "name": "priority", + "type": "string", + "description": "Priority level of the issue, e.g., 'low', 'medium', 'high'", + "required": false, + "defaultValue": "medium" + } + ], + "returns": { + "type": "object", + "description": "A structured issue object containing fields such as title, formatted description, issue type, priority, and reproduction steps for use in tracking systems" + }, + "aiAgent": { + "useCase": "Use this tool when a user wants to create a structured and clear issue report related to audio processing code or algorithms. It helps synthesize audio evidence and textual descriptions into standardized issue formats suitable for bug tracking or feature planning.", + "limitations": "This tool cannot fix the issue itself or analyze non-audio issue contexts. It does not integrate directly with issue trackers or version control systems.", + "examples": [ + "Create a bug report for audio clipping issue detected in processed file.", + "Generate a feature request issue for adding noise reduction capability using provided audio sample.", + "Document an improvement issue describing latency delay with reproduction steps." + ] + }, + "tags": [ + "audio-processing", + "issue-creation", + "bug-report", + "feature-request", + "audio-debugging", + "code-management" + ], + "examples": [ + { + "inputJson": "{\"audioFilePath\":\"https://example.com/audio/clipping-sample.wav\",\"issueType\":\"bug\",\"description\":\"Audio clipping occurs at high volumes causing distortion.\",\"stepsToReproduce\":[\"Load audio file.\",\"Increase volume above threshold.\",\"Observe clipping distortion.\"],\"expectedBehavior\":\"Clean audio without distortion.\",\"actualBehavior\":\"Distorted audio with clipping artifacts.\",\"priority\":\"high\"}", + "description": "Creating a bug report for an audio clipping distortion issue in a sample audio file." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Issue", + "context": null + } + }, + { + "name": "image-processing.analyzeEvent", + "description": "Analyzes images from event photographs or videos to detect and extract detailed information about participants, objects, and activities. Accepts image files or URLs as input along with optional metadata to provide an event context-based analysis. Outputs structured data including detected faces, emotions, actions, and object counts relevant to the event.", + "category": "image-processing", + "parameters": [ + { + "name": "imageInput", + "type": "string", + "description": "URL or Base64-encoded string of the event image to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "imageType", + "type": "string", + "description": "Format of the input image (jpeg, png, bmp). Default is jpeg.", + "required": false, + "defaultValue": "jpeg" + }, + { + "name": "eventType", + "type": "string", + "description": "Type of event depicted in the image (e.g., wedding, conference, concert), used to tailor analysis parameters.", + "required": false, + "defaultValue": "" + }, + { + "name": "detectFaces", + "type": "boolean", + "description": "Flag to enable facial detection and recognition analysis.", + "required": false, + "defaultValue": "true" + }, + { + "name": "detectObjects", + "type": "boolean", + "description": "Flag to enable detection and classification of objects relevant to the event.", + "required": false, + "defaultValue": "true" + }, + { + "name": "detectActions", + "type": "boolean", + "description": "Flag to enable action/activity recognition from the image.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxFaces", + "type": "number", + "description": "Maximum number of faces to detect and analyze in the image.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "JSON object containing detected faces with attributes (location, emotions, identity confidence), recognized objects with categories and counts, detected actions, and summary statistics tailored to the event context." + }, + "aiAgent": { + "useCase": "Use this tool to extract rich analytics from event imagery, such as evaluating crowd engagement, participant emotions, and event features from photos or video frames. Ideal for event organizers, marketing teams, or security to gain quick insights without manual image review.", + "limitations": "Cannot reliably recognize specific individuals without prior enrolled facial data. Accuracy depends on image quality and event type context. Not suitable for real-time video stream processing or highly crowded scenes beyond maxFaces limit.", + "examples": [ + "Analyze crowd emotions and face counts in a conference group photo.", + "Detect and count objects such as decorations and equipment in a wedding image.", + "Identify actions like dancing or applause from a concert photograph." + ] + }, + "tags": [ + "image-processing", + "event-analysis", + "facial-recognition", + "object-detection", + "activity-recognition", + "photo-analytics" + ], + "examples": [ + { + "inputJson": "{\"imageInput\":\"https://example.com/images/conference1.jpg\",\"eventType\":\"conference\",\"detectFaces\":true,\"detectObjects\":true,\"detectActions\":false,\"maxFaces\":20}", + "description": "Analyze a conference image URL to detect faces and objects with a higher maxFaces limit." + }, + { + "inputJson": "{\"imageInput\":\"/9j/4AAQSkZJRgABAQEASABIAAD...base64truncated...\",\"imageType\":\"png\",\"eventType\":\"wedding\",\"detectFaces\":true,\"detectObjects\":true,\"detectActions\":true}", + "description": "Analyze a Base64-encoded wedding image with facial, object, and action detection enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Event", + "context": null + } + }, + { + "name": "audio-processing.createAPI", + "description": "Creates a customizable RESTful API endpoint to process audio files. Accepts audio input parameters such as file type, audio data, and desired processing actions (noise reduction, format conversion, volume normalization). Returns an API endpoint URL and documentation to enable integration with external systems for automated audio processing workflows.", + "category": "audio-processing", + "parameters": [ + { + "name": "audioInputFormat", + "type": "string", + "description": "The expected audio input format for the API like 'wav', 'mp3', or 'flac'.", + "required": true, + "defaultValue": "wav" + }, + { + "name": "processingActions", + "type": "array", + "description": "List of processing actions to apply in sequence, e.g., ['noiseReduction', 'normalizeVolume', 'convertFormat'].", + "required": true, + "defaultValue": "[\"noiseReduction\"]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired output audio format after processing, e.g., 'mp3', 'wav'.", + "required": true, + "defaultValue": "mp3" + }, + { + "name": "sampleRate", + "type": "number", + "description": "The sample rate (Hz) to resample audio to during processing, if applicable.", + "required": false, + "defaultValue": "44100" + }, + { + "name": "bitRate", + "type": "number", + "description": "The bit rate (kbps) for output audio encoding, relevant for compressed formats.", + "required": false, + "defaultValue": "128" + }, + { + "name": "enableLogging", + "type": "boolean", + "description": "Whether to enable detailed logging of processing steps and API usage.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated API endpoint URL, endpoint HTTP method, and usage documentation for integration." + }, + "aiAgent": { + "useCase": "Use this tool when an automated, reusable audio processing endpoint is needed to handle audio files programmatically, enabling integration into workflows such as batch editing, online audio services, or dynamic audio transformations without manual intervention.", + "limitations": "This tool generates the API interface and basic audio processing capabilities but does not handle extremely complex audio transformations requiring custom code beyond predefined processing actions.", + "examples": [ + "Create an API for noise reduction and converting wav audio files to mp3 format for batch processing.", + "Generate an API accepting mp3 files to normalize volume and output in 44100Hz wav format.", + "Build an audio processing API that accepts flac uploads and outputs compressed 128kbps mp3 with logging enabled." + ] + }, + "tags": [ + "audio", + "API", + "processing", + "automation", + "conversion", + "normalization", + "noise-reduction" + ], + "examples": [ + { + "inputJson": "{\"audioInputFormat\":\"wav\",\"processingActions\":[\"noiseReduction\",\"convertFormat\"],\"outputFormat\":\"mp3\",\"sampleRate\":44100,\"bitRate\":128,\"enableLogging\":false}", + "description": "Create an API to reduce noise and convert WAV files to MP3 output with standard audio quality." + }, + { + "inputJson": "{\"audioInputFormat\":\"mp3\",\"processingActions\":[\"normalizeVolume\"],\"outputFormat\":\"wav\",\"sampleRate\":44100,\"enableLogging\":true}", + "description": "Generate an API that normalizes volume for MP3 inputs and returns WAV files with logging enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "API", + "context": null + } + }, + { + "name": "audio-processing.createCommit", + "description": "Creates a Git commit representing changes made to audio files or their metadata in a project repository. Accepts diff information or file changes (added, modified, deleted audio assets), commit message, author details, and produces a commit hash and metadata reflecting the audio-focused commit.", + "category": "audio-processing", + "parameters": [ + { + "name": "fileChanges", + "type": "array", + "description": "List of objects describing audio file changes, each including file path, change type (added/modified/deleted), and optional diff data or new audio content reference.", + "required": true, + "defaultValue": "" + }, + { + "name": "commitMessage", + "type": "string", + "description": "Descriptive commit message summarizing the audio changes included in this commit.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "Name of the individual authoring the commit.", + "required": false, + "defaultValue": "" + }, + { + "name": "authorEmail", + "type": "string", + "description": "Email of the commit author.", + "required": false, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted timestamp for the commit time. Defaults to current time if not provided.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the commit hash string, the commit message, the author metadata, timestamp, and a summary of audio files affected." + }, + "aiAgent": { + "useCase": "Use this tool when automating version control commits specifically focused on audio files or assets within a project repository. It helps in creating structured, metadata-rich commits reflecting audio changes like edits, additions, or removals of audio tracks or metadata.", + "limitations": "This tool does not perform audio analysis or editing itself; it only packages and registers changes as version control commits. It requires proper diff or file change information as input.", + "examples": [ + "Create a commit for newly added audio samples with a message describing them.", + "Commit modifications to metadata in existing audio tracks with author information.", + "Register deletion of obsolete audio assets in a batch commit." + ] + }, + "tags": [ + "audio", + "version-control", + "commit", + "code-management", + "audio-assets", + "automation" + ], + "examples": [ + { + "inputJson": "{\"fileChanges\":[{\"filePath\":\"/sounds/effect1.wav\",\"changeType\":\"added\"}],\"commitMessage\":\"Add new sound effect 'effect1.wav'\",\"authorName\":\"Jane Doe\",\"authorEmail\":\"jane@example.com\",\"timestamp\":\"2024-06-10T15:30:00Z\"}", + "description": "Creates a commit adding a new audio file named 'effect1.wav'." + }, + { + "inputJson": "{\"fileChanges\":[{\"filePath\":\"/music/theme.mp3\",\"changeType\":\"modified\"}],\"commitMessage\":\"Update background theme music with new mix\",\"authorName\":\"GameDev\",\"authorEmail\":\"gamedev@example.com\"}", + "description": "Commits modifications to an existing audio track with author metadata, timestamp defaults to now." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Commit", + "context": null + } + }, + { + "name": "audio-processing.createContract", + "description": "This tool accepts audio recordings containing spoken contract terms, processes the audio to transcribe and analyze the content using AI to extract key contractual clauses and structured information, then generates a formal, readable contract document as text output.", + "category": "audio-processing", + "parameters": [ + { + "name": "audioFileUrl", + "type": "string", + "description": "URL of the audio file containing the spoken contract terms.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The language spoken in the audio recording (e.g., 'en' for English).", + "required": false, + "defaultValue": "en" + }, + { + "name": "contractType", + "type": "string", + "description": "Type of contract to generate (e.g., 'NDA', 'Service Agreement').", + "required": false, + "defaultValue": "" + }, + { + "name": "includeClauses", + "type": "array", + "description": "Specific clauses to ensure inclusion in the generated contract.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format for the generated contract output ('text', 'pdf').", + "required": false, + "defaultValue": "text" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated contract document text, metadata about extracted clauses, and a summary of the contract's key terms." + }, + "aiAgent": { + "useCase": "Use this tool when provided with an audio recording of contract negotiation or spoken contract terms, to automatically generate a formal contract document capturing those terms clearly and accurately. Ideal for speeding up contract drafting from voice discussions.", + "limitations": "Cannot replace legal advice or validate contract enforceability; accuracy depends on audio quality and clarity of spoken terms; may need human review before signing.", + "examples": [ + "Generate a service agreement from this recorded negotiation meeting.", + "Create a contract from the client describing terms orally in this audio file.", + "Produce a formal NDA based on the verbal agreement captured in this recording." + ] + }, + "tags": [ + "audio-processing", + "contract-generation", + "transcription", + "legal", + "document-creation", + "AI", + "audio-to-text" + ], + "examples": [ + { + "inputJson": "{\"audioFileUrl\":\"https://example.com/audio/contract_discussion_en.mp3\",\"language\":\"en\",\"contractType\":\"Service Agreement\",\"includeClauses\":[\"confidentiality\",\"payment terms\"],\"outputFormat\":\"text\"}", + "description": "Create a service agreement contract in text from an English audio recording including confidentiality and payment clauses." + }, + { + "inputJson": "{\"audioFileUrl\":\"https://example.com/audio/nda_negotiation.mp3\",\"language\":\"en\",\"contractType\":\"NDA\",\"outputFormat\":\"pdf\"}", + "description": "Generate a NDA contract PDF from a recorded negotiation audio in English." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Contract", + "context": null + } + }, + { + "name": "image-processing.analyzeSentence", + "description": "Analyzes an image containing a sentence to extract and interpret the textual content and its visual properties. Accepts an image file or URL with text, performs optical character recognition (OCR), and analyzes font style, size, orientation, and layout. Returns recognized text and detailed typography analysis.", + "category": "image-processing", + "parameters": [ + { + "name": "imageSource", + "type": "string", + "description": "URL or base64-encoded string of the image containing the sentence to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code for OCR processing to improve text recognition accuracy.", + "required": false, + "defaultValue": "en" + }, + { + "name": "detectOrientation", + "type": "boolean", + "description": "Whether to detect and correct text orientation in the image before analysis.", + "required": false, + "defaultValue": "true" + }, + { + "name": "analyzeFontProperties", + "type": "boolean", + "description": "Whether to analyze font properties like style, size, and weight in the image.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the extracted sentence text and typography details such as font style, size, weight, text orientation, and position within the image." + }, + "aiAgent": { + "useCase": "Use this tool when you have an image containing a sentence and need to extract the text along with detailed font and layout information for applications like document digitization, graphic analysis, or accessibility enhancements.", + "limitations": "This tool cannot understand semantic meaning beyond the extracted text or analyze sentences embedded in complex backgrounds with very low contrast or heavy distortions. It is limited to single or multiline sentence extraction in a reasonably clear image.", + "examples": [ + "Extract the sentence and font style from this scanned page image.", + "Analyze the text orientation and font size of the sentence in the image URL.", + "Perform OCR and font analysis on an image containing a sentence in French." + ] + }, + "tags": [ + "image-processing", + "OCR", + "text-extraction", + "typography", + "sentence-analysis" + ], + "examples": [ + { + "inputJson": "{\"imageSource\":\"https://example.com/sample-sentence-image.jpg\",\"language\":\"en\",\"detectOrientation\":true,\"analyzeFontProperties\":true}", + "description": "Analyze an English sentence image from a URL, detecting orientation and font properties." + }, + { + "inputJson": "{\"imageSource\":\"data:image/png;base64,iVBORw0KGgoAAAANS...\",\"language\":\"fr\",\"detectOrientation\":false,\"analyzeFontProperties\":true}", + "description": "Input base64 PNG image containing a French sentence for text extraction and font analysis without orientation correction." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Sentence", + "context": null + } + }, + { + "name": "image-processing.analyzeLead", + "description": "Analyzes an image of a business lead document or business card to extract and evaluate key lead information such as contact details, company name, role, and lead quality indicators. Input accepts image files (JPEG, PNG) or base64 encoded images. Processing includes OCR text extraction, data parsing, and lead quality scoring based on configurable criteria. Output is structured lead data with confidence scores and quality metrics.", + "category": "image-processing", + "parameters": [ + { + "name": "imageData", + "type": "string", + "description": "Base64 encoded image data or URL of the image to analyze for lead information.", + "required": true, + "defaultValue": "" + }, + { + "name": "imageFormat", + "type": "string", + "description": "Image format of the input data, e.g., jpeg or png. Helps optimize processing.", + "required": false, + "defaultValue": "jpeg" + }, + { + "name": "language", + "type": "string", + "description": "Language of the text in the image for OCR accuracy, using ISO 639-1 code (e.g., 'en').", + "required": false, + "defaultValue": "en" + }, + { + "name": "qualityThreshold", + "type": "number", + "description": "Minimum confidence threshold (0-1) to consider extracted lead data as reliable.", + "required": false, + "defaultValue": "0.75" + }, + { + "name": "extractFields", + "type": "array", + "description": "List of lead data fields to extract and analyze, such as ['name', 'phone', 'email', 'company', 'role'].", + "required": false, + "defaultValue": "[\"name\",\"phone\",\"email\",\"company\",\"role\"]" + }, + { + "name": "evaluateLeadQuality", + "type": "boolean", + "description": "Flag to enable scoring of the lead quality based on completeness and content relevance.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing structured lead data extracted from the image, each with confidence scores, plus an overall lead quality score if enabled." + }, + "aiAgent": { + "useCase": "Use this tool when given an image of a business card, lead form, or other lead-related documents, and you need to automatically extract structured contact information and evaluate lead quality for CRM or marketing use. It automates tedious manual data entry and preliminary lead filtering.", + "limitations": "The tool depends on the quality and clarity of the input image; poor image quality or unusual layouts may reduce accuracy. It does not perform full identity verification or detect fraudulent leads.", + "examples": [ + "Extract the contact details and company information from this scanned business card.", + "Analyze this image of a lead form to parse the lead's information and score its quality.", + "Given a photo of a conference attendee badge, extract all possible lead info for CRM entry." + ] + }, + "tags": [ + "image-analysis", + "business", + "lead-extraction", + "OCR", + "contact-info", + "crm", + "marketing" + ], + "examples": [ + { + "inputJson": "{\"imageData\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...\",\"imageFormat\":\"png\",\"language\":\"en\",\"extractFields\":[\"name\",\"email\",\"phone\"],\"evaluateLeadQuality\":true}", + "description": "Analyze a base64 encoded PNG image of a business card extracting name, email, phone, and scoring lead quality." + }, + { + "inputJson": "{\"imageData\":\"https://example.com/images/lead_form.jpg\",\"imageFormat\":\"jpeg\",\"language\":\"en\",\"qualityThreshold\":0.8}", + "description": "Analyze a lead capture form image by URL with a high confidence threshold for data reliability." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Lead", + "context": null + } + }, + { + "name": "image-processing.analyzeAlert", + "description": "Analyzes security alert images such as screenshots or video frames capturing alert messages or warning icons. It identifies alert types, extracts relevant text via OCR, detects severity levels, and outputs a structured summary including alert classification, extracted text, and confidence scores. Input is an image file or URL.", + "category": "image-processing", + "parameters": [ + { + "name": "imageUrl", + "type": "string", + "description": "URL of the image containing the security alert to analyze.", + "required": false, + "defaultValue": "" + }, + { + "name": "imageBase64", + "type": "string", + "description": "Base64-encoded image data containing the alert. Used if imageUrl not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code for OCR text recognition (e.g., 'en', 'es').", + "required": false, + "defaultValue": "en" + }, + { + "name": "detectSeverity", + "type": "boolean", + "description": "Flag to detect and classify alert severity (e.g., info, warning, critical).", + "required": false, + "defaultValue": "true" + }, + { + "name": "returnConfidenceScores", + "type": "boolean", + "description": "Whether to include confidence scores for detected fields in the output.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the detected alert type, extracted text content, severity classification (if requested), and confidence scores for each detected element." + }, + "aiAgent": { + "useCase": "Use this tool when you have images containing security alerts—such as screenshots of alert popups, notification banners, or warning icons—and need to automatically interpret the alert type, extract displayed messages, and assess severity to inform security workflows or incident response automation.", + "limitations": "This tool cannot detect alerts that are not visually represented in the image, nor can it comprehend context beyond the visible alert content. Accuracy depends on image quality and clarity. It does not resolve semantic ambiguities beyond OCR and predefined alert categories.", + "examples": [ + "Analyze an image showing a Red Critical alert popup from a security monitoring dashboard.", + "Extract warning messages and severity levels from security alert screenshots to automate ticket classification.", + "Detect and extract text from an alert banner in a surveillance video frame for real-time security monitoring." + ] + }, + "tags": [ + "image-processing", + "security", + "alert-detection", + "OCR", + "severity-classification", + "incident-response" + ], + "examples": [ + { + "inputJson": "{\"imageUrl\":\"https://example.com/alert_screenshot.png\",\"language\":\"en\",\"detectSeverity\":true,\"returnConfidenceScores\":true}", + "description": "Analyze a security alert screenshot from a dashboard URL to extract text and classify alert severity." + }, + { + "inputJson": "{\"imageBase64\":\"iVBORw0KGgoAAAANSUhEUgAAAAUA...\",\"language\":\"en\",\"detectSeverity\":false}", + "description": "Analyze base64 encoded image containing an alert but only extract text without severity classification." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Alert", + "context": null + } + }, + { + "name": "image-processing.downloadReport", + "description": "Downloads a detailed report of the image processing analysis performed on one or multiple images. Accepts image analysis session identifiers or image URLs, compiles data such as detected features, edits history, and metadata, then generates a downloadable report in PDF or CSV format summarizing the image processing results.", + "category": "image-processing", + "parameters": [ + { + "name": "sessionIds", + "type": "array", + "description": "An array of image processing session identifiers to include in the report generation, required if imageUrls is empty.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "imageUrls", + "type": "array", + "description": "An array of image URLs to analyze and include in the report if sessionIds are not provided.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "reportFormat", + "type": "string", + "description": "Format of the downloaded report file; supported values are 'pdf' or 'csv'.", + "required": true, + "defaultValue": "pdf" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include image metadata such as resolution, color profile, and EXIF data in the report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeChangeHistory", + "type": "boolean", + "description": "Include the history of edits performed on the image(s) if available.", + "required": false, + "defaultValue": "true" + }, + { + "name": "saveToPath", + "type": "string", + "description": "Optional file path to save the downloaded report locally; if empty, returns file content as output.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the report file content as a base64 string and its filename, or confirmation of saving if a path was provided." + }, + "aiAgent": { + "useCase": "Use this tool to retrieve a comprehensive report summarizing image processing analyses, edits, and metadata for auditing or documentation purposes. Ideal when needing a consolidated report of one or multiple images processed via sessions or direct URLs, delivered in standard document formats.", + "limitations": "Cannot generate reports without any valid session identifiers or image URLs. Does not perform image analysis itself, only compiles and downloads existing analysis data. Maximum file size limits may restrict very large reports.", + "examples": [ + "Download a PDF report of edits and metadata for image session IDs ['sess123', 'sess456'].", + "Generate a CSV report from a list of image URLs with metadata omitted.", + "Save a detailed PDF report locally for audit purposes using provided session identifiers." + ] + }, + "tags": [ + "image-processing", + "report-generation", + "download", + "pdf", + "csv", + "metadata", + "image-analysis" + ], + "examples": [ + { + "inputJson": "{\"sessionIds\":[\"sess123\",\"sess456\"],\"reportFormat\":\"pdf\",\"includeMetadata\":true,\"includeChangeHistory\":true}", + "description": "Download a detailed PDF report for two image processing sessions including metadata and edit history." + }, + { + "inputJson": "{\"imageUrls\":[\"https://example.com/image1.jpg\",\"https://example.com/image2.jpg\"],\"reportFormat\":\"csv\",\"includeMetadata\":false,\"includeChangeHistory\":false}", + "description": "Generate a CSV report from two image URLs without metadata or edit history." + }, + { + "inputJson": "{\"sessionIds\":[\"sess789\"],\"reportFormat\":\"pdf\",\"saveToPath\":\"/tmp/report.pdf\"}", + "description": "Save a PDF report locally for a single image processing session." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Report", + "context": null + } + }, + { + "name": "image-processing.analyzeCSV", + "description": "This tool accepts a CSV file containing image metadata or numerical pixel data arranged in rows and columns. It processes the CSV to compute statistical analyses such as mean, median, standard deviation for numeric columns, identify data distribution patterns, and detect anomalies or outliers in the data. The output is a structured summary report in JSON format highlighting key statistics and insights derived from the CSV image-related data.", + "category": "image-processing", + "parameters": [ + { + "name": "csvContent", + "type": "string", + "description": "The raw CSV data as a string to be analyzed, expected to contain numerical or categorical data related to images.", + "required": true, + "defaultValue": "" + }, + { + "name": "delimiter", + "type": "string", + "description": "Character used to separate columns in the CSV data, default is comma (,).", + "required": false, + "defaultValue": "," + }, + { + "name": "hasHeader", + "type": "boolean", + "description": "Indicates whether the CSV contains a header row with column names.", + "required": false, + "defaultValue": "true" + }, + { + "name": "analysisColumns", + "type": "array", + "description": "Optional list of column names or indices in the CSV to be specifically analyzed. If empty or omitted, all numerical columns are analyzed.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "detectOutliers", + "type": "boolean", + "description": "If true, the tool will detect and report outliers for numerical data columns.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing summary statistics per column including count, mean, median, standard deviation, min, max, and detected outliers (if requested). Also includes overall data quality notes and any detected anomalies." + }, + "aiAgent": { + "useCase": "Use this tool when you have image-related datasets exported as CSV and want to quickly extract statistical insights and detect anomalies within the tabular data for further image processing or quality assurance. It's ideal for analyzing pixel intensity distributions, metadata trends, or experimental image data metrics without manual spreadsheet processing.", + "limitations": "This tool does not analyze the raw image files or visual contents themselves. It requires CSV-formatted tabular data. It cannot handle non-numeric imaging formats or perform image recognition or feature extraction.", + "examples": [ + "Analyze a CSV file containing pixel intensity values from multiple images to understand their distribution and identify any anomalies.", + "Provide a summary analysis of image metadata CSV export including date, camera settings, and focus metrics.", + "Detect outliers in numerical columns of a CSV containing processed image features for quality control." + ] + }, + "tags": [ + "analysis", + "CSV", + "image metadata", + "statistics", + "outlier detection", + "data quality" + ], + "examples": [ + { + "inputJson": "{\"csvContent\":\"id,intensity,exposure\\n1,120,0.01\\n2,130,0.01\\n3,125,0.02\\n4,500,0.01\",\"delimiter\":\",\",\"hasHeader\":true,\"analysisColumns\":[\"intensity\"],\"detectOutliers\":true}", + "description": "Analyze intensity values to find summary statistics and identify the outlier value 500." + }, + { + "inputJson": "{\"csvContent\":\"frame,brightness,contrast\\n1,0.5,0.7\\n2,0.55,0.73\\n3,0.52,0.71\\n4,0.6,0.69\",\"delimiter\":\",\",\"hasHeader\":true,\"analysisColumns\":[],\"detectOutliers\":false}", + "description": "Perform a summary statistical analysis on all numeric columns (brightness and contrast)." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "CSV", + "context": null + } + }, + { + "name": "image-processing.analyzeOrder", + "description": "Analyzes scanned or photographed order documents to extract key order information such as order number, customer name, item list, quantities, prices, and total amounts. Accepts images in common formats and uses OCR and layout analysis to output structured order data for downstream processing.", + "category": "image-processing", + "parameters": [ + { + "name": "imageData", + "type": "string", + "description": "Base64-encoded image data of the order document to analyze (required)", + "required": true, + "defaultValue": "" + }, + { + "name": "imageFormat", + "type": "string", + "description": "Format of the image data, e.g. 'png', 'jpeg' (optional, default is 'jpeg')", + "required": false, + "defaultValue": "jpeg" + }, + { + "name": "language", + "type": "string", + "description": "Language code for OCR processing (e.g., 'en' for English) to improve text recognition accuracy (optional)", + "required": false, + "defaultValue": "en" + }, + { + "name": "extractLineItems", + "type": "boolean", + "description": "Flag to enable extraction of detailed line items from the order (optional, default true)", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Structured JSON object including extracted orderNumber, customerName, orderDate, lineItems array with product, quantity, price, and totalAmount" + }, + "aiAgent": { + "useCase": "Use this tool when you have an image of a business order and need to convert it into structured data automatically. It helps automate order processing, reduce manual data entry, and integrate with inventory or billing systems by extracting key information from scanned or photographed order documents.", + "limitations": "This tool is designed for reasonably clean and legible order documents; it may struggle with poor image quality, unusual layouts, or handwritten orders.", + "examples": [ + "Extract order data from a photographed purchase order received via email.", + "Parse scanned order forms to automate invoice creation.", + "Identify and verify customer and order details from faxed order documents." + ] + }, + "tags": [ + "image-processing", + "OCR", + "order-processing", + "document-analysis", + "automation", + "business" + ], + "examples": [ + { + "inputJson": "{\"imageData\":\"\",\"imageFormat\":\"jpeg\",\"language\":\"en\",\"extractLineItems\":true}", + "description": "Analyze a clear JPEG photo of an English-language purchase order with line items." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Order", + "context": null + } + }, + { + "name": "image-processing.analyzeNotification", + "description": "Analyzes images of notifications (such as push notifications or alert banners) to extract key information including text content, style, icon presence, and urgency indicators. Accepts an image file or URL and returns structured data about the notification's textual content, visual features, and inferred notification type.", + "category": "image-processing", + "parameters": [ + { + "name": "imageData", + "type": "string", + "description": "Base64-encoded image data or URL of the notification image to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code to guide text extraction and recognition (e.g., 'en', 'es').", + "required": false, + "defaultValue": "en" + }, + { + "name": "detectUrgency", + "type": "boolean", + "description": "Whether to analyze visual cues for urgency or priority indicators in the notification.", + "required": false, + "defaultValue": "true" + }, + { + "name": "detectIcons", + "type": "boolean", + "description": "Whether to detect presence of icons or logos within the notification image.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing extracted text, a list of detected icons, style features, layout metadata, and an urgency score indicating the notification priority." + }, + "aiAgent": { + "useCase": "Use this tool when needing to analyze images of digital notifications to extract meaningful structured information such as alert text, icons, style, and urgency to programmatically understand or categorize notification content from screenshots or UI snapshots.", + "limitations": "Cannot guarantee perfect OCR accuracy on complex or stylized text. May not reliably identify all icon types or subtle visual cues if image quality is low or notifications are highly customized.", + "examples": [ + "Extract the message and urgency from this screenshot of a push notification.", + "Identify and list icons present in an alert banner image.", + "Analyze the notification image to retrieve the text and determine if it indicates a critical alert." + ] + }, + "tags": [ + "image-analysis", + "notification", + "OCR", + "UI", + "alert", + "visual-features", + "icon-detection" + ], + "examples": [ + { + "inputJson": "{\"imageData\":\"https://example.com/notification1.png\",\"language\":\"en\",\"detectUrgency\":true,\"detectIcons\":true}", + "description": "Analyze a notification image URL to extract text, detect icons, and assess urgency." + }, + { + "inputJson": "{\"imageData\":\"iVBORw0KGgoAAAANSUhEUgAAAAUA...\",\"language\":\"en\",\"detectUrgency\":false,\"detectIcons\":true}", + "description": "Analyze a Base64 encoded notification screenshot focusing on icon detection but not urgency." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Notification", + "context": null + } + }, + { + "name": "image-processing.uploadReport", + "description": "This tool accepts an image file along with an associated textual report describing image analysis results or annotations. It uploads both image data and report content to a centralized system for storage and further review. Input includes image binary or base64 string and a structured report object. Output confirms successful upload with a unique report ID and timestamp.", + "category": "image-processing", + "parameters": [ + { + "name": "imageData", + "type": "string", + "description": "Base64-encoded string or URL of the image file to be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "reportContent", + "type": "object", + "description": "Structured object containing textual analysis, annotations, and metadata related to the image.", + "required": true, + "defaultValue": "" + }, + { + "name": "reportTitle", + "type": "string", + "description": "Title of the report describing the image.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "Name of the person or system submitting the report.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Optional tags to categorize or classify the image report.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted date-time string indicating when the image/report was created or analyzed.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing a unique identifier for the uploaded report, confirmation status, and upload timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when you need to upload an image along with a detailed, structured report describing analysis results or annotations. It supports scenarios where images and reports need to be archived or made accessible centrally for review or compliance. Ideal for quality inspection, medical imaging reports, or scientific image documentation workflows.", + "limitations": "Does not perform analysis of image content itself; requires pre-prepared reports. Image upload size or format limitations depend on underlying system constraints.", + "examples": [ + "Upload a microscope image with its laboratory report for patient diagnostics.", + "Submit a quality control image and inspection report from an assembly line.", + "Archive a satellite image together with its annotated environmental impact analysis." + ] + }, + "tags": [ + "image", + "upload", + "report", + "analysis", + "annotation", + "documentation", + "storage" + ], + "examples": [ + { + "inputJson": "{\"imageData\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA...\",\"reportContent\":{\"summary\":\"Image shows clear defect in sample\",\"annotations\":[{\"label\":\"defect\",\"coordinates\":[100,200,150,250]}]},\"reportTitle\":\"Sample Defect Inspection\",\"authorName\":\"QA Inspector\",\"tags\":[\"inspection\",\"defect\"],\"timestamp\":\"2024-06-01T10:30:00Z\"}", + "description": "Upload a quality control inspection image with a report highlighting defects." + }, + { + "inputJson": "{\"imageData\":\"https://example.com/medical_images/image123.jpg\",\"reportContent\":{\"diagnosis\":\"No abnormalities detected\",\"notes\":\"Image taken from MRI scan on patient X\"},\"reportTitle\":\"MRI Scan Report\",\"authorName\":\"Dr. Smith\",\"tags\":[\"medical\",\"MRI\"],\"timestamp\":\"2024-05-30T14:00:00Z\"}", + "description": "Upload a medical MRI image along with diagnostic report for patient record." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Report", + "context": null + } + }, + { + "name": "image-processing.sendMessage", + "description": "Sends a multimedia message containing images and optional text to specified recipients via supported messaging platforms. Accepts image files or URLs, message text, and recipient contact information, then delivers the composed message and returns the delivery status and message ID.", + "category": "image-processing", + "parameters": [ + { + "name": "images", + "type": "array", + "description": "Array of image files (as base64 strings or URLs) to include in the message.", + "required": true, + "defaultValue": "" + }, + { + "name": "messageText", + "type": "string", + "description": "Optional textual content to accompany the images.", + "required": false, + "defaultValue": "" + }, + { + "name": "recipientContacts", + "type": "array", + "description": "Array of recipient identifiers such as phone numbers or email addresses to send the message to.", + "required": true, + "defaultValue": "" + }, + { + "name": "platform", + "type": "string", + "description": "The messaging platform to use (e.g., WhatsApp, SMS, Email).", + "required": false, + "defaultValue": "\"WhatsApp\"" + }, + { + "name": "priority", + "type": "string", + "description": "Priority level of the message delivery (e.g., normal, high).", + "required": false, + "defaultValue": "\"normal\"" + } + ], + "returns": { + "type": "object", + "description": "An object containing the status of each message sent and unique message IDs for tracking purposes." + }, + "aiAgent": { + "useCase": "Use this tool when needing to send images bundled with text as a message through various communication platforms. Useful for automating alerts, marketing campaigns, or image sharing directly from image processing workflows.", + "limitations": "Cannot handle synchronizing message reads or replies, nor can it modify images prior to sending. The tool depends on platform support and user credentials handled externally.", + "examples": [ + "Send product images with descriptions to a list of customers via WhatsApp.", + "Distribute event photos to participants by SMS with personalized text.", + "Send an image alert with critical information as a high priority message through Email." + ] + }, + "tags": [ + "image-processing", + "messaging", + "communication", + "multimedia", + "automation" + ], + "examples": [ + { + "inputJson": "{\"images\":[\"https://example.com/image1.jpg\",\"https://example.com/image2.jpg\"],\"messageText\":\"Here are the latest product photos.\",\"recipientContacts\":[\"+1234567890\",\"+0987654321\"],\"platform\":\"WhatsApp\",\"priority\":\"normal\"}", + "description": "Sends two images with a text message to two WhatsApp contacts." + }, + { + "inputJson": "{\"images\":[\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA...\"],\"messageText\":\"Event photos attached.\",\"recipientContacts\":[\"+1122334455\"],\"platform\":\"SMS\",\"priority\":\"high\"}", + "description": "Sends a base64 encoded image and high priority text message to one SMS recipient." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Message", + "context": null + } + }, + { + "name": "image-processing.renderFile", + "description": "Renders an image file by applying optional transformations such as resizing, format conversion, and compression. Accepts common image file formats as input and outputs a processed image file according to specified parameters, enabling customized image rendering for various applications.", + "category": "image-processing", + "parameters": [ + { + "name": "inputFilePath", + "type": "string", + "description": "Local path or URL of the image file to be rendered.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output image format (e.g., 'jpeg', 'png', 'webp').", + "required": false, + "defaultValue": "jpeg" + }, + { + "name": "resizeWidth", + "type": "number", + "description": "Width in pixels to resize the image. If omitted, original width is preserved.", + "required": false, + "defaultValue": "" + }, + { + "name": "resizeHeight", + "type": "number", + "description": "Height in pixels to resize the image. If omitted, original height is preserved.", + "required": false, + "defaultValue": "" + }, + { + "name": "quality", + "type": "number", + "description": "Compression quality for lossy formats (1-100). Higher means better quality, larger file size.", + "required": false, + "defaultValue": "80" + }, + { + "name": "preserveAspectRatio", + "type": "boolean", + "description": "Whether to maintain the aspect ratio when resizing the image. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFilePath", + "type": "string", + "description": "Local path where the rendered image will be saved. If omitted, a default path is generated.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the path to the rendered image file and metadata such as final dimensions, file size, and format." + }, + "aiAgent": { + "useCase": "Use this tool when you need to process or transform an existing image file by resizing, changing format, or adjusting quality before delivering, displaying, or saving it. Suitable for image optimization, rendering thumbnails, or preparing images for specific platforms.", + "limitations": "Does not support vector file rendering, complex image editing like filters or compositing, or animations. Limited to standard raster image files with basic transformations.", + "examples": [ + "Render an input PNG to a resized JPEG with 80 quality, maintaining aspect ratio.", + "Convert a TIFF image to a high-quality PNG without resizing.", + "Generate a resized webp thumbnail from a large JPEG image." + ] + }, + "tags": [ + "image-processing", + "render", + "file", + "resize", + "format-conversion", + "compression", + "optimization" + ], + "examples": [ + { + "inputJson": "{\"inputFilePath\":\"/input/photos/picture.png\",\"outputFormat\":\"jpeg\",\"resizeWidth\":800,\"resizeHeight\":600,\"quality\":75,\"preserveAspectRatio\":true,\"outputFilePath\":\"/output/photos/picture_resized.jpeg\"}", + "description": "Resize and convert a PNG image to JPEG format with specific dimensions and quality, preserving aspect ratio." + }, + { + "inputJson": "{\"inputFilePath\":\"/images/raw_scan.tiff\",\"outputFormat\":\"png\",\"quality\":100,\"preserveAspectRatio\":true}", + "description": "Convert a TIFF scan to PNG format at maximum quality without resizing." + }, + { + "inputJson": "{\"inputFilePath\":\"https://example.com/image.jpg\",\"outputFormat\":\"webp\",\"resizeWidth\":200,\"preserveAspectRatio\":true}", + "description": "Download an image from a URL and generate a small webp thumbnail keeping aspect ratio." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "File", + "context": null + } + }, + { + "name": "image-processing.renderDocument", + "description": "Renders a document image file into various output formats with options for resizing, cropping, and applying filters. Accepts input images in common formats (JPEG, PNG, TIFF), applies specified transformations, and outputs a processed image suitable for display or printing.", + "category": "image-processing", + "parameters": [ + { + "name": "inputImage", + "type": "string", + "description": "Base64-encoded image data or URL of the document image to render.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output image format: e.g., 'png', 'jpeg', 'tiff'.", + "required": true, + "defaultValue": "png" + }, + { + "name": "resizeWidth", + "type": "number", + "description": "Width in pixels to resize the output image. If omitted, original width is kept.", + "required": false, + "defaultValue": "" + }, + { + "name": "resizeHeight", + "type": "number", + "description": "Height in pixels to resize the output image. If omitted, original height is kept.", + "required": false, + "defaultValue": "" + }, + { + "name": "cropArea", + "type": "object", + "description": "Cropping rectangle with properties: x (number), y (number), width (number), height (number).", + "required": false, + "defaultValue": "" + }, + { + "name": "applyGrayscale", + "type": "boolean", + "description": "Whether to convert the image to grayscale.", + "required": false, + "defaultValue": "false" + }, + { + "name": "applyContrastEnhancement", + "type": "boolean", + "description": "Whether to enhance the contrast of the image.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the rendered document image encoded as a base64 string and the output format used." + }, + "aiAgent": { + "useCase": "Use this tool when needing to convert raw document images into standardized formats with optional processing such as resizing, cropping, and enhancing contrast or applying grayscale for improved readability or further analysis. Ideal for document image preprocessing before OCR or archival.", + "limitations": "Cannot perform OCR or recognize text content; image quality depends on original input resolution; complex image corrections like perspective warp or noise removal are not supported.", + "examples": [ + "Render a scanned document image from URL to a 1024x768 PNG grayscale image with enhanced contrast.", + "Crop a document photo to a specified rectangle and output as JPEG.", + "Resize an input TIFF document image to 600x800 retaining color." + ] + }, + "tags": [ + "image-processing", + "document", + "rendering", + "image-format", + "preprocessing", + "cropping", + "resizing", + "filters" + ], + "examples": [ + { + "inputJson": "{\"inputImage\":\"https://example.com/scanned_doc.jpg\",\"outputFormat\":\"png\",\"resizeWidth\":1024,\"resizeHeight\":768,\"applyGrayscale\":true,\"applyContrastEnhancement\":true}", + "description": "Render a scanned document from URL to a 1024x768 PNG grayscale with enhanced contrast." + }, + { + "inputJson": "{\"inputImage\":\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...\",\"outputFormat\":\"jpeg\",\"cropArea\":{\"x\":100,\"y\":50,\"width\":800,\"height\":1200}}", + "description": "Crop a base64 JPEG document image to the specified rectangle and output as JPEG." + }, + { + "inputJson": "{\"inputImage\":\"https://example.com/document.tiff\",\"outputFormat\":\"png\",\"resizeWidth\":600,\"resizeHeight\":800}", + "description": "Resize a TIFF document image from URL to 600x800 PNG." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Document", + "context": null + } + }, + { + "name": "image-processing.draftEmail", + "description": "This tool accepts image data containing photos, scanned documents, or screenshots and analyzes visual content to automatically generate a draft email text. It extracts relevant information such as text via OCR, contextual cues, and key details from images to compose a clear, concise email body, including subject suggestions and recipients if detected. The output is a structured draft email ready for review and sending.", + "category": "image-processing", + "parameters": [ + { + "name": "imageData", + "type": "string", + "description": "Base64-encoded string or URL of the image to process for email drafting.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en', 'fr') to use for OCR and email drafting.", + "required": false, + "defaultValue": "en" + }, + { + "name": "maxEmailLength", + "type": "number", + "description": "Maximum length in characters for the drafted email body to keep it concise.", + "required": false, + "defaultValue": "1000" + }, + { + "name": "includeSubjectSuggestion", + "type": "boolean", + "description": "Whether to generate an email subject line suggestion based on image content.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeRecipientDetection", + "type": "boolean", + "description": "Whether to attempt detecting recipient information (emails, names) from the image.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the drafted email text, optional subject suggestion, and detected recipients." + }, + "aiAgent": { + "useCase": "Use this tool when an input image contains information (such as scanned notes, screenshots, or photos of documents) that needs to be converted into a draft email, automating time-consuming manual email composition. It is ideal for scenarios like extracting meeting notes, invoice queries, or image-based memos to generate professional email drafts for user review and sending.", + "limitations": "The tool cannot directly send emails or access email accounts. It relies on image quality for OCR accuracy and may not interpret ambiguous or highly artistic images correctly. It does not replace full email clients or handle complex email formatting.", + "examples": [ + "Draft an email from the attached photo of meeting notes to send to my team.", + "Generate a draft email based on this scanned document image requesting invoice clarification.", + "Create an email draft from this screenshot of a complaint with extracted recipient info if available." + ] + }, + "tags": [ + "image processing", + "email drafting", + "OCR", + "automation", + "communication" + ], + "examples": [ + { + "inputJson": "{\"imageData\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA...\",\"language\":\"en\",\"includeSubjectSuggestion\":true,\"includeRecipientDetection\":true}", + "description": "Draft an email using a base64 PNG image of meeting notes with subject and recipient detection enabled." + }, + { + "inputJson": "{\"imageData\":\"https://example.com/scanned-invoice.jpg\",\"language\":\"en\",\"maxEmailLength\":500,\"includeSubjectSuggestion\":true}", + "description": "Create a concise email draft from a scanned invoice image URL requesting clarification, including a subject suggestion." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Email", + "context": null + } + }, + { + "name": "image-processing.draftDocument", + "description": "This tool takes one or multiple images of documents as input, applies image processing techniques to enhance readability and layout, and drafts a clean, structured digital document output such as a PDF or a formatted image file. It supports optional cropping, deskewing, and noise reduction to produce professional digital drafts from scanned or photographed documents.", + "category": "image-processing", + "parameters": [ + { + "name": "inputImages", + "type": "array", + "description": "Array of image file paths or base64 strings representing the document pages to process.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format for the drafted document, e.g., 'pdf' or 'png'.", + "required": false, + "defaultValue": "pdf" + }, + { + "name": "applyDeskew", + "type": "boolean", + "description": "Whether to automatically correct skewed document images to straighten text lines.", + "required": false, + "defaultValue": "true" + }, + { + "name": "applyNoiseReduction", + "type": "boolean", + "description": "Whether to reduce visual noise or artifacts to improve document clarity.", + "required": false, + "defaultValue": "true" + }, + { + "name": "applyCrop", + "type": "boolean", + "description": "Enable automatic detection and cropping of document edges to remove background.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxPageWidth", + "type": "number", + "description": "Maximum width in pixels of output document pages; scales images if larger.", + "required": false, + "defaultValue": "2480" + }, + { + "name": "maxPageHeight", + "type": "number", + "description": "Maximum height in pixels of output document pages; scales images if larger.", + "required": false, + "defaultValue": "3508" + } + ], + "returns": { + "type": "object", + "description": "An object containing the drafted document file as base64 string and metadata such as page count." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to convert raw scanned or photographed document images into clean, well-formatted digital documents for easier reading, archiving, or further processing, especially when inputs are noisy or skewed. Ideal for creating PDFs from multiple page images.", + "limitations": "The tool does not perform OCR or semantic text extraction, so it cannot convert images to editable text documents. It also does not handle handwriting recognition or complex graphic layouts reliably.", + "examples": [ + "Draft a multi-page PDF document from these scanned images of a contract.", + "Create a cleaned-up digital document from photos of a printed report with skew and shadows.", + "Generate a single PDF page with deskewing and noise reduction applied to this photo of a letter." + ] + }, + "tags": [ + "image-processing", + "document", + "drafting", + "pdf", + "enhancement", + "scanned-documents", + "deskew", + "crop" + ], + "examples": [ + { + "inputJson": "{\"inputImages\":[\"base64encodedImage1==\",\"base64encodedImage2==\"],\"outputFormat\":\"pdf\",\"applyDeskew\":true,\"applyNoiseReduction\":true,\"applyCrop\":true}", + "description": "Draft a multi-page PDF document from two base64 encoded scanned images with deskew, noise reduction, and cropping enabled." + }, + { + "inputJson": "{\"inputImages\":[\"/path/to/document1.jpg\"],\"outputFormat\":\"png\",\"applyDeskew\":false,\"applyNoiseReduction\":true,\"applyCrop\":false}", + "description": "Generate a cleaned PNG image from a single photo of a document with noise reduction only, no deskew or crop." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Document", + "context": null + } + }, + { + "name": "image-processing.buildTest", + "description": "This tool builds automated image processing tests by accepting test parameters such as input images, processing steps, and expected output characteristics. It generates a structured test specification that can be used to validate image processing pipelines or algorithms by comparing actual outputs against expected results.", + "category": "image-processing", + "parameters": [ + { + "name": "testName", + "type": "string", + "description": "The name identifier for the test case being created.", + "required": true, + "defaultValue": "" + }, + { + "name": "inputImagePaths", + "type": "array", + "description": "An array of file paths or URLs to input images for the test.", + "required": true, + "defaultValue": "" + }, + { + "name": "processingSteps", + "type": "array", + "description": "A list describing the ordered image processing operations to apply, e.g., resizing, filtering.", + "required": true, + "defaultValue": "" + }, + { + "name": "expectedOutputCharacteristics", + "type": "object", + "description": "Specifications describing expected output properties like dimensions, color profile, or checksum for validation.", + "required": true, + "defaultValue": "" + }, + { + "name": "toleranceThreshold", + "type": "number", + "description": "Numeric tolerance level for comparing actual output with expected output, useful for approximate matching.", + "required": false, + "defaultValue": "0.01" + }, + { + "name": "testDescription", + "type": "string", + "description": "Optional detailed description for the test case purpose and conditions.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns a structured test specification object containing test name, input images, processing steps, expected output definitions, tolerance, and optional description. This object can be serialized for use in automated test frameworks." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically define reproducible image processing tests. It is helpful to build test cases that validate correctness and integrity of image transformations and algorithms by specifying inputs, processing steps, and output expectations.", + "limitations": "This tool does not execute the image processing steps or validate actual outputs. It only generates the test definition for later use by test runners or validation scripts.", + "examples": [ + "Create a test to verify that resizing an image preserves aspect ratio and expected dimensions.", + "Build a test case to check if a color filter changes pixels to expected color ranges within tolerance.", + "Define a test specifying expected checksum of an output image after applying a sequence of filters." + ] + }, + "tags": [ + "image-processing", + "test-automation", + "validation", + "image-analysis", + "software-testing" + ], + "examples": [ + { + "inputJson": "{\"testName\":\"resizeTest\",\"inputImagePaths\":[\"/images/sample1.png\"],\"processingSteps\":[{\"operation\":\"resize\",\"width\":100,\"height\":100}],\"expectedOutputCharacteristics\":{\"width\":100,\"height\":100,\"format\":\"png\"},\"toleranceThreshold\":0.005,\"testDescription\":\"Test to verify resizing maintains image dimensions as expected.\"}", + "description": "Defines a test to validate that resizing an image to 100x100 pixels produces an output image of those dimensions." + }, + { + "inputJson": "{\"testName\":\"grayscaleFilterTest\",\"inputImagePaths\":[\"input/photo.jpg\"],\"processingSteps\":[{\"operation\":\"grayscale\"}],\"expectedOutputCharacteristics\":{\"colorMode\":\"grayscale\"},\"toleranceThreshold\":0.01}", + "description": "Creates a test case to confirm applying a grayscale filter results in an image with grayscale color mode." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Test", + "context": null + } + }, + { + "name": "image-processing.buildServer", + "description": "This tool helps set up and configure a dedicated image processing server infrastructure tailored for AI workloads. It accepts parameters defining hardware specs, image processing frameworks, and network access configurations. It automates installation of dependencies, deploys relevant services, and outputs server access details along with deployment status.", + "category": "image-processing", + "parameters": [ + { + "name": "serverName", + "type": "string", + "description": "A unique name to identify the image processing server instance.", + "required": true, + "defaultValue": "" + }, + { + "name": "cpuCores", + "type": "number", + "description": "Number of CPU cores to allocate for the server, impacting processing throughput.", + "required": true, + "defaultValue": "8" + }, + { + "name": "gpuEnabled", + "type": "boolean", + "description": "Flag to determine whether to install GPU support and relevant drivers for accelerated processing.", + "required": false, + "defaultValue": "true" + }, + { + "name": "memoryGB", + "type": "number", + "description": "Amount of RAM in gigabytes dedicated to the server for in-memory image processing tasks.", + "required": true, + "defaultValue": "32" + }, + { + "name": "storageGB", + "type": "number", + "description": "Disk storage size in gigabytes for storing images and intermediate results.", + "required": true, + "defaultValue": "500" + }, + { + "name": "osType", + "type": "string", + "description": "Operating system to install on the server (e.g., Ubuntu 20.04, CentOS 8).", + "required": true, + "defaultValue": "Ubuntu 20.04" + }, + { + "name": "frameworks", + "type": "array", + "description": "List of image processing and AI frameworks to install (e.g., TensorFlow, OpenCV, PyTorch).", + "required": true, + "defaultValue": "[\"OpenCV\",\"TensorFlow\"]" + }, + { + "name": "networkAccess", + "type": "object", + "description": "Network configuration options including allowed IPs and port mappings.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "Details about the setup server including connection info, installed frameworks, hardware specs, and deployment logs." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to provision a dedicated server optimized for image processing workloads, automating environment setup to quickly start processing large image datasets or running image analysis models.", + "limitations": "It does not handle scaling of existing servers, nor manage ongoing maintenance or auto-scaling. It cannot provision cloud resources directly but assumes an environment where server provisioning APIs are accessible.", + "examples": [ + "Build an image processing server with GPU support and TensorFlow installed.", + "Deploy a server named 'ImgProcNode1' with 16 CPU cores and 64GB RAM for large batch processing.", + "Setup a server using Ubuntu 20.04 with OpenCV and PyTorch frameworks without GPU support." + ] + }, + "tags": [ + "infrastructure", + "server", + "image-processing", + "deployment", + "automation", + "AI", + "GPU" + ], + "examples": [ + { + "inputJson": "{\"serverName\":\"ImgProcServer01\",\"cpuCores\":16,\"gpuEnabled\":true,\"memoryGB\":64,\"storageGB\":1000,\"osType\":\"Ubuntu 20.04\",\"frameworks\":[\"TensorFlow\",\"OpenCV\"],\"networkAccess\":{\"allowedIPs\":[\"192.168.1.0/24\"],\"ports\":[\"22\",\"8080\"]}}", + "description": "Provision a powerful Ubuntu server with GPU, TensorFlow and OpenCV installed, configured for network access only from local subnet." + }, + { + "inputJson": "{\"serverName\":\"BatchProcessNode\",\"cpuCores\":8,\"gpuEnabled\":false,\"memoryGB\":32,\"storageGB\":500,\"osType\":\"CentOS 8\",\"frameworks\":[\"OpenCV\"]}", + "description": "Create a CentOS server optimized for CPU image processing using OpenCV without GPU acceleration." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Server", + "context": null + } + }, + { + "name": "image-processing.buildCommit", + "description": "This tool accepts a staged collection of image edits and metadata representing changes to an image project, composes these changes into a structured commit object suitable for version control, and outputs a commit summary including hash, message, author info, and affected files. It bridges image editing workflows with code-like commit management.", + "category": "image-processing", + "parameters": [ + { + "name": "stagedEdits", + "type": "array", + "description": "Array of objects representing individual image edits or changes staged for commit, including details such as affected files and edit descriptions.", + "required": true, + "defaultValue": "" + }, + { + "name": "commitMessage", + "type": "string", + "description": "A descriptive message summarizing the image changes being committed.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "Name of the author making the commit.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorEmail", + "type": "string", + "description": "Email address of the author for commit metadata.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted string representing the time of the commit. If empty, current time is used.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns a commit object containing a unique commitHash, commitMessage, author details, timestamp, and a list of changed files with their modification details." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to consolidate a series of image modifications into a formal commit structure for version-controlled image projects or pipelines. It enables tracking, rollback, and collaboration similar to code versioning but applied to image processing workflows.", + "limitations": "This tool does not perform image editing itself or validate the content of edits; it only structures commit information. It also does not interface with actual version control systems but outputs commit data that can be used by such systems.", + "examples": [ + "Create a commit from a batch of edited images to save the current project state.", + "Generate a commit object summarizing user-applied filters and transformations for audit.", + "Build a commit metadata record for collaborative image project changes." + ] + }, + "tags": [ + "image-processing", + "version-control", + "commit", + "edit-tracking", + "metadata", + "collaboration" + ], + "examples": [ + { + "inputJson": "{\"stagedEdits\":[{\"file\":\"photo1.jpg\",\"change\":\"brightness adjusted +10%\"},{\"file\":\"photo2.jpg\",\"change\":\"added filter 'vintage'\"}],\"commitMessage\":\"Improve brightness and apply vintage filter to photos\",\"authorName\":\"Jane Doe\",\"authorEmail\":\"jane.doe@example.com\",\"timestamp\":\"2024-06-01T12:00:00Z\"}", + "description": "Commit a set of edits adjusting brightness and adding a filter to a photo collection." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Commit", + "context": null + } + }, + { + "name": "image-processing.generateCSV", + "description": "Generates a CSV file summarizing image metadata and analysis results. The tool accepts an array of images or image URLs, processes each to extract attributes like dimensions, format, color profile statistics, and optional object detection labels, then outputs a structured CSV string with these details for further analysis or reporting.", + "category": "image-processing", + "parameters": [ + { + "name": "imageSources", + "type": "array", + "description": "Array of image input sources, can be base64 strings, URLs, or file paths to process", + "required": true, + "defaultValue": "" + }, + { + "name": "includeDimensions", + "type": "boolean", + "description": "Whether to include image width and height in the CSV output", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeFormat", + "type": "boolean", + "description": "Whether to include image format (e.g., JPEG, PNG) in the CSV output", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeColorProfile", + "type": "boolean", + "description": "Include basic color profile statistics like dominant color and average brightness", + "required": false, + "defaultValue": "true" + }, + { + "name": "detectObjects", + "type": "boolean", + "description": "Enable object detection to list recognized objects and confidence scores in the CSV", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxObjectsPerImage", + "type": "number", + "description": "Maximum number of detected objects to include per image (only if detectObjects is true)", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "An object with a single field 'csvContent' containing the generated CSV as a string, with header row and subsequent rows per image" + }, + "aiAgent": { + "useCase": "Use this tool when you need to analyze a batch of images to extract structured metadata for cataloging, quality control, or machine learning dataset preparation. It converts heterogeneous image information into a standardized CSV format for easy integration with data pipelines or spreadsheet tools.", + "limitations": "Does not perform deep image content analysis beyond basic object detection. Requires input images accessible by URLs or valid encodings. Large batches may take significant processing time.", + "examples": [ + "Generate a CSV summary of uploaded images including dimensions and format.", + "Produce a CSV report listing dominant colors and detected objects from a set of image URLs.", + "Create CSV metadata output for images with object detection enabled limiting to top 3 detected labels per image." + ] + }, + "tags": [ + "image-processing", + "metadata-extraction", + "csv-generation", + "image-analysis", + "batch-processing" + ], + "examples": [ + { + "inputJson": "{\"imageSources\":[\"https://example.com/image1.jpg\",\"https://example.com/image2.png\"],\"includeDimensions\":true,\"includeFormat\":true,\"includeColorProfile\":true,\"detectObjects\":false}", + "description": "Generate CSV with dimensions, format, and color profile for two images by URL." + }, + { + "inputJson": "{\"imageSources\":[\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...\"],\"includeDimensions\":true,\"includeFormat\":true,\"includeColorProfile\":false,\"detectObjects\":true,\"maxObjectsPerImage\":3}", + "description": "Generate CSV for base64 image input including object detection limited to 3 objects per image." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "CSV", + "context": null + } + }, + { + "name": "image-processing.generateSentence", + "description": "Generates a natural language sentence describing the content, attributes, or context of an input image. Accepts an image (URL or base64) and parameters influencing description detail and style. Outputs a human-readable sentence summarizing key visual elements or themes in the image.", + "category": "image-processing", + "parameters": [ + { + "name": "imageData", + "type": "string", + "description": "Base64-encoded image data or a publicly accessible image URL to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The language code (e.g., 'en', 'es') for the generated sentence.", + "required": false, + "defaultValue": "\"en\"" + }, + { + "name": "detailLevel", + "type": "string", + "description": "Level of descriptive detail: 'brief', 'normal', or 'detailed'.", + "required": false, + "defaultValue": "\"normal\"" + }, + { + "name": "focusArea", + "type": "object", + "description": "Optional bounding box to focus description on specific image region with keys: {x, y, width, height} as percentages (0-1).", + "required": false, + "defaultValue": "" + }, + { + "name": "style", + "type": "string", + "description": "Stylistic tone for the sentence such as 'formal', 'casual', or 'poetic'.", + "required": false, + "defaultValue": "\"formal\"" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated descriptive sentence and metadata about analysis confidence." + }, + "aiAgent": { + "useCase": "Use when needing an automatic textual summary or caption for an image to aid understanding, accessibility, or content indexing. Helpful in applications requiring quick human-readable descriptions of visual data without manual annotation.", + "limitations": "Cannot generate highly technical or domain-specific analysis beyond general or commonly recognized objects and scenes. May struggle with abstract art or ambiguous images. Accuracy depends on input clarity and quality.", + "examples": [ + "Generate a detailed English sentence describing the image at this URL.", + "Provide a brief, casual sentence describing the detected objects within the top-left quadrant of this image.", + "Produce a poetic-style sentence in Spanish about the given base64 image." + ] + }, + "tags": [ + "image-caption", + "description-generation", + "natural-language", + "image-analysis", + "accessibility", + "content-summarization" + ], + "examples": [ + { + "inputJson": "{\"imageData\":\"https://example.com/image1.jpg\",\"language\":\"en\",\"detailLevel\":\"normal\"}", + "description": "Generate a normal detail sentence describing a JPEG image from URL." + }, + { + "inputJson": "{\"imageData\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...\",\"language\":\"en\",\"detailLevel\":\"detailed\",\"focusArea\":{\"x\":0.1,\"y\":0.1,\"width\":0.3,\"height\":0.3}}", + "description": "Generate a detailed description focusing on the top-left corner of a base64 encoded image." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Sentence", + "context": null + } + }, + { + "name": "image-processing.generateEvent", + "description": "Generates analytics event data by analyzing supplied images to detect specific visual features or occurrences, such as object presence, facial expressions, or environmental changes. The tool accepts image files or URLs and configuration parameters for events to detect, then outputs structured event records for downstream analytics.", + "category": "image-processing", + "parameters": [ + { + "name": "imageInput", + "type": "string", + "description": "URL or base64-encoded string of the input image to analyze for event generation.", + "required": true, + "defaultValue": "" + }, + { + "name": "eventType", + "type": "string", + "description": "Type of event to detect within the image, such as 'faceDetection', 'objectRecognition', or 'sceneChange'.", + "required": true, + "defaultValue": "" + }, + { + "name": "confidenceThreshold", + "type": "number", + "description": "Minimum confidence score (0 to 1) for detected events to be included in the output.", + "required": false, + "defaultValue": "0.7" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include additional metadata (e.g., detection coordinates, timestamps) in output events.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing an array of event records detected in the image, each with properties like event type, confidence score, and optional metadata such as coordinates or timestamps." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to transform image inputs into discrete analytic event records by detecting specific visual cues or features for monitoring, auditing, or behavioral analysis. Suitable for scenarios requiring automated extraction of event data from images.", + "limitations": "Cannot process videos or real-time streams; limited to single images per call. Accuracy of event detection depends on the underlying image analysis models and the quality of input images. Does not generate events unrelated to visual content.", + "examples": [ + "Generate face detection events from a photo to log attendance.", + "Detect presence of specific objects like vehicles in an image for security events.", + "Analyze an environmental image to detect scene changes or anomalies for monitoring." + ] + }, + "tags": [ + "image-processing", + "event-generation", + "analytics", + "object-detection", + "face-detection", + "visual-events" + ], + "examples": [ + { + "inputJson": "{\"imageInput\":\"https://example.com/image1.jpg\",\"eventType\":\"faceDetection\",\"confidenceThreshold\":0.8,\"includeMetadata\":true}", + "description": "Detect faces with confidence above 0.8 in a remote image and include detection metadata." + }, + { + "inputJson": "{\"imageInput\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...\",\"eventType\":\"objectRecognition\",\"confidenceThreshold\":0.6,\"includeMetadata\":false}", + "description": "Recognize objects in a base64-encoded image, including only events with confidence above 0.6, without extra metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Event", + "context": null + } + }, + { + "name": "image-processing.createContainer", + "description": "Creates a visual container element within an image canvas by rendering a customizable rectangular or rounded rectangle shape with optional border, background color, opacity, and shadow effects. Accepts parameters defining size, position, style, and outputs an image layer or updated image including the container.", + "category": "image-processing", + "parameters": [ + { + "name": "canvasWidth", + "type": "number", + "description": "Width of the image canvas in pixels where the container will be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "canvasHeight", + "type": "number", + "description": "Height of the image canvas in pixels where the container will be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "positionX", + "type": "number", + "description": "X coordinate (pixels) of the container's top-left corner relative to the canvas.", + "required": true, + "defaultValue": "" + }, + { + "name": "positionY", + "type": "number", + "description": "Y coordinate (pixels) of the container's top-left corner relative to the canvas.", + "required": true, + "defaultValue": "" + }, + { + "name": "containerWidth", + "type": "number", + "description": "Width in pixels of the container rectangle.", + "required": true, + "defaultValue": "" + }, + { + "name": "containerHeight", + "type": "number", + "description": "Height in pixels of the container rectangle.", + "required": true, + "defaultValue": "" + }, + { + "name": "borderRadius", + "type": "number", + "description": "Radius of corners for rounding in pixels; 0 means sharp corners.", + "required": false, + "defaultValue": "0" + }, + { + "name": "backgroundColor", + "type": "string", + "description": "Background fill color of the container in hex (#RRGGBB) or CSS color names.", + "required": false, + "defaultValue": "#FFFFFF" + }, + { + "name": "borderColor", + "type": "string", + "description": "Border color in hex or CSS color name; set empty string for no border.", + "required": false, + "defaultValue": "" + }, + { + "name": "borderWidth", + "type": "number", + "description": "Width of the container border in pixels; 0 means no border.", + "required": false, + "defaultValue": "0" + }, + { + "name": "opacity", + "type": "number", + "description": "Opacity level of the container from 0 (transparent) to 1 (opaque).", + "required": false, + "defaultValue": "1" + }, + { + "name": "shadow", + "type": "object", + "description": "Optional shadow effect with properties: offsetX, offsetY (pixels), blurRadius (pixels), color (string).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the updated image canvas as a base64 PNG data URL and metadata about the container position and style." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically add a styled container or panel element onto a blank or existing image canvas for UI mockups, infographics, or image composition. It helps visualize layout placeholders or highlight sections within images.", + "limitations": "This tool creates simple rectangular containers with style but does not support complex shapes, image clipping, or embedding other image content inside containers.", + "examples": [ + "Create a white rounded rectangle container at position (50,100) sized 300x150 on a 800x600 canvas.", + "Create a transparent container with a blue border and drop shadow at (10,10) on a 500x500 canvas.", + "Create a solid red rectangle container without border or shadow at (0,0) filling the entire 1024x768 canvas." + ] + }, + "tags": [ + "image", + "container", + "shape", + "graphics", + "canvas", + "visual", + "layout" + ], + "examples": [ + { + "inputJson": "{\"canvasWidth\":800,\"canvasHeight\":600,\"positionX\":50,\"positionY\":100,\"containerWidth\":300,\"containerHeight\":150,\"borderRadius\":15,\"backgroundColor\":\"#FFFFFF\",\"borderColor\":\"#000000\",\"borderWidth\":2,\"opacity\":0.9,\"shadow\":{\"offsetX\":5,\"offsetY\":5,\"blurRadius\":10,\"color\":\"rgba(0,0,0,0.3)\"}}", + "description": "Creates a white, rounded container with black border and shadow on an 800x600 canvas." + }, + { + "inputJson": "{\"canvasWidth\":500,\"canvasHeight\":500,\"positionX\":10,\"positionY\":10,\"containerWidth\":200,\"containerHeight\":100,\"borderRadius\":0,\"backgroundColor\":\"#0000FF\",\"borderColor\":\"#FFFFFF\",\"borderWidth\":3,\"opacity\":1,\"shadow\":{\"offsetX\":0,\"offsetY\":0,\"blurRadius\":0,\"color\":\"\"}}", + "description": "Creates a blue rectangular container with white border and no shadow on a 500x500 canvas." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Container", + "context": null + } + }, + { + "name": "image-processing.createNotification", + "description": "Generates a visual notification image overlay with customizable text and styling on a given base image. Accepts an input image (URL or base64), notification message, position, background color, opacity, font size and color. Produces an image with the notification visually embedded, output as base64 or URL.", + "category": "image-processing", + "parameters": [ + { + "name": "baseImage", + "type": "string", + "description": "Base image input as a URL or base64 string to overlay the notification on.", + "required": true, + "defaultValue": "" + }, + { + "name": "message", + "type": "string", + "description": "Text content of the notification to display on the image.", + "required": true, + "defaultValue": "" + }, + { + "name": "position", + "type": "string", + "description": "Position of the notification overlay on the image. Options: top-left, top-right, bottom-left, bottom-right, center.", + "required": false, + "defaultValue": "bottom-right" + }, + { + "name": "backgroundColor", + "type": "string", + "description": "Background color of the notification box in CSS color format (e.g., #000000 for black).", + "required": false, + "defaultValue": "#000000" + }, + { + "name": "opacity", + "type": "number", + "description": "Opacity level of the notification background between 0 (transparent) and 1 (opaque).", + "required": false, + "defaultValue": "0.6" + }, + { + "name": "fontSize", + "type": "number", + "description": "Font size of the notification text in pixels.", + "required": false, + "defaultValue": "14" + }, + { + "name": "fontColor", + "type": "string", + "description": "CSS color string for the notification text color.", + "required": false, + "defaultValue": "#FFFFFF" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Output image format. Supported: base64 or url. Determines if returns image data or an accessible URL.", + "required": false, + "defaultValue": "base64" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the notification image in the requested format, either as a base64 string or a URL." + }, + "aiAgent": { + "useCase": "Use this tool when needing to create an image that visually presents a notification message directly on top of another image for use in alerts, onboarding tips, or UI previews. Ideal for generating visually integrated notification graphics programmatically.", + "limitations": "Cannot create interactive notifications or animations; generates static image overlays only. Quality depends on input image resolution and text length constraints.", + "examples": [ + "Overlay a warning message 'Update Required' at the bottom right of a user's profile image.", + "Generate a product image with a 'Sale 20% Off' notification at top-left corner.", + "Create a screenshot image with a centered notification 'Session Expired' in semi-transparent box." + ] + }, + "tags": [ + "image-processing", + "notification", + "overlay", + "visual-communication", + "image-editing" + ], + "examples": [ + { + "inputJson": "{\"baseImage\":\"https://example.com/image.jpg\",\"message\":\"Update Required\",\"position\":\"bottom-right\"}", + "description": "Overlay an 'Update Required' notification at the bottom right of the given image URL." + }, + { + "inputJson": "{\"baseImage\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA...\",\"message\":\"Sale 20% Off\",\"position\":\"top-left\",\"backgroundColor\":\"#FF0000\",\"opacity\":0.7,\"fontSize\":18}", + "description": "Create a base64 output image with a red notification box on the top-left corner showing 'Sale 20% Off' with custom styling." + }, + { + "inputJson": "{\"baseImage\":\"https://example.com/screenshot.png\",\"message\":\"Session Expired\",\"position\":\"center\",\"fontColor\":\"#000000\",\"backgroundColor\":\"#FFFF00\",\"opacity\":0.8,\"outputFormat\":\"url\"}", + "description": "Generate a notification overlay centered on a screenshot image, returning a URL output with yellow background and black text." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Notification", + "context": null + } + }, + { + "name": "image-processing.createEvent", + "description": "This tool accepts image or video input data and analyzes visual changes or user interactions within to create event records for analytics purposes. It processes frames to detect object movements, gestures, or scene changes and outputs structured event data (with timestamps and metadata) representing detected visual events.", + "category": "image-processing", + "parameters": [ + { + "name": "inputMedia", + "type": "string", + "description": "URL or base64 string of the input image or video to process for event detection", + "required": true, + "defaultValue": "" + }, + { + "name": "mediaType", + "type": "string", + "description": "Type of the input media, either 'image' or 'video'", + "required": true, + "defaultValue": "" + }, + { + "name": "detectionMode", + "type": "string", + "description": "Mode of event detection: 'motion', 'gesture', or 'sceneChange'", + "required": true, + "defaultValue": "motion" + }, + { + "name": "sensitivity", + "type": "number", + "description": "Sensitivity level for detecting events, from 0.0 (low) to 1.0 (high)", + "required": false, + "defaultValue": "0.5" + }, + { + "name": "maxEvents", + "type": "number", + "description": "Maximum number of events to detect before stopping analysis", + "required": false, + "defaultValue": "100" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include detailed metadata for each detected event", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Structured data object listing detected visual events with timestamps, event types, and optional metadata including position, confidence, and frame number" + }, + "aiAgent": { + "useCase": "Use this tool when you need to analyze visual inputs (images or videos) to automatically detect and record significant events such as motion detection, gestures, or scene changes for analytics or monitoring purposes. Ideal for generating event logs that feed into broader analytical pipelines or real-time monitoring.", + "limitations": "Does not perform audio/event detection outside visual domain; accuracy depends on input media quality; limited by predefined detection modes; not suited for complex semantic interpretation beyond specified visual event types.", + "examples": [ + "Detect motion events from a security camera video feed and get event timestamps.", + "Analyze a video of a user performing gestures and create event records for each detected gesture.", + "Process an image sequence to identify scene changes and generate corresponding events." + ] + }, + "tags": [ + "image-processing", + "event-detection", + "analytics", + "motion-detection", + "gesture-recognition", + "video-processing" + ], + "examples": [ + { + "inputJson": "{\"inputMedia\":\"https://example.com/camera_feed.mp4\",\"mediaType\":\"video\",\"detectionMode\":\"motion\",\"sensitivity\":0.7,\"maxEvents\":50,\"includeMetadata\":true}", + "description": "Detect motion events from a video feed URL with high sensitivity and return up to 50 events including metadata." + }, + { + "inputJson": "{\"inputMedia\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA...\",\"mediaType\":\"image\",\"detectionMode\":\"sceneChange\",\"includeMetadata\":false}", + "description": "Analyze a single image for scene change triggers (useful for image sequences) without metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Event", + "context": null + } + }, + { + "name": "image-processing.createAlert", + "description": "Creates a security alert by analyzing input images for anomalies or predefined threats. Accepts an image file, applies detection models or pattern matching, and produces a detailed alert report including threat classification, bounding boxes, confidence scores, and metadata.", + "category": "image-processing", + "parameters": [ + { + "name": "imageData", + "type": "string", + "description": "Base64-encoded string of the input image to analyze for security threats.", + "required": true, + "defaultValue": "" + }, + { + "name": "detectionModel", + "type": "string", + "description": "Name or type of detection model to use, e.g., 'anomaly', 'weaponDetection', or 'faceRecognition'.", + "required": false, + "defaultValue": "anomaly" + }, + { + "name": "confidenceThreshold", + "type": "number", + "description": "Minimum confidence score (0-1) for detected threats to be included in the alert.", + "required": false, + "defaultValue": "0.75" + }, + { + "name": "alertSeverity", + "type": "string", + "description": "Severity level to assign to alerts: 'low', 'medium', or 'high'.", + "required": false, + "defaultValue": "medium" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include additional metadata such as timestamp, image resolution, or device info in the alert report.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An alert object containing threat classifications, bounding box coordinates, confidence scores, severity levels, and optional metadata describing the analysis results." + }, + "aiAgent": { + "useCase": "Use this tool when an AI system needs to monitor images for security risks such as unauthorized persons, weapons, or unusual anomalies in surveillance footage or uploaded images. Ideal for automated threat detection pipelines requiring actionable alerts with location and severity data.", + "limitations": "This tool cannot perform real-time video analysis, only single image inputs. Detection accuracy depends on the provided model type and input image quality. It does not remediate threats or perform forensic investigations.", + "examples": [ + "Analyze this uploaded security camera photo for potential weapon presence and generate a high severity alert.", + "Check the image for any unauthorized individuals and create an alert with bounding boxes around detected faces.", + "Scan this inspection image for anomalies and output a medium severity alert with confidence scores." + ] + }, + "tags": [ + "image-processing", + "security", + "alert-generation", + "anomaly-detection", + "threat-detection", + "surveillance", + "AI-analysis" + ], + "examples": [ + { + "inputJson": "{\"imageData\":\"\",\"detectionModel\":\"weaponDetection\",\"confidenceThreshold\":0.8,\"alertSeverity\":\"high\",\"includeMetadata\":true}", + "description": "Create a high severity alert detecting weapons in a surveillance image with metadata included." + }, + { + "inputJson": "{\"imageData\":\"\",\"detectionModel\":\"faceRecognition\",\"confidenceThreshold\":0.75,\"alertSeverity\":\"medium\",\"includeMetadata\":false}", + "description": "Detect unauthorized persons in an image and generate a medium severity alert without metadata." + }, + { + "inputJson": "{\"imageData\":\"\",\"detectionModel\":\"anomaly\",\"confidenceThreshold\":0.7,\"alertSeverity\":\"low\",\"includeMetadata\":true}", + "description": "Analyze an image for general anomalies and produce a low severity alert including metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Alert", + "context": null + } + }, + { + "name": "image-processing.createService", + "description": "Creates and configures an image processing service that supports operations like resizing, filtering, and format conversion. Accepts configuration parameters such as service name, supported operations, default output format, and access control settings. Returns service details including endpoint URL and status.", + "category": "image-processing", + "parameters": [ + { + "name": "serviceName", + "type": "string", + "description": "The unique name of the image processing service to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "supportedOperations", + "type": "array", + "description": "List of image processing operations the service will support, e.g., resize, crop, filter, convertFormat.", + "required": true, + "defaultValue": "[\"resize\",\"filter\",\"convertFormat\"]" + }, + { + "name": "defaultOutputFormat", + "type": "string", + "description": "Default image output format like jpg, png, or webp if not specified by user.", + "required": false, + "defaultValue": "png" + }, + { + "name": "maxImageSizeMB", + "type": "number", + "description": "Maximum image file size in megabytes that the service will accept for processing.", + "required": false, + "defaultValue": "10" + }, + { + "name": "enableAuthentication", + "type": "boolean", + "description": "Flag to enable or disable authentication requirements for accessing the service.", + "required": false, + "defaultValue": "true" + }, + { + "name": "accessControlList", + "type": "array", + "description": "Optional list of user IDs or API keys allowed to access the service, used if authentication is enabled.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing details about the created service, including its unique ID, endpoint URL, list of supported operations, current status, and creation timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically create a customizable image processing microservice endpoint for applications that require dynamic image editing capabilities, such as resizing, filtering, and format conversion. This allows scalable integration of image operations within workflows or pipelines.", + "limitations": "This tool does not perform image processing itself, only configures the service that will execute image processing. It cannot manage service scaling or high availability, which must be handled by the infrastructure separately.", + "examples": [ + "Create an image processing service named 'fastImageAPI' supporting resize and convertFormat operations with default output as jpg.", + "Set up a service with authentication disabled for public use supporting resize and filter.", + "Create a service limiting image input size to 5 MB and only allowing specific API keys access." + ] + }, + "tags": [ + "image-processing", + "service-creation", + "image-editing", + "api", + "configuration", + "infrastructure" + ], + "examples": [ + { + "inputJson": "{\"serviceName\":\"fastImageAPI\",\"supportedOperations\":[\"resize\",\"convertFormat\"],\"defaultOutputFormat\":\"jpg\",\"maxImageSizeMB\":15,\"enableAuthentication\":true,\"accessControlList\":[\"user123\",\"user456\"]}", + "description": "Create a secure image processing service named fastImageAPI supporting resize and format conversion with JPG output and a 15 MB max image size." + }, + { + "inputJson": "{\"serviceName\":\"publicFilterService\",\"supportedOperations\":[\"filter\"],\"enableAuthentication\":false}", + "description": "Create a public image filtering service without authentication and default PNG output format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Service", + "context": null + } + }, + { + "name": "image-processing.createKey", + "description": "Generates a cryptographic key image embedded with visual security features from input parameters. Accepts key data as a string and configuration for style and visual complexity. Outputs a high-resolution PNG image representing the key visually for secure sharing or verification.", + "category": "image-processing", + "parameters": [ + { + "name": "keyData", + "type": "string", + "description": "The raw key string to visually encode into the image.", + "required": true, + "defaultValue": "" + }, + { + "name": "imageSize", + "type": "number", + "description": "The width and height in pixels of the output square image.", + "required": false, + "defaultValue": "512" + }, + { + "name": "visualStyle", + "type": "string", + "description": "The artistic style to apply to the key image (e.g., 'abstract', 'geometric', 'matrix').", + "required": false, + "defaultValue": "geometric" + }, + { + "name": "complexityLevel", + "type": "number", + "description": "Level of visual complexity and detail, from 1 (simple) to 10 (highly detailed).", + "required": false, + "defaultValue": "5" + }, + { + "name": "includeTimestamp", + "type": "boolean", + "description": "Whether to embed the current timestamp visually within the key image for added security.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing base64-encoded PNG image data of the generated key and metadata including size and style." + }, + "aiAgent": { + "useCase": "Use this tool when a system requires strong visual representation of cryptographic keys or security tokens, for example creating tamper-evident digital key cards or authentication visuals that combine cryptographic data with aesthetic security elements. Ideal for scenarios needing human-verifiable or visually secured keys.", + "limitations": "This tool only generates static visual key images and does not perform cryptographic key generation or management beyond encoding provided strings. It cannot verify or decrypt keys.", + "examples": [ + "Create a geometric style key image of size 1024 pixels embedding a given key string.", + "Generate a simple abstract key image without a timestamp for secure sharing.", + "Produce a highly detailed matrix style visual key image with the current timestamp included." + ] + }, + "tags": [ + "image-processing", + "security", + "visual-key", + "cryptography", + "image-generation", + "authentication", + "security-visualization" + ], + "examples": [ + { + "inputJson": "{\"keyData\":\"ABCD1234EFGH5678\",\"imageSize\":512,\"visualStyle\":\"geometric\",\"complexityLevel\":5,\"includeTimestamp\":true}", + "description": "Generate a medium complexity geometric key image embedding the key with timestamp." + }, + { + "inputJson": "{\"keyData\":\"SECRETKEY9876543210\",\"imageSize\":1024,\"visualStyle\":\"abstract\",\"complexityLevel\":3,\"includeTimestamp\":false}", + "description": "Create a large, less complex abstract style key image without including a timestamp." + }, + { + "inputJson": "{\"keyData\":\"ZXCVBNM123456QWER\",\"imageSize\":256,\"visualStyle\":\"matrix\",\"complexityLevel\":9,\"includeTimestamp\":true}", + "description": "Produce a small, highly detailed matrix style key image embedding key and timestamp." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Key", + "context": null + } + }, + { + "name": "image-processing.createPullRequest", + "description": "Creates a code repository pull request that introduces or updates image processing code or related assets. Accepts a code branch name, target base branch, PR title, description, and optional image assets or code snippets. Processes these inputs to create a pull request in a supported version control system, returning PR metadata.", + "category": "image-processing", + "parameters": [ + { + "name": "repository", + "type": "string", + "description": "The name of the code repository where the pull request will be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "branchName", + "type": "string", + "description": "The name of the source branch containing image processing changes.", + "required": true, + "defaultValue": "" + }, + { + "name": "baseBranch", + "type": "string", + "description": "The target branch to merge changes into, e.g., 'main' or 'master'.", + "required": true, + "defaultValue": "" + }, + { + "name": "title", + "type": "string", + "description": "The title of the pull request describing the change.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Detailed description of the pull request including purpose and related issue if any.", + "required": false, + "defaultValue": "" + }, + { + "name": "codeDiff", + "type": "string", + "description": "A code diff or patch content representing the image processing code changes.", + "required": false, + "defaultValue": "" + }, + { + "name": "imageAssets", + "type": "array", + "description": "An array of image asset file paths or base64 strings to include or update as part of the PR.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "reviewers", + "type": "array", + "description": "List of usernames or IDs to request review from.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing pull request metadata such as PR ID, URL, and status." + }, + "aiAgent": { + "useCase": "Use this tool when automating the creation of pull requests that introduce or modify image processing code, libraries, or related image assets in a code repository. Ideal for integrating AI-generated code changes or bulk image asset updates into development workflows.", + "limitations": "This tool does not perform code validation, build, or test the PR content. It requires pre-existing branches and repository access tokens. It is limited to repositories and VCS platforms integrated by the environment invoking the tool.", + "examples": [ + "Create a pull request to add a new image filter function in a given repo and notify reviewers.", + "Open a PR that updates multiple image asset files in an assets folder with base64 encoded content.", + "Submit a PR with a description referencing an issue and including code diffs that enhance image resizing." + ] + }, + "tags": [ + "code", + "image-processing", + "pull-request", + "automation", + "version-control", + "repository" + ], + "examples": [ + { + "inputJson": "{\"repository\":\"image-lib\",\"branchName\":\"feature/add-filter\",\"baseBranch\":\"main\",\"title\":\"Add new Gaussian Blur filter\",\"description\":\"Implemented a new image filter to apply Gaussian blur effect.\",\"codeDiff\":\"diff --git a/filter.js b/filter.js\\nnew file mode 100644\\nindex 0000000..e69de29\",\"imageAssets\":[\"assets/blur-sample.png\"],\"reviewers\":[\"alice\",\"bob\"]}", + "description": "Creating a pull request adding a new Gaussian blur image filter with code changes and a sample image asset." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "PullRequest", + "context": null + } + }, + { + "name": "image-processing.createLead", + "description": "This tool analyzes an input image containing business card(s) or lead info and extracts structured lead data including name, company, title, phone, email, and address. It accepts an image file or URL, processes OCR and data parsing, then outputs a JSON lead object. Useful for converting visual contact info into actionable digital leads.", + "category": "image-processing", + "parameters": [ + { + "name": "imageUrl", + "type": "string", + "description": "URL of the image file containing the business card or lead information to process.", + "required": false, + "defaultValue": "" + }, + { + "name": "imageBase64", + "type": "string", + "description": "Base64 encoded image data for the business card or lead image. Used if imageUrl is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "languageHints", + "type": "array", + "description": "Optional array of language codes to assist OCR accuracy (e.g., ['en','es']).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "detectMultipleLeads", + "type": "boolean", + "description": "If true, attempts to detect and extract multiple leads from an image containing multiple business cards.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "JSON object containing extracted lead information such as name, company, title, phone, email, and address. If multiple leads detected, an array of such lead objects is returned." + }, + "aiAgent": { + "useCase": "Use this tool when you have an image containing business card(s) or visible textual lead info and you need to extract that data into structured digital lead objects. Ideal for digitizing offline business contacts from images taken by phone or scanner. It automates lead creation from images for CRM imports.", + "limitations": "The tool relies on OCR quality and may produce errors with poor image resolution, complex layouts, or handwriting. It cannot verify the accuracy or validity of extracted leads or handle non-Latin scripts well without appropriate language hints.", + "examples": [ + "Extract a lead's contact info from a smartphone photo of a business card.", + "Parse multiple leads from an image showing a table with several business cards.", + "Convert a scanned image of a printed flyer to structured lead contact data." + ] + }, + "tags": [ + "image-processing", + "ocr", + "lead-extraction", + "business-card", + "contact-info", + "digital-leads", + "crm" + ], + "examples": [ + { + "inputJson": "{\"imageUrl\":\"https://example.com/images/business_card.jpg\"}", + "description": "Extract lead data from a single business card image URL." + }, + { + "inputJson": "{\"imageBase64\":\"iVBORw0KGgoAAAANSUhEUgAA...\"}", + "description": "Extract lead data from a Base64 encoded business card image." + }, + { + "inputJson": "{\"imageUrl\":\"https://example.com/images/multiple_cards.jpg\",\"detectMultipleLeads\":true}", + "description": "Extract multiple leads from an image containing several business cards." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Lead", + "context": null + } + }, + { + "name": "image-processing.createCSV", + "description": "This tool accepts one or more images as input, extracts structured data such as color histograms, object detection counts, or pixel statistics from each image, and generates a CSV file summarizing these metrics per image. The output CSV facilitates quantitative image analysis and comparison.", + "category": "image-processing", + "parameters": [ + { + "name": "images", + "type": "array", + "description": "Array of image files (URLs or base64 strings) to analyze", + "required": true, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "List of image metrics to extract. Options: 'colorHistogram', 'objectCount', 'pixelStats'", + "required": true, + "defaultValue": "[\"colorHistogram\"]" + }, + { + "name": "objectClasses", + "type": "array", + "description": "List of object classes to detect when 'objectCount' metric is enabled; ignored otherwise", + "required": false, + "defaultValue": "[]" + }, + { + "name": "colorHistogramBins", + "type": "number", + "description": "Number of bins per color channel for color histogram (only for 'colorHistogram' metric)", + "required": false, + "defaultValue": "8" + }, + { + "name": "includeImageName", + "type": "boolean", + "description": "Whether to include the image filename or identifier in the CSV output", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the generated CSV content as a string and a summary of metrics computed per image." + }, + "aiAgent": { + "useCase": "Use this tool when you need to quantitatively analyze multiple images by extracting structured visual data like color distribution, counts of detected objects, or pixel statistics, and compile them into a CSV file for downstream data analysis or reporting.", + "limitations": "This tool does not perform image enhancement or complex image annotation beyond basic object counts. Object detection assumes pre-defined classes and doesn't provide bounding boxes or pixel-wise masks.", + "examples": [ + "Generate a CSV summarizing color histograms and object counts for a folder of wildlife photos.", + "Create a CSV file reporting pixel brightness stats for microscopy images for comparative analysis." + ] + }, + "tags": [ + "image-processing", + "data-extraction", + "CSV", + "color-histogram", + "object-detection" + ], + "examples": [ + { + "inputJson": "{\"images\":[\"https://example.com/image1.jpg\",\"https://example.com/image2.jpg\"],\"metrics\":[\"colorHistogram\",\"objectCount\"],\"objectClasses\":[\"cat\",\"dog\"],\"colorHistogramBins\":16,\"includeImageName\":true}", + "description": "Extract 16-bin color histograms and count cats and dogs in two images, including image names in the CSV." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "CSV", + "context": null + } + }, + { + "name": "image-processing.createBranch", + "description": "Creates a visual branch overlay on a given image, simulating tree branches or vein-like structures. Accepts an input image and branch parameters such as position, length, angle, thickness, and color. Outputs the modified image with the overlaid branches, useful for artistic effects, diagrams, or biological illustration overlays.", + "category": "image-processing", + "parameters": [ + { + "name": "inputImage", + "type": "string", + "description": "Base64-encoded string or URL of the input image to process.", + "required": true, + "defaultValue": "" + }, + { + "name": "branchCount", + "type": "number", + "description": "Number of branches to create and overlay on the image.", + "required": true, + "defaultValue": "5" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length in pixels for each created branch.", + "required": false, + "defaultValue": "100" + }, + { + "name": "minAngle", + "type": "number", + "description": "Minimum branching angle in degrees.", + "required": false, + "defaultValue": "15" + }, + { + "name": "maxAngle", + "type": "number", + "description": "Maximum branching angle in degrees.", + "required": false, + "defaultValue": "45" + }, + { + "name": "thickness", + "type": "number", + "description": "Thickness in pixels of the branch lines.", + "required": false, + "defaultValue": "3" + }, + { + "name": "color", + "type": "string", + "description": "Color of the branches in hex format (e.g., '#005500').", + "required": false, + "defaultValue": "#006400" + }, + { + "name": "randomSeed", + "type": "number", + "description": "Seed for random number generator to ensure reproducibility of generated branches.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the processed image with branches overlay, encoded as a base64 string under 'outputImage'." + }, + "aiAgent": { + "useCase": "Use this tool when you need to augment an image with visually simulated branch-like overlays for artistic, scientific illustration, or graphical annotation purposes. Especially useful when generating organic patterns or vein-like structures on existing images without manual drawing.", + "limitations": "This tool does not generate realistic 3D tree structures or complex fractal vegetation models. It creates 2D branch overlays and does not edit the original image content beyond adding these graphics.", + "examples": [ + "Add 10 green branches of varying angles to a nature photo.", + "Create 3 thick red branches on a plain white background image.", + "Overlay 5 branches with a max length of 50 pixels on a medical leaf scan image." + ] + }, + "tags": [ + "image-processing", + "overlay", + "branch", + "artistic", + "illustration", + "biological", + "annotation", + "graphics" + ], + "examples": [ + { + "inputJson": "{\"inputImage\":\"https://example.com/nature.jpg\",\"branchCount\":10,\"maxLength\":80,\"minAngle\":10,\"maxAngle\":60,\"thickness\":2,\"color\":\"#228B22\"}", + "description": "Add 10 green branches of varying angles to a nature photo." + }, + { + "inputJson": "{\"inputImage\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...\",\"branchCount\":3,\"thickness\":5,\"color\":\"#FF0000\"}", + "description": "Create 3 thick red branches on a plain white background image." + }, + { + "inputJson": "{\"inputImage\":\"https://example.com/leaf_scan.png\",\"branchCount\":5,\"maxLength\":50,\"color\":\"#556B2F\"}", + "description": "Overlay 5 branches with a max length of 50 pixels on a medical leaf scan image." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Branch", + "context": null + } + }, + { + "name": "image-processing.createEndpoint", + "description": "This tool generates a REST API endpoint for image processing operations based on given configuration parameters. It accepts specifications such as endpoint path, allowed HTTP methods, processing options (e.g., resize, filter), and output format. The tool produces code snippets or configuration objects defining the endpoint to be integrated within a server or cloud function.", + "category": "image-processing", + "parameters": [ + { + "name": "endpointPath", + "type": "string", + "description": "The URL path where the image processing endpoint will be accessible (e.g., '/process-image').", + "required": true, + "defaultValue": "" + }, + { + "name": "httpMethods", + "type": "array", + "description": "An array of allowed HTTP methods for the endpoint (e.g., ['POST']).", + "required": true, + "defaultValue": "[\"POST\"]" + }, + { + "name": "processingOptions", + "type": "object", + "description": "Configuration object specifying image processing actions such as resize dimensions, filters, and formats.", + "required": true, + "defaultValue": "" + }, + { + "name": "responseFormat", + "type": "string", + "description": "The format of the processed image response, such as 'jpeg', 'png', or 'json' for metadata.", + "required": false, + "defaultValue": "jpeg" + }, + { + "name": "authenticationRequired", + "type": "boolean", + "description": "If true, the generated endpoint will include authentication requirements, such as token validation.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated endpoint code snippet or configuration, including endpoint path, methods, and processing logic details." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically create new REST API endpoints for image processing within a web server or cloud service. It automates generating endpoint code/configuration from parameters describing processing needs, accelerating integration of image processing capabilities.", + "limitations": "This tool generates code or configuration skeletons but does not deploy or run the endpoints automatically. It assumes the user adds generated code to a compatible server environment. It does not support real-time streaming or advanced security policies beyond simple authentication flags.", + "examples": [ + "Create a POST endpoint '/resize-image' that resizes images to 800x600 and outputs jpeg format.", + "Generate an authenticated endpoint '/filter-image' that applies a sepia filter and returns the image in PNG format.", + "Create a GET endpoint '/image-info' that returns image metadata as JSON without processing." + ] + }, + "tags": [ + "image processing", + "API endpoint", + "REST", + "code generation", + "server integration" + ], + "examples": [ + { + "inputJson": "{\"endpointPath\":\"/resize-image\",\"httpMethods\":[\"POST\"],\"processingOptions\":{\"resize\":{\"width\":800,\"height\":600}},\"responseFormat\":\"jpeg\",\"authenticationRequired\":false}", + "description": "Create a POST endpoint '/resize-image' to resize images to 800x600 pixels with JPEG output and no authentication." + }, + { + "inputJson": "{\"endpointPath\":\"/filter-image\",\"httpMethods\":[\"POST\"],\"processingOptions\":{\"filter\":\"sepia\"},\"responseFormat\":\"png\",\"authenticationRequired\":true}", + "description": "Create an authenticated POST endpoint '/filter-image' applying a sepia filter returning PNG images." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Endpoint", + "context": null + } + }, + { + "name": "image-processing.createConfig", + "description": "Generates a JSON configuration object for image processing pipelines based on input parameters such as resizing, filters, and output format. Accepts options defining image adjustments and outputs a structured config to be used by image processing tools or scripts.", + "category": "image-processing", + "parameters": [ + { + "name": "resizeWidth", + "type": "number", + "description": "The target width in pixels to resize images to. Set 0 to skip resizing width.", + "required": false, + "defaultValue": "0" + }, + { + "name": "resizeHeight", + "type": "number", + "description": "The target height in pixels to resize images to. Set 0 to skip resizing height.", + "required": false, + "defaultValue": "0" + }, + { + "name": "applyFilters", + "type": "array", + "description": "List of filters to apply to the image, e.g., ['grayscale', 'blur']. Empty array means no filters.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "compressionQuality", + "type": "number", + "description": "Compression quality from 0 (lowest) to 100 (highest) for lossy formats like JPEG.", + "required": false, + "defaultValue": "80" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Output image format, e.g., 'jpeg', 'png', or 'webp'.", + "required": true, + "defaultValue": "jpeg" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include metadata (EXIF, IPTC) in the output image.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A JSON configuration object detailing the parameters for image processing, including resizing, filters, compression, format, and metadata options." + }, + "aiAgent": { + "useCase": "Use this tool when generating configuration files or objects for automated image processing workflows, where parameters like resize dimensions, filters, output format, and compression need to be specified programmatically. It helps prepare concise configs for image handling tools or libraries.", + "limitations": "This tool only generates configuration objects and does not perform actual image processing. It does not validate whether the given filter names are supported by specific libraries.", + "examples": [ + "Create an image processing config to resize to 800x600 pixels, apply grayscale filter, and output as PNG with metadata included.", + "Generate a config for no resizing, apply blur and sharpen filters, compress at quality 75 and output as WebP format.", + "Create a JPEG output config with default resizing (keep original size), no filters, quality 90, and exclude metadata." + ] + }, + "tags": [ + "image-processing", + "configuration", + "resize", + "filters", + "compression", + "output-format", + "metadata" + ], + "examples": [ + { + "inputJson": "{\"resizeWidth\":800,\"resizeHeight\":600,\"applyFilters\":[\"grayscale\"],\"compressionQuality\":85,\"outputFormat\":\"png\",\"includeMetadata\":true}", + "description": "Config to resize image to 800x600, apply grayscale filter, save as PNG including metadata with moderate compression." + }, + { + "inputJson": "{\"resizeWidth\":0,\"resizeHeight\":0,\"applyFilters\":[\"blur\",\"sharpen\"],\"compressionQuality\":75,\"outputFormat\":\"webp\",\"includeMetadata\":false}", + "description": "Config with no resizing, apply blur and sharpen filters, output WebP with quality 75 and exclude metadata." + }, + { + "inputJson": "{\"resizeWidth\":0,\"resizeHeight\":0,\"applyFilters\":[],\"compressionQuality\":90,\"outputFormat\":\"jpeg\",\"includeMetadata\":false}", + "description": "Config to output JPEG with default size, no filters, compression quality 90 and no metadata included." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Config", + "context": null + } + }, + { + "name": "image-processing.createModule", + "description": "Generates a reusable JavaScript module that applies configurable image processing operations to images. Accepts a list of operations and parameters, creates a clean, well-documented module script implementing those operations, and returns the code as a string for direct integration in web or Node.js projects.", + "category": "image-processing", + "parameters": [ + { + "name": "operations", + "type": "array", + "description": "Array of image processing operations to include in the module, each specified by name and its parameters.", + "required": true, + "defaultValue": "" + }, + { + "name": "moduleName", + "type": "string", + "description": "The name to assign to the generated JavaScript module.", + "required": false, + "defaultValue": "\"ImageProcessor\"" + }, + { + "name": "includeTests", + "type": "boolean", + "description": "Whether to generate basic unit test code for the module.", + "required": false, + "defaultValue": "false" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The JavaScript module format, e.g., 'ES6', 'CommonJS'.", + "required": false, + "defaultValue": "\"ES6\"" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the source code string of the generated module under 'code' and optionally test code under 'testCode' if requested." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically create a reusable JavaScript image processing module customized for specific operations. It helps automate the creation of clean, structured code for projects that require custom image manipulation pipelines.", + "limitations": "It cannot execute image processing itself or handle binary image data. It generates code only and does not validate the correctness of logic beyond basic syntax and provided parameters.", + "examples": [ + "Create a module that applies grayscale and blur effects.", + "Generate a module named 'PhotoFilter' supporting contrast and brightness adjustments with test cases.", + "Produce a CommonJS format module that resizes images and exports functions accordingly." + ] + }, + "tags": [ + "image-processing", + "code-generation", + "javascript", + "module", + "automation", + "image", + "programming" + ], + "examples": [ + { + "inputJson": "{\"operations\":[{\"name\":\"grayscale\",\"params\":{}},{\"name\":\"blur\",\"params\":{\"radius\":5}}],\"moduleName\":\"PhotoEffects\",\"includeTests\":true,\"outputFormat\":\"ES6\"}", + "description": "Generate an ES6 module named 'PhotoEffects' implementing grayscale and blur effects with radius 5, including test code." + }, + { + "inputJson": "{\"operations\":[{\"name\":\"resize\",\"params\":{\"width\":800,\"height\":600}}],\"moduleName\":\"ResizeModule\",\"includeTests\":false,\"outputFormat\":\"CommonJS\"}", + "description": "Generate a CommonJS module named 'ResizeModule' that resizes images to 800x600 without test code." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Module", + "context": null + } + }, + { + "name": "notifications.analyzeLink", + "description": "Analyzes a provided URL link to extract metadata such as page title, description, domain reputation, and safety indicators. Accepts a URL string as input, performs content retrieval and analysis using web scraping and security APIs, then returns a summary including link safety score, metadata, and potential alert levels.", + "category": "notifications", + "parameters": [ + { + "name": "url", + "type": "string", + "description": "The URL link to analyze for metadata and safety.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeSafetyCheck", + "type": "boolean", + "description": "Whether to perform a safety and reputation check on the link domain.", + "required": false, + "defaultValue": "true" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait for retrieving and analyzing the link.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "An object containing link metadata including page title, description, domain, link safety score (0 to 1), and alert levels if any suspicious indicators are found." + }, + "aiAgent": { + "useCase": "This tool should be used when needing to evaluate and notify about the safety or relevance of URL links in notifications, alerts, or messages. For example, an AI agent can use it to scan links before forwarding alerts to users, reducing phishing risks or flagging suspicious domains.", + "limitations": "This tool may not accurately analyze dynamically generated or heavily scripted web pages. Safety checks depend on third-party reputation databases and may not reflect real-time threats. It cannot execute or interact with page scripts.", + "examples": [ + "Analyze this suspicious link for safety and metadata before sending a notification: https://example.com/phishing", + "Check the URL https://news.example.com to extract its title and assess its reputation.", + "Evaluate links in an email to flag any potentially harmful URLs before alerting the user." + ] + }, + "tags": [ + "notifications", + "link analysis", + "safety check", + "metadata extraction", + "security", + "URL" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://www.example.com\",\"includeSafetyCheck\":true}", + "description": "Analyze a standard URL including safety and metadata extraction." + }, + { + "inputJson": "{\"url\":\"http://malicious-site.test\",\"includeSafetyCheck\":true,\"timeoutSeconds\":5}", + "description": "Analyze a potentially malicious URL with a shorter timeout parameter." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Link", + "context": null + } + }, + { + "name": "notifications.analyzeRisk", + "description": "Analyzes security risk data from incoming alert notifications to assess severity, identify threat sources, and prioritize response actions. Accepts an array of alert objects with metadata, applies risk scoring algorithms, and outputs a detailed risk assessment report with risk levels, affected assets, and recommended mitigation steps.", + "category": "notifications", + "parameters": [ + { + "name": "alerts", + "type": "array", + "description": "Array of alert objects containing security event details such as timestamp, alert type, source IP, severity, and affected assets.", + "required": true, + "defaultValue": "" + }, + { + "name": "riskThreshold", + "type": "number", + "description": "Numeric threshold (0-100) above which risks are flagged as critical in the analysis.", + "required": false, + "defaultValue": "70" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "Whether to include mitigation and response recommendations in the output report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "timeWindowHours", + "type": "number", + "description": "Time window in hours to aggregate and analyze incoming alerts for cumulative risk assessment.", + "required": false, + "defaultValue": "24" + } + ], + "returns": { + "type": "object", + "description": "An object containing overall risk score, detailed list of identified risks with severity levels, associated alerts, affected assets, and optional remediation recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to synthesize multiple security notifications into a risk evaluation to inform escalation decisions or automate alert prioritization. Useful for continuous monitoring systems that must highlight urgent threats among many alerts.", + "limitations": "This tool analyzes risk based on provided alert data and heuristics, but does not replace full manual security audits or real-time threat hunting. It cannot prevent attacks or access external threat intelligence beyond input.", + "examples": [ + "Analyze the last 24 hours of alerts to identify critical risks", + "Provide a risk report including mitigation steps for recent intrusion alerts", + "Aggregate multiple notification alerts and determine if urgent action is required" + ] + }, + "tags": [ + "notifications", + "risk analysis", + "security", + "alert prioritization", + "threat assessment", + "cybersecurity" + ], + "examples": [ + { + "inputJson": "{\"alerts\":[{\"timestamp\":\"2024-06-01T12:00:00Z\",\"alertType\":\"unauthorized_access\",\"sourceIp\":\"192.168.1.15\",\"severity\":85,\"affectedAssets\":[\"server1\"]},{\"timestamp\":\"2024-06-01T12:05:00Z\",\"alertType\":\"malware_detection\",\"sourceIp\":\"10.0.0.2\",\"severity\":90,\"affectedAssets\":[\"workstation12\"]}],\"riskThreshold\":75,\"includeRecommendations\":true,\"timeWindowHours\":24}", + "description": "Analyze a set of alerts for last 24 hours, flagging risks above 75 and including mitigation recommendations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Risk", + "context": null + } + }, + { + "name": "notifications.analyzeOpportunity", + "description": "Analyzes a business opportunity to assess its potential impact and urgency by evaluating provided opportunity details, risk factors, and stakeholder priorities. Outputs a summary report indicating the opportunity's opportunity score, key risks, recommended alert level, and suggested notification channels.", + "category": "notifications", + "parameters": [ + { + "name": "opportunityDetails", + "type": "object", + "description": "Structured data detailing the opportunity, including description, expected benefits, timelines, and involved departments.", + "required": true, + "defaultValue": "" + }, + { + "name": "riskFactors", + "type": "array", + "description": "List of risk factor objects classifying potential risks with impact and likelihood parameters related to the opportunity.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "stakeholderPriorities", + "type": "object", + "description": "Mapping of stakeholder roles to their priority levels and interests concerning the opportunity.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "notificationChannels", + "type": "array", + "description": "Preferred channels (e.g., email, SMS, slack) through which alerts should be sent if the opportunity warrants immediate notification.", + "required": false, + "defaultValue": "[\"email\"]" + }, + { + "name": "urgentThreshold", + "type": "number", + "description": "Score threshold above which the opportunity is flagged as urgent and triggers immediate notification.", + "required": false, + "defaultValue": "80" + } + ], + "returns": { + "type": "object", + "description": "An analysis report summarizing the opportunity score, risk assessment, recommended alert level (info, warning, urgent), and suggested notification channels based on prioritization and urgency." + }, + "aiAgent": { + "useCase": "Use this tool when needing to evaluate a business opportunity's potential benefits and risks to decide whether and how to notify stakeholders. Especially useful for product managers or business analysts automating opportunity monitoring and alerting workflows.", + "limitations": "Does not interface directly with external notification systems to send alerts; focuses on analysis and recommendation output. Requires well-structured input data to produce meaningful results.", + "examples": [ + "Analyze this opportunity's details and risk factors, then determine if an urgent notification is needed.", + "Assess the new product launch chance and suggest appropriate alert level and notification channels.", + "Evaluate the potential partnership deal and produce a summary score and recommended alerts based on stakeholder priorities." + ] + }, + "tags": [ + "notifications", + "analysis", + "business", + "opportunity", + "risk assessment", + "alerting", + "stakeholders" + ], + "examples": [ + { + "inputJson": "{\"opportunityDetails\":{\"description\":\"Launch of new AI-powered analytics tool\",\"expectedBenefits\":\"Increase market share by 10%\",\"timeline\":\"Q4 2024\",\"departmentsInvolved\":[\"Product\",\"Marketing\"]},\"riskFactors\":[{\"type\":\"market\",\"impact\":7,\"likelihood\":6},{\"type\":\"technical\",\"impact\":5,\"likelihood\":4}],\"stakeholderPriorities\":{\"CEO\":10,\"ProductManager\":8},\"notificationChannels\":[\"email\",\"slack\"],\"urgentThreshold\":75}", + "description": "Evaluating a new AI analytics tool launch with moderate market and technical risks, prioritizing CEO and product manager interests, to decide alert urgency and channels." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Opportunity", + "context": null + } + }, + { + "name": "notifications.uploadJSON", + "description": "This tool accepts a JSON object representing notification data (such as alerts or messages) and uploads it to a specified notification server or service endpoint. It validates the JSON structure, processes authentication if needed, and returns a status report indicating success or failure along with any error messages and server response details.", + "category": "notifications", + "parameters": [ + { + "name": "jsonData", + "type": "object", + "description": "The JSON object containing notification details to be uploaded, e.g., alert messages, recipients, and metadata.", + "required": true, + "defaultValue": "" + }, + { + "name": "endpointUrl", + "type": "string", + "description": "The URL of the notification server or API endpoint where the JSON data will be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Optional authentication token (e.g., Bearer token) required to authorize the upload to the server.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Timeout duration in seconds for the upload request before it fails.", + "required": false, + "defaultValue": "30" + }, + { + "name": "retryCount", + "type": "number", + "description": "Number of retry attempts if the upload fails due to network or server errors.", + "required": false, + "defaultValue": "3" + } + ], + "returns": { + "type": "object", + "description": "An object containing the upload result: success boolean, server response status code, response message, and error details if any." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to send structured notification data in JSON format to a notification service or alert management system for processing or dispatch. This is useful for automating alerting workflows, uploading batch notifications, or integrating external alert data into centralized notification platforms.", + "limitations": "This tool cannot generate the notification content; it expects pre-formatted JSON. It does not handle complex retry strategies beyond configured attempts or support multipart uploads. Network issues outside of the retry scope may cause failure.", + "examples": [ + "Upload an alert JSON payload to the corporate monitoring system API endpoint.", + "Send a batch of notification messages in JSON format to a cloud notification service with authentication.", + "Retry sending a notification JSON to an endpoint with a specified timeout and retry count." + ] + }, + "tags": [ + "notifications", + "upload", + "json", + "API", + "alerts", + "integration", + "automation" + ], + "examples": [ + { + "inputJson": "{\"jsonData\":{\"alertType\":\"CPU Usage\",\"severity\":\"high\",\"message\":\"CPU usage exceeded 90%\",\"recipients\":[\"admin@example.com\"],\"timestamp\":\"2024-04-26T15:30:00Z\"},\"endpointUrl\":\"https://api.notifications.example.com/upload\",\"authToken\":\"Bearer abc123def456\",\"timeoutSeconds\":20,\"retryCount\":2}", + "description": "Upload a CPU usage alert notification JSON to a secured notification API endpoint with authentication, a 20-second timeout, and 2 retry attempts." + }, + { + "inputJson": "{\"jsonData\":{\"title\":\"Weekly Report\",\"body\":\"The weekly report is ready.\",\"recipients\":[\"team@example.com\"],\"priority\":\"normal\",\"timestamp\":\"2024-04-26T08:00:00Z\"},\"endpointUrl\":\"https://alerts.example.com/notify\"}", + "description": "Send a simple weekly report notification JSON to an alerts endpoint without authentication, using default timeout and retry settings." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "JSON", + "context": null + } + }, + { + "name": "notifications.downloadDataset", + "description": "Downloads a dataset from a specified data source and sends a notification about the download status. Accepts parameters identifying the dataset, the source URL or API endpoint, and notification settings. Processes the data retrieval and triggers notifications upon success or failure. Returns details about the download and notification delivery.", + "category": "notifications", + "parameters": [ + { + "name": "datasetId", + "type": "string", + "description": "Identifier or name of the dataset to download.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceUrl", + "type": "string", + "description": "URL or API endpoint from which to download the dataset.", + "required": true, + "defaultValue": "" + }, + { + "name": "notificationRecipients", + "type": "array", + "description": "List of email addresses or user IDs to notify about download status.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "notificationMethod", + "type": "string", + "description": "Method for notification delivery: 'email', 'sms', or 'inApp'.", + "required": false, + "defaultValue": "email" + }, + { + "name": "includeDataPreview", + "type": "boolean", + "description": "Whether to include a preview of the dataset in the notification if download succeeds.", + "required": false, + "defaultValue": "false" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait for the dataset download before considering it failed.", + "required": false, + "defaultValue": "60" + } + ], + "returns": { + "type": "object", + "description": "An object containing the download status, dataset metadata, notification delivery confirmation, and any error messages if applicable." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to retrieve a dataset from a remote source and notify users or systems about the success or failure of the download operation. Ideal for automated data workflows where monitoring and alerting on dataset availability is required.", + "limitations": "Does not handle transforming or parsing the downloaded data beyond providing a preview. Notification methods are limited to email, SMS, or in-app and require proper configuration beforehand.", + "examples": [ + "Download the sales data CSV from the company API and notify the analytics team via email.", + "Retrieve a public weather dataset JSON and send an SMS alert if download fails.", + "Fetch a large dataset from a secure URL and send an in-app notification with a data preview upon success." + ] + }, + "tags": [ + "notifications", + "dataset", + "download", + "alert", + "data retrieval", + "workflow automation" + ], + "examples": [ + { + "inputJson": "{\"datasetId\":\"sales_2023q1\",\"sourceUrl\":\"https://api.company.com/datasets/sales_2023q1.csv\",\"notificationRecipients\":[\"analytics@company.com\"],\"notificationMethod\":\"email\",\"includeDataPreview\":true,\"timeoutSeconds\":120}", + "description": "Download a quarterly sales dataset CSV and notify analytics team by email including a data preview." + }, + { + "inputJson": "{\"datasetId\":\"weather_daily\",\"sourceUrl\":\"https://weatherdata.example.com/daily.json\",\"notificationRecipients\":[\"+15555550123\"],\"notificationMethod\":\"sms\",\"includeDataPreview\":false}", + "description": "Download daily weather data and notify a user via SMS if download fails." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Dataset", + "context": null + } + }, + { + "name": "notifications.uploadImage", + "description": "Uploads an image file to a notification service, allowing embedding or sending the image within alert notifications. Accepts image data as a base64 string or URL, processes upload to storage, and returns a reference URL for including in notifications.", + "category": "notifications", + "parameters": [ + { + "name": "imageData", + "type": "string", + "description": "Base64-encoded string of the image to upload. Required if imageUrl is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "imageUrl", + "type": "string", + "description": "Direct URL of the image to upload. Required if imageData is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "imageName", + "type": "string", + "description": "Name for the uploaded image file, including extension (e.g., 'alert.png').", + "required": true, + "defaultValue": "" + }, + { + "name": "contentType", + "type": "string", + "description": "MIME type of the image (e.g., 'image/png', 'image/jpeg').", + "required": true, + "defaultValue": "" + }, + { + "name": "notificationId", + "type": "string", + "description": "Identifier of the notification to associate the image with, if applicable.", + "required": false, + "defaultValue": "" + }, + { + "name": "overwrite", + "type": "boolean", + "description": "Whether to overwrite the image if one with the same name already exists.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the uploaded image's accessible URL and an upload status message. Includes 'imageUrl' and 'status' fields." + }, + "aiAgent": { + "useCase": "Use this tool when you need to attach or embed a custom image in notifications, such as alerts or announcements, by uploading image data or linking a remote image. It helps prepare images for inclusion in notification payloads by storing and returning a reference URL.", + "limitations": "Does not handle image resizing or format conversion; requires valid base64 data or a reachable image URL. Does not send the notification itself, only uploads the image for use in notifications.", + "examples": [ + "Upload a custom alert icon as base64 data for a critical notification.", + "Upload an image by providing its URL to embed in a warning notification.", + "Replace an existing notification image by uploading a new image with the same name and overwrite enabled." + ] + }, + "tags": [ + "notifications", + "upload", + "image", + "media", + "alert", + "notification-service", + "file-storage" + ], + "examples": [ + { + "inputJson": "{\"imageData\":\"iVBORw0KGgoAAAANSUhEUgAAAAUA...\",\"imageName\":\"alert-icon.png\",\"contentType\":\"image/png\",\"overwrite\":false}", + "description": "Upload a base64-encoded PNG image for a notification icon without overwriting existing files." + }, + { + "inputJson": "{\"imageUrl\":\"https://example.com/image.jpg\",\"imageName\":\"event-photo.jpg\",\"contentType\":\"image/jpeg\",\"notificationId\":\"notif12345\",\"overwrite\":true}", + "description": "Upload an image by URL to associate it with a specific notification, allowing overwrite of existing image." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Image", + "context": null + } + }, + { + "name": "notifications.uploadDataset", + "description": "Uploads a dataset file to a specified notification service endpoint, optionally with metadata tags for better categorization. Accepts file content as a base64 string or URL, processes the upload by validating format and size, and returns a status summary including upload ID and any errors encountered.", + "category": "notifications", + "parameters": [ + { + "name": "datasetName", + "type": "string", + "description": "The name identifier for the dataset being uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileContentBase64", + "type": "string", + "description": "The base64-encoded content of the dataset file to upload. Provide either this or fileUrl.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileUrl", + "type": "string", + "description": "URL pointing to the dataset file to fetch and upload. Provide either this or fileContentBase64.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileType", + "type": "string", + "description": "The file format/type of the dataset (e.g. csv, json, xml). Used for validation and processing.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadataTags", + "type": "array", + "description": "An optional array of strings tagging the dataset for categorization and filtering in the notification service.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "notifyOnCompletion", + "type": "boolean", + "description": "Whether to send a notification upon successful upload completion.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Result object containing upload status, a unique uploadId, error messages if any, and confirmation timestamps." + }, + "aiAgent": { + "useCase": "Use this tool when you need to upload datasets to a notification or alerting platform that supports structured data ingestion, allowing subsequent notifications or alerts based on the dataset content. Ideal for integrating data uploads with alert workflows.", + "limitations": "This tool does not process or analyze the dataset content beyond basic format validation. It cannot transform data or trigger notifications by itself beyond optionally signaling completion.", + "examples": [ + "Upload a CSV dataset file encoded in base64 with metadata tags.", + "Upload a dataset by providing a public URL for the file and request a completion notification.", + "Upload a JSON dataset without metadata and no notification needed." + ] + }, + "tags": [ + "upload", + "notifications", + "dataset", + "file-transfer", + "data-management" + ], + "examples": [ + { + "inputJson": "{\"datasetName\":\"user_activity_log\",\"fileContentBase64\":\"YmFzZTY0ZW5jb2RlZGNvbnRlbnQ=\",\"fileType\":\"csv\",\"metadataTags\":[\"user\",\"activity\"],\"notifyOnCompletion\":true}", + "description": "Uploading a CSV dataset provided as a base64 string with tags and notification on completion enabled." + }, + { + "inputJson": "{\"datasetName\":\"system_metrics\",\"fileUrl\":\"https://example.com/data/system_metrics.json\",\"fileType\":\"json\",\"notifyOnCompletion\":false}", + "description": "Uploading a JSON dataset by fetching file from a URL without metadata tags or notifications." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Dataset", + "context": null + } + }, + { + "name": "notifications.downloadImage", + "description": "This tool downloads an image from a specified URL and sends it as a notification to a user or a group. It accepts parameters to specify the image source URL, notification recipient(s), and optional message text. It processes the URL to fetch the image, then packages and delivers it as part of a notification message. The output confirms success or provides error details.", + "category": "notifications", + "parameters": [ + { + "name": "imageUrl", + "type": "string", + "description": "The direct URL of the image to download and include in the notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientId", + "type": "string", + "description": "The identifier (user ID or group ID) of the recipient who will receive the image notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "messageText", + "type": "string", + "description": "Optional text message to accompany the image in the notification.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait for the image download before timing out. Default is 10 seconds.", + "required": false, + "defaultValue": "10" + }, + { + "name": "retryOnFail", + "type": "boolean", + "description": "Whether to retry downloading the image once if the first attempt fails. Default is false.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing a success boolean and an optional error message if the operation failed." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to fetch an image from a URL and send it as part of a notification to users or groups, such as alerting about new visual content or updates that include images. It enables combining media with alerts for richer communication.", + "limitations": "The tool cannot download images from protected or authenticated URLs, nor can it transform or edit images. It also does not support batch sending to multiple recipients in a single call.", + "examples": [ + "Send a notification with an image URL to a single user with a custom message.", + "Download an image and notify a group without additional text.", + "Attempt download with retry enabled if the first download fails." + ] + }, + "tags": [ + "notification", + "image", + "download", + "alert", + "media", + "messaging" + ], + "examples": [ + { + "inputJson": "{\"imageUrl\":\"https://example.com/alert.jpg\",\"recipientId\":\"user_12345\",\"messageText\":\"New alert image available\",\"timeoutSeconds\":10,\"retryOnFail\":false}", + "description": "Send an alert notification with an image and message to a specific user." + }, + { + "inputJson": "{\"imageUrl\":\"https://cdn.example.org/images/update.png\",\"recipientId\":\"group_67890\",\"messageText\":\"\",\"timeoutSeconds\":5,\"retryOnFail\":true}", + "description": "Send a notification with an image only to a group, retrying download once if needed." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Image", + "context": null + } + }, + { + "name": "notifications.formatWord", + "description": "This tool formats a given word string to fit notification display requirements. It accepts a word as input and applies transformations such as capitalization style (e.g., uppercase, lowercase, title case), truncation to a max length, and optional appending of suffixes or prefixes. It returns the formatted word string ready for use in notifications or alerts.", + "category": "notifications", + "parameters": [ + { + "name": "word", + "type": "string", + "description": "The word string to be formatted for notification display.", + "required": true, + "defaultValue": "" + }, + { + "name": "capitalization", + "type": "string", + "description": "Capitalization style to apply: 'uppercase', 'lowercase', 'title' or 'none'.", + "required": false, + "defaultValue": "none" + }, + { + "name": "maxLength", + "type": "number", + "description": "Optional maximum length of the formatted word; word will be truncated and suffixed with '...' if exceeded. 0 means no truncation.", + "required": false, + "defaultValue": "0" + }, + { + "name": "prefix", + "type": "string", + "description": "Optional string to prepend to the word.", + "required": false, + "defaultValue": "" + }, + { + "name": "suffix", + "type": "string", + "description": "Optional string to append to the word.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "string", + "description": "The resulting formatted word string after applying capitalization, truncation, prefix, and suffix." + }, + "aiAgent": { + "useCase": "Use this tool when preparing single-word content for notifications or alerts where display formatting is crucial, such as enforcing capitalization styles, limiting word length for UI constraints, and adding context via prefixes or suffixes. It helps ensure consistent and visually appropriate notification text components.", + "limitations": "This tool only formats single words and does not handle full sentences or multi-word phrases. It also does not perform language translation or semantic modifications.", + "examples": [ + "Format the word 'warning' as uppercase with a max length of 5 characters.", + "Add a prefix 'URGENT: ' to the word 'update' in title case.", + "Truncate the word 'notification' to max 8 characters and append '!' suffix." + ] + }, + "tags": [ + "formatting", + "notification", + "string", + "word", + "capitalization", + "truncation", + "alerts" + ], + "examples": [ + { + "inputJson": "{\"word\":\"warning\",\"capitalization\":\"uppercase\",\"maxLength\":5}", + "description": "Format the word 'warning' as uppercase and truncate to 5 characters." + }, + { + "inputJson": "{\"word\":\"update\",\"capitalization\":\"title\",\"prefix\":\"URGENT: \",\"maxLength\":0}", + "description": "Add prefix 'URGENT: ' and capitalize the word 'update' as title case without truncation." + }, + { + "inputJson": "{\"word\":\"notification\",\"maxLength\":8,\"suffix\":\"!\"}", + "description": "Truncate 'notification' to 8 characters and append an exclamation mark as suffix." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Word", + "context": null + } + }, + { + "name": "notifications.renderReport", + "description": "Renders a notification report by compiling provided report data and formatting options into a visual or textual alert-ready format. Accepts structured report content, optional styling preferences, and output format specification. Produces a rendered notification report string suitable for display or sending as an alert.", + "category": "notifications", + "parameters": [ + { + "name": "reportData", + "type": "object", + "description": "Structured content of the report to be rendered, including sections, metrics, and key information.", + "required": true, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "The output format for the report (e.g., 'text', 'html', 'markdown').", + "required": false, + "defaultValue": "text" + }, + { + "name": "styleOptions", + "type": "object", + "description": "Optional styling preferences such as color themes, fonts, and layout details.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Flag to include a summary section in the rendered report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en', 'es') for localization of report text.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing the fully rendered report as a string along with metadata such as format and length." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to convert structured report data into a finalized notification format suitable for user alerting systems, including emails, in-app notifications, or dashboards. It handles formatting, optional localization, and styling to meet presentation requirements.", + "limitations": "Does not handle report data validation or complex graphical chart generation beyond basic styling. Not designed for sending notifications, only rendering content.", + "examples": [ + "Render a sales report as HTML with custom colors for email notification.", + "Generate a plain text system status report with summary in English.", + "Produce a markdown-formatted performance report localized to Spanish without summary section." + ] + }, + "tags": [ + "notifications", + "rendering", + "report", + "formatting", + "alert", + "localization" + ], + "examples": [ + { + "inputJson": "{\"reportData\":{\"title\":\"Weekly Sales Report\",\"content\":[{\"section\":\"Revenue\",\"value\":\"$10,000\"},{\"section\":\"Units Sold\",\"value\":150}]},\"format\":\"html\",\"styleOptions\":{\"colorScheme\":\"blue\"},\"includeSummary\":true,\"language\":\"en\"}", + "description": "Render a weekly sales report to HTML format with blue color scheme including a summary." + }, + { + "inputJson": "{\"reportData\":{\"title\":\"System Status\",\"content\":[{\"section\":\"CPU Usage\",\"value\":\"75%\"},{\"section\":\"Memory\",\"value\":\"65%\"}]},\"format\":\"text\",\"includeSummary\":true,\"language\":\"en\"}", + "description": "Render a system status report as plain text with summary in English." + }, + { + "inputJson": "{\"reportData\":{\"title\":\"Informe de Rendimiento\",\"content\":[{\"section\":\"Usuarios Activos\",\"value\":5000},{\"section\":\"Errores\",\"value\":2}]},\"format\":\"markdown\",\"includeSummary\":false,\"language\":\"es\"}", + "description": "Render a performance report in markdown format localized in Spanish without summary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Report", + "context": null + } + }, + { + "name": "notifications.formatDataset", + "description": "Formats a dataset of notification entries into a structured text or HTML message suitable for sending as alerts. Accepts an array of notification objects with details like title, message, and timestamp, and applies customizable formatting templates to produce a formatted notification summary string.", + "category": "notifications", + "parameters": [ + { + "name": "dataset", + "type": "array", + "description": "An array of notification objects each containing details such as title, message, and timestamp to format.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatType", + "type": "string", + "description": "The output format of the formatted dataset, e.g., 'text' for plain text or 'html' for HTML formatting.", + "required": false, + "defaultValue": "text" + }, + { + "name": "template", + "type": "string", + "description": "An optional custom template string defining how each notification entry should be formatted. Supports placeholders like {{title}}, {{message}}, {{timestamp}}.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeTimestamp", + "type": "boolean", + "description": "Whether to include notification timestamps in the formatted output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "sortOrder", + "type": "string", + "description": "Sorting order of the notifications based on timestamp; either 'asc' for ascending or 'desc' for descending.", + "required": false, + "defaultValue": "desc" + } + ], + "returns": { + "type": "object", + "description": "An object containing a single 'formattedMessage' string property with the fully formatted notification dataset according to the specified options." + }, + "aiAgent": { + "useCase": "Use this tool when needing to convert raw notification data into a human-readable message format for sending alerts or reports via email, SMS, or push notifications. It supports flexible formatting styles for different channels and presentation requirements.", + "limitations": "Does not send notifications itself; purely formats data. Complex formatting beyond simple templating is not supported. Requires well-structured notification objects as input.", + "examples": [ + "Format a batch of system alert notifications into an HTML email body.", + "Convert a list of user notifications into plain text for SMS delivery.", + "Generate a summary text block from raw notification data for logging or display." + ] + }, + "tags": [ + "notifications", + "formatting", + "dataset", + "alert", + "message", + "templating" + ], + "examples": [ + { + "inputJson": "{\"dataset\":[{\"title\":\"Server Down\",\"message\":\"The server is not responding.\",\"timestamp\":\"2024-06-01T12:00:00Z\"},{\"title\":\"Backup Complete\",\"message\":\"Backup finished successfully.\",\"timestamp\":\"2024-06-01T11:00:00Z\"}],\"formatType\":\"text\",\"includeTimestamp\":true,\"sortOrder\":\"desc\"}", + "description": "Format two notifications into a descending timestamp ordered plain text message including timestamps." + }, + { + "inputJson": "{\"dataset\":[{\"title\":\"New Login\",\"message\":\"User logged in from a new device.\",\"timestamp\":\"2024-06-02T09:30:00Z\"}],\"formatType\":\"html\",\"template\":\"

{{title}}: {{message}} at {{timestamp}}

\",\"includeTimestamp\":true}", + "description": "Format a single notification into an HTML paragraph using a custom template including the timestamp." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Dataset", + "context": null + } + }, + { + "name": "notifications.buildService", + "description": "This tool allows the creation and configuration of a notification service infrastructure. It accepts parameters defining notification channels, message templates, delivery rules, and retry policies. The tool processes these inputs to build a scalable and customizable notification service, returning the service configuration details including endpoints and status.", + "category": "notifications", + "parameters": [ + { + "name": "serviceName", + "type": "string", + "description": "Name identifier for the notification service being built.", + "required": true, + "defaultValue": "" + }, + { + "name": "channels", + "type": "array", + "description": "List of notification channels to support (e.g., email, SMS, push).", + "required": true, + "defaultValue": "[]" + }, + { + "name": "messageTemplates", + "type": "object", + "description": "Key-value mapping of channel names to message templates for notifications.", + "required": true, + "defaultValue": "{}" + }, + { + "name": "deliveryRules", + "type": "object", + "description": "Configuration of rules for when and how notifications are sent (e.g., time windows, user preferences).", + "required": false, + "defaultValue": "{}" + }, + { + "name": "retryPolicy", + "type": "object", + "description": "Defines retry attempts and backoff strategy for failed notification deliveries.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "maxConcurrency", + "type": "number", + "description": "Maximum number of simultaneous notification send operations to allow.", + "required": false, + "defaultValue": "10" + }, + { + "name": "loggingEnabled", + "type": "boolean", + "description": "Enable or disable logging of notification delivery attempts and results.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns the configured notification service details including service ID, configured channels, endpoints, status, and summary of rules and policies." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to provision a new, customized notification service that handles multiple delivery channels with specific templates and delivery logic. Ideal for automating the setup of infrastructure to send alerts, reminders, or marketing messages through various communication methods.", + "limitations": "This tool does not implement the actual sending of notifications; it builds and configures the notification service infrastructure only. It also does not handle user authentication or message content personalization beyond provided templates.", + "examples": [ + "Build a notification service named 'MarketingAlerts' supporting email and SMS with corresponding templates and a retry policy with 3 retries.", + "Create a notification service for push notifications only, with delivery restricted to business hours and logging disabled.", + "Set up a notification service with channels email, SMS, and push, including custom delivery rules and max concurrency set to 20." + ] + }, + "tags": [ + "notifications", + "service", + "build", + "infrastructure", + "alerts", + "multi-channel", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"serviceName\":\"MarketingAlerts\",\"channels\":[\"email\",\"sms\"],\"messageTemplates\":{\"email\":\"Hello {{name}}, check out our new offers!\",\"sms\":\"Hi {{name}}, don't miss our deals!\"},\"retryPolicy\":{\"maxRetries\":3,\"backoffMS\":5000},\"loggingEnabled\":true}", + "description": "Creates a notification service 'MarketingAlerts' with email and SMS channels, respective message templates, a retry policy of 3 attempts, and logging enabled." + }, + { + "inputJson": "{\"serviceName\":\"PushOnlyService\",\"channels\":[\"push\"],\"messageTemplates\":{\"push\":\"New event available!\"},\"deliveryRules\":{\"timeWindow\":{\"start\":\"09:00\",\"end\":\"17:00\"}},\"loggingEnabled\":false}", + "description": "Creates a push notifications-only service with delivery restricted to business hours and logging disabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Service", + "context": null + } + }, + { + "name": "notifications.draftReport", + "description": "This tool accepts input parameters including report title, recipient list, key data points, and optional formatting instructions. It processes these inputs to compose a professional notification report draft, summarizing core information in a clear, structured message ready for review or sending. Outputs the report content as text along with metadata.", + "category": "notifications", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title or subject of the report to be drafted.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipients", + "type": "array", + "description": "List of recipient email addresses or identifiers for the notification report.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataPoints", + "type": "object", + "description": "Key-value pairs representing the main information and metrics to include in the report.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Whether to include a summary section at the beginning of the report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "formatStyle", + "type": "string", + "description": "Preferred formatting style for the report (e.g., \"formal\", \"brief\", \"technical\").", + "required": false, + "defaultValue": "formal" + }, + { + "name": "priorityLevel", + "type": "string", + "description": "Urgency level for the notification report (e.g., \"normal\", \"high\").", + "required": false, + "defaultValue": "normal" + } + ], + "returns": { + "type": "object", + "description": "An object containing the drafted report text and metadata including title, recipients, and priority." + }, + "aiAgent": { + "useCase": "Use this tool when needing to prepare a clear, structured notification report draft for stakeholders or team members based on provided data points, recipients, and context. It helps in automating generation of professional communication content before sending alerts or notifications.", + "limitations": "Cannot send notifications directly, perform real-time data analytics, or customize advanced formatting like tables or charts beyond simple text summary.", + "examples": [ + "Draft a high priority report summarizing sales data for the marketing team.", + "Create a brief notification report listing server uptime stats for IT support.", + "Generate a formal summary report about project milestones for executive recipients." + ] + }, + "tags": [ + "notifications", + "reporting", + "drafting", + "alerts", + "communication" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Weekly Sales Update\",\"recipients\":[\"sales-team@example.com\",\"manager@example.com\"],\"dataPoints\":{\"TotalSales\":\"$150,000\",\"NewCustomers\":25,\"ReturnedItems\":5},\"includeSummary\":true,\"formatStyle\":\"formal\",\"priorityLevel\":\"normal\"}", + "description": "Draft a formal weekly sales update report for the sales team and manager including key sales metrics." + }, + { + "inputJson": "{\"title\":\"Server Downtime Notification\",\"recipients\":[\"it-support@example.com\"],\"dataPoints\":{\"DowntimeDuration\":\"2 hours\",\"AffectedServices\":\"Database, API Gateway\"},\"includeSummary\":false,\"formatStyle\":\"brief\",\"priorityLevel\":\"high\"}", + "description": "Create a brief high priority notification report about recent server downtime to IT support." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Report", + "context": null + } + }, + { + "name": "notifications.composeText", + "description": "This tool constructs a complete notification text message based on input parameters such as recipient name, message purpose, urgency level, and optional call to action. It processes these inputs to generate a coherent, appropriately formatted notification message string suitable for sending via various communication channels.", + "category": "notifications", + "parameters": [ + { + "name": "recipientName", + "type": "string", + "description": "Name of the person receiving the notification; used to personalize the message", + "required": true, + "defaultValue": "" + }, + { + "name": "messagePurpose", + "type": "string", + "description": "Brief description of why the notification is being sent, e.g., 'reminder', 'alert', 'update'", + "required": true, + "defaultValue": "" + }, + { + "name": "urgencyLevel", + "type": "string", + "description": "Sets the urgency tone of the message (e.g., 'low', 'medium', 'high'), affecting phrasing and emphasis", + "required": false, + "defaultValue": "medium" + }, + { + "name": "callToAction", + "type": "string", + "description": "Optional instruction or link the recipient should follow, e.g., 'Please confirm your attendance'", + "required": false, + "defaultValue": "" + }, + { + "name": "includeTimestamp", + "type": "boolean", + "description": "Flag indicating whether to include the current timestamp in the message", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the composed notification text under the 'text' field, and metadata about urgency and timestamp inclusion." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to generate a clear, personalized notification message with variable urgency and optional call-to-action instructions, suitable for downstream delivery via email, SMS, or push notifications.", + "limitations": "This tool does not send notifications itself, nor does it support multimedia messages or rich formatting beyond plain text. It also cannot infer context beyond provided parameters.", + "examples": [ + "Compose a high urgency notification reminding the recipient to update their password immediately.", + "Create a medium urgency informational update including a link to the new policy document.", + "Generate a low urgency birthday greeting message with recipient's name and timestamp." + ] + }, + "tags": [ + "notifications", + "textGeneration", + "messageComposition", + "personalization", + "alerts", + "communication" + ], + "examples": [ + { + "inputJson": "{\"recipientName\":\"Alice\",\"messagePurpose\":\"reminder\",\"urgencyLevel\":\"high\",\"callToAction\":\"Reset your password now\",\"includeTimestamp\":true}", + "description": "A high urgency password reset reminder with call to action and timestamp included." + }, + { + "inputJson": "{\"recipientName\":\"Bob\",\"messagePurpose\":\"update\",\"urgencyLevel\":\"medium\",\"callToAction\":\"Review the attached report\",\"includeTimestamp\":false}", + "description": "A medium urgency update notification without timestamp, prompting report review." + }, + { + "inputJson": "{\"recipientName\":\"Carol\",\"messagePurpose\":\"greeting\",\"urgencyLevel\":\"low\",\"callToAction\":\"\",\"includeTimestamp\":true}", + "description": "A low urgency greeting message including recipient's name and timestamp, with no call to action." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Text", + "context": null + } + }, + { + "name": "notifications.composeWord", + "description": "Composes a customizable notification message as a single word or concise phrase based on input parameters such as urgency, context, and sentiment. It outputs a well-formed word or short notification keyword suitable for alerts or UI elements.", + "category": "notifications", + "parameters": [ + { + "name": "context", + "type": "string", + "description": "The thematic or situational context for the notification word (e.g., 'error', 'success', 'reminder').", + "required": true, + "defaultValue": "" + }, + { + "name": "urgencyLevel", + "type": "string", + "description": "The urgency of the notification, such as 'low', 'medium', 'high'. This influences word choice to convey importance.", + "required": false, + "defaultValue": "medium" + }, + { + "name": "sentiment", + "type": "string", + "description": "The emotional tone to convey: 'neutral', 'positive', or 'negative'. Affects word positivity or negativity.", + "required": false, + "defaultValue": "neutral" + }, + { + "name": "targetAudience", + "type": "string", + "description": "Intended recipient group for whom the word should be suitable, e.g., 'general', 'technical', 'children'.", + "required": false, + "defaultValue": "general" + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en', 'es') specifying language of the output word.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing the composed notification word and metadata such as applied parameters and confidence score indicating suitability." + }, + "aiAgent": { + "useCase": "Use this tool when generating concise, impactful notification keywords or labels tailored to specific contexts, urgency levels, and audience sentiment. It helps automate crafting brief alert words for UI badges, system messages, or notification centers.", + "limitations": "This tool generates single words or very short phrases and does not produce full notification messages or multi-sentence content. It cannot guarantee cultural appropriateness beyond the specified language or deeply nuanced meanings.", + "examples": [ + "Compose a notification word for a high urgency error message.", + "Generate a positive notification keyword suitable for children in English.", + "Create a medium urgency reminder word for a technical audience." + ] + }, + "tags": [ + "notifications", + "compose", + "word", + "alert", + "urgency", + "sentiment", + "context" + ], + "examples": [ + { + "inputJson": "{\"context\":\"error\",\"urgencyLevel\":\"high\",\"sentiment\":\"negative\",\"targetAudience\":\"general\",\"language\":\"en\"}", + "description": "Generate a high urgency negative notification word for general audience in English." + }, + { + "inputJson": "{\"context\":\"success\",\"urgencyLevel\":\"low\",\"sentiment\":\"positive\",\"targetAudience\":\"technical\",\"language\":\"en\"}", + "description": "Generate a low urgency positive notification word for technical audience in English." + }, + { + "inputJson": "{\"context\":\"reminder\",\"urgencyLevel\":\"medium\",\"sentiment\":\"neutral\",\"targetAudience\":\"children\",\"language\":\"en\"}", + "description": "Generate a medium urgency neutral notification word tailored for children in English." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Word", + "context": null + } + }, + { + "name": "notifications.composeMessage", + "description": "Composes a notification message based on given inputs such as recipient details, message content, urgency level, and optional attachments. Processes inputs to produce a structured message object ready for sending or further processing in notification workflows.", + "category": "notifications", + "parameters": [ + { + "name": "recipient", + "type": "string", + "description": "Email or identifier of the notification recipient.", + "required": true, + "defaultValue": "" + }, + { + "name": "subject", + "type": "string", + "description": "Subject line of the notification message.", + "required": true, + "defaultValue": "" + }, + { + "name": "body", + "type": "string", + "description": "Main textual content of the message.", + "required": true, + "defaultValue": "" + }, + { + "name": "urgencyLevel", + "type": "string", + "description": "Urgency level of the message (e.g., low, normal, high, critical).", + "required": false, + "defaultValue": "normal" + }, + { + "name": "attachments", + "type": "array", + "description": "Optional list of file attachment URLs or encoded contents.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "format", + "type": "string", + "description": "Message format, e.g., plain text or HTML.", + "required": false, + "defaultValue": "plain" + }, + { + "name": "scheduledTime", + "type": "string", + "description": "Optional ISO-8601 timestamp to schedule sending.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Structured message object containing all provided and processed fields, ready for notification delivery systems." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to generate a structured notification message for email, SMS, or app alerts by combining recipient info, message content, urgency, formatting, and optional attachments into a single, well-formed message object. It is ideal for preparing messages for downstream sending services.", + "limitations": "This tool does not send notifications itself; it only composes the message content and metadata. It cannot validate recipient addresses or handle delivery failures.", + "examples": [ + "Compose an urgent alert email to the admin about a security breach with an attached log file.", + "Create a normal priority reminder message for a user with a scheduled send time tomorrow.", + "Generate an HTML formatted promotional notification with images for app users." + ] + }, + "tags": [ + "notifications", + "message", + "compose", + "communication", + "alert", + "email", + "sms" + ], + "examples": [ + { + "inputJson": "{\"recipient\":\"user@example.com\",\"subject\":\"System Alert\",\"body\":\"Your password will expire in 3 days.\",\"urgencyLevel\":\"high\",\"attachments\":[],\"format\":\"plain\",\"scheduledTime\":\"\"}", + "description": "Compose a high-urgency plain text notification about password expiry for a user." + }, + { + "inputJson": "{\"recipient\":\"admin@company.com\",\"subject\":\"Security Breach Detected\",\"body\":\"Multiple failed logins detected.\",\"urgencyLevel\":\"critical\",\"attachments\":[\"https://example.com/logs/failures.log\"],\"format\":\"plain\",\"scheduledTime\":\"\"}", + "description": "Compose a critical security alert with an attached log file for the admin." + }, + { + "inputJson": "{\"recipient\":\"user123\",\"subject\":\"Weekly Newsletter\",\"body\":\"

This Week's News

Check out our latest updates!

\",\"urgencyLevel\":\"normal\",\"attachments\":[],\"format\":\"html\",\"scheduledTime\":\"2024-06-01T09:00:00Z\"}", + "description": "Compose an HTML formatted newsletter scheduled to send in the future." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Message", + "context": null + } + }, + { + "name": "notifications.formatContract", + "description": "This tool formats contract documents into standardized notification templates suitable for alerting stakeholders. It accepts raw contract text and parameters specifying formatting style, key sections to highlight, and output notification type. The output is a formatted notification string optimized for email, SMS, or in-app alerts, preserving critical contract information clearly and concisely.", + "category": "notifications", + "parameters": [ + { + "name": "contractText", + "type": "string", + "description": "Raw text of the contract document to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "highlightSections", + "type": "array", + "description": "List of key contract sections to emphasize in the notification, e.g., ['termination', 'payment terms'].", + "required": false, + "defaultValue": "[]" + }, + { + "name": "notificationType", + "type": "string", + "description": "The notification format type: 'email', 'sms', or 'inApp'.", + "required": true, + "defaultValue": "email" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum character length of the formatted notification output.", + "required": false, + "defaultValue": "500" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Whether to include a brief summary of the contract in the notification.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted notification string and metadata about highlighted sections." + }, + "aiAgent": { + "useCase": "Use this tool when you need to transform lengthy contract documents into concise, readable notifications tailored for different communication channels. Ideal for automated alert systems that notify stakeholders about critical contract details without requiring them to read entire documents.", + "limitations": "Cannot interpret highly complex legal language beyond basic section extraction; does not generate legally binding summaries or advice; output limited by maxLength parameter may omit some details.", + "examples": [ + "Format this contract text for an SMS alert highlighting payment terms and deadlines.", + "Create an email notification from the given contract focusing on cancellation clauses.", + "Generate an in-app notification summarizing the contract with key sections emphasized." + ] + }, + "tags": [ + "notifications", + "formatting", + "contracts", + "legal", + "alerts", + "document processing" + ], + "examples": [ + { + "inputJson": "{\"contractText\":\"This contract agreement establishes the payment terms and termination conditions between parties.\",\"highlightSections\":[\"payment terms\",\"termination\"],\"notificationType\":\"email\",\"maxLength\":300,\"includeSummary\":true}", + "description": "Format a short contract text into an email notification emphasizing payment and termination sections." + }, + { + "inputJson": "{\"contractText\":\"The service contract details delivery schedules and penalties.\",\"highlightSections\":[\"penalties\"],\"notificationType\":\"sms\",\"maxLength\":160,\"includeSummary\":false}", + "description": "Generate an SMS notification from a service contract focusing on penalties without summary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Contract", + "context": null + } + }, + { + "name": "notifications.buildContainer", + "description": "This tool builds a containerized notification service infrastructure that allows sending alerts via multiple channels. It accepts configuration parameters including notification channels, container specifications, and environment settings. It processes these inputs to generate deployment-ready container specifications (e.g., Docker or Kubernetes manifests) for notification services.", + "category": "notifications", + "parameters": [ + { + "name": "containerName", + "type": "string", + "description": "The unique name for the notification container service to be built.", + "required": true, + "defaultValue": "" + }, + { + "name": "notificationChannels", + "type": "array", + "description": "List of notification channels to configure, e.g., ['email','sms','slack'].", + "required": true, + "defaultValue": "" + }, + { + "name": "cpuLimit", + "type": "string", + "description": "CPU resource limit for the container (e.g., '500m' for 0.5 CPU).", + "required": false, + "defaultValue": "500m" + }, + { + "name": "memoryLimit", + "type": "string", + "description": "Memory resource limit for the container (e.g., '256Mi').", + "required": false, + "defaultValue": "256Mi" + }, + { + "name": "environmentVariables", + "type": "object", + "description": "Key-value pairs of environment variables to pass into the container.", + "required": false, + "defaultValue": "" + }, + { + "name": "replicaCount", + "type": "number", + "description": "Number of container replicas to deploy for redundancy/scaling.", + "required": false, + "defaultValue": "1" + }, + { + "name": "baseImage", + "type": "string", + "description": "Base container image used for the notification service (e.g., 'node:14-alpine').", + "required": false, + "defaultValue": "node:14-alpine" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated container specification manifest as a string and metadata info such as container name and applied configurations." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically generate container deployment manifests for a notification service that can send alerts via multiple configured channels. The tool helps convert user notification preferences and infrastructure constraints into deployable formats for container orchestration platforms.", + "limitations": "This tool does not deploy containers or verify the runtime notification delivery. It only generates container build and deployment specifications based on inputs. It cannot configure notification backend integrations beyond basic channel selection.", + "examples": [ + "Build a notification container named 'alert-service' supporting email and Slack channels with default resources.", + "Create a notification container with 3 replicas, higher CPU limits, and custom environment variables for API keys.", + "Generate container specs using a specific base image tailored for lightweight notification processing." + ] + }, + "tags": [ + "notifications", + "container", + "build", + "infrastructure", + "deployment", + "alerts" + ], + "examples": [ + { + "inputJson": "{\"containerName\":\"alert-service\",\"notificationChannels\":[\"email\",\"slack\"],\"cpuLimit\":\"500m\",\"memoryLimit\":\"256Mi\",\"environmentVariables\":{\"EMAIL_API_KEY\":\"abc123\"},\"replicaCount\":1,\"baseImage\":\"node:14-alpine\"}", + "description": "Build a notification container named 'alert-service' supporting email and Slack with default CPU/memory and one replica." + }, + { + "inputJson": "{\"containerName\":\"multi-alert\",\"notificationChannels\":[\"sms\",\"email\",\"slack\"],\"cpuLimit\":\"1\",\"memoryLimit\":\"512Mi\",\"environmentVariables\":{\"SMS_API_KEY\":\"xyz789\",\"SLACK_WEBHOOK\":\"https://example.com/webhook\"},\"replicaCount\":3,\"baseImage\":\"node:16-alpine\"}", + "description": "Create a more powerful notification container with three replicas and multiple notification channels configured." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Container", + "context": null + } + }, + { + "name": "notifications.buildBranch", + "description": "Constructs a structured notification message for a code branch event, such as creation, update, or deletion. Accepts branch details (name, repository, action), optional metadata, and formats a notification payload suitable for alerting users or integrating with notification systems. Outputs a JSON object representing the complete notification message.", + "category": "notifications", + "parameters": [ + { + "name": "branchName", + "type": "string", + "description": "The name of the branch related to the notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "repositoryName", + "type": "string", + "description": "The name of the repository where the branch exists.", + "required": true, + "defaultValue": "" + }, + { + "name": "actionType", + "type": "string", + "description": "Type of branch action triggering notification, e.g., created, updated, deleted.", + "required": true, + "defaultValue": "" + }, + { + "name": "author", + "type": "string", + "description": "The username or identifier of who performed the branch action.", + "required": false, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted timestamp of when the branch event occurred.", + "required": false, + "defaultValue": "" + }, + { + "name": "additionalInfo", + "type": "object", + "description": "Optional additional metadata to include in the notification, such as commit hashes or links.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing the formatted notification message to be sent or logged, including all relevant branch event details." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate consistent, structured notifications about branch-related events in code repositories to inform users or trigger workflows. It helps automate alert content creation with contextual details for integration with messaging platforms or monitoring systems.", + "limitations": "This tool does not send the notification itself; it only builds the message payload. It requires external infrastructure to deliver notifications. Also, it does not validate repository existence or branch status beyond formatting provided inputs.", + "examples": [ + "Generate a notification for a newly created branch 'feature/login' in the 'mobile-app' repo by user 'jdoe'.", + "Build a notification for branch deletion event including commit reference and timestamp.", + "Create a message for a branch update carried out by 'alice' with additional links to the pull request." + ] + }, + "tags": [ + "notifications", + "branch", + "code", + "alerts", + "development", + "automation" + ], + "examples": [ + { + "inputJson": "{\"branchName\":\"feature/login\",\"repositoryName\":\"mobile-app\",\"actionType\":\"created\",\"author\":\"jdoe\",\"timestamp\":\"2024-06-10T15:30:00Z\"}", + "description": "Notification for branch creation event in mobile-app repo by user jdoe." + }, + { + "inputJson": "{\"branchName\":\"hotfix/issue-123\",\"repositoryName\":\"backend-service\",\"actionType\":\"deleted\",\"timestamp\":\"2024-06-10T16:00:00Z\",\"additionalInfo\":{\"commitHash\":\"a1b2c3d4\"}}", + "description": "Notification for branch deletion with commit hash info." + }, + { + "inputJson": "{\"branchName\":\"release/v2.0\",\"repositoryName\":\"web-frontend\",\"actionType\":\"updated\",\"author\":\"alice\",\"additionalInfo\":{\"prLink\":\"https://repo.com/pull/456\"}}", + "description": "Notification for branch update with PR link included." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Branch", + "context": null + } + }, + { + "name": "notifications.buildPullRequest", + "description": "Builds a structured notification message for a code pull request. Accepts pull request details such as title, author, status, description, and changed files, then assembles a formatted notification object suitable for sending alerts or posting in communication channels.", + "category": "notifications", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title of the pull request to include in the notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "author", + "type": "string", + "description": "Username or display name of the pull request author.", + "required": true, + "defaultValue": "" + }, + { + "name": "status", + "type": "string", + "description": "Current status of the pull request (e.g., open, merged, closed).", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional description or summary of the pull request changes.", + "required": false, + "defaultValue": "" + }, + { + "name": "changedFiles", + "type": "array", + "description": "List of filenames or paths that have been modified in the pull request.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "reviewers", + "type": "array", + "description": "Optional list of reviewers assigned to the pull request.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "commentsCount", + "type": "number", + "description": "Number of comments on the pull request, for summary inclusion.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An object containing formatted notification fields such as title, author, status, message body, and metadata ready to be sent as an alert." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create a clear, concise notification about a pull request event for alerts, chat messages, or email. It helps by formatting key PR data into a structured message that can be integrated with notification systems or messaging platforms.", + "limitations": "This tool only builds the notification content and does not handle message delivery or integration with external messaging services.", + "examples": [ + "Create a notification for a newly opened pull request titled 'Add user login', authored by 'devAlice', with 3 changed files.", + "Build an alert message summarizing a merged pull request with comments and reviewers.", + "Generate a concise notification of a closed pull request without a description." + ] + }, + "tags": [ + "notifications", + "pullRequest", + "code", + "alerts", + "build", + "developer", + "collaboration" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Fix memory leak in cache module\",\"author\":\"devBob\",\"status\":\"open\",\"description\":\"This PR addresses the memory leak when cache expires.\",\"changedFiles\":[\"cache.js\",\"utils/memory.js\"],\"reviewers\":[\"leadDev\"],\"commentsCount\":2}", + "description": "Notification for an open PR with description, changed files, reviewers, and comment count." + }, + { + "inputJson": "{\"title\":\"Update dependencies to latest\",\"author\":\"devCarol\",\"status\":\"merged\",\"description\":\"Updated all npm dependencies to latest versions.\",\"changedFiles\":[\"package.json\",\"package-lock.json\"],\"reviewers\":[],\"commentsCount\":0}", + "description": "Notification message when a PR is merged with basic details." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "PullRequest", + "context": null + } + }, + { + "name": "notifications.buildEndpoint", + "description": "Constructs a RESTful API endpoint specification for notification services based on given input parameters. Accepts endpoint path, HTTP method, request payload schema, response format, authentication requirements, and optional headers. Outputs a standardized JSON object defining the complete endpoint configuration.", + "category": "notifications", + "parameters": [ + { + "name": "endpointPath", + "type": "string", + "description": "The URL path for the notification endpoint (e.g., '/notify/email').", + "required": true, + "defaultValue": "" + }, + { + "name": "httpMethod", + "type": "string", + "description": "The HTTP method used by the endpoint (GET, POST, PUT, DELETE).", + "required": true, + "defaultValue": "POST" + }, + { + "name": "requestSchema", + "type": "object", + "description": "JSON Schema object defining the expected structure of the request payload.", + "required": true, + "defaultValue": "" + }, + { + "name": "responseSchema", + "type": "object", + "description": "JSON Schema object defining the expected structure of the response data.", + "required": true, + "defaultValue": "" + }, + { + "name": "authenticationRequired", + "type": "boolean", + "description": "Indicates whether the endpoint requires authentication (e.g., API key, OAuth).", + "required": false, + "defaultValue": "true" + }, + { + "name": "headers", + "type": "object", + "description": "Optional key-value pairs of HTTP headers that the endpoint expects or returns.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A complete endpoint definition object including path, method, request/response schemas, auth requirement, and headers." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically generate or standardize notification API endpoint definitions for integrating notification dispatch services. Ideal for microservice or serverless setups where dynamic endpoint configurations are required. It helps agents build the contract for notification API endpoints based on desired data and protocols.", + "limitations": "Does not implement or deploy the endpoint; it only produces the configuration object. It cannot validate network connectivity or runtime behavior of the endpoint code.", + "examples": [ + "Build an endpoint for email notification submission with authentication and specific payload structure.", + "Create a GET endpoint for retrieving notification status without authentication.", + "Generate a PUT endpoint to update notification preferences, including custom headers." + ] + }, + "tags": [ + "notifications", + "endpoint", + "API", + "build", + "configuration", + "REST" + ], + "examples": [ + { + "inputJson": "{\"endpointPath\":\"/notify/email\",\"httpMethod\":\"POST\",\"requestSchema\":{\"type\":\"object\",\"properties\":{\"email\":{\"type\":\"string\",\"format\":\"email\"},\"message\":{\"type\":\"string\"}},\"required\":[\"email\",\"message\"]},\"responseSchema\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"string\"},\"messageId\":{\"type\":\"string\"}},\"required\":[\"status\",\"messageId\"]},\"authenticationRequired\":true,\"headers\":{\"Content-Type\":\"application/json\"}}", + "description": "Builds a POST /notify/email endpoint expecting email and message data to send an email notification with authentication." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Endpoint", + "context": null + } + }, + { + "name": "notifications.generateKPI", + "description": "Generates key performance indicator (KPI) notification summaries based on specified metrics, timeframes, and thresholds. Accepts KPI definitions with data sources and criteria, processes current and historical data to evaluate KPI status, and produces formatted notification messages suitable for alerting users to KPI achievements or warnings.", + "category": "notifications", + "parameters": [ + { + "name": "kpiName", + "type": "string", + "description": "The name or identifier of the KPI to generate a notification for.", + "required": true, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "An array of metric names or IDs included in the KPI calculation.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "timeframe", + "type": "object", + "description": "The time range for KPI evaluation, including start and end timestamps in ISO format.", + "required": true, + "defaultValue": "{}" + }, + { + "name": "thresholds", + "type": "object", + "description": "Key-value pairs mapping metric names to threshold values defining alert or achievement boundaries.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "notificationFormat", + "type": "string", + "description": "The output notification format, e.g., 'text', 'html', or 'json'.", + "required": false, + "defaultValue": "text" + }, + { + "name": "includeHistoricalComparison", + "type": "boolean", + "description": "Whether to include comparison with previous periods in the notification summary.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the notification content as a string and metadata such as KPI value, status (e.g., 'ok', 'warning', 'critical'), and timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to produce concise and actionable KPI notifications from raw metric data to inform users about performance goals, alerts, or trends over specified timeframes. It helps in converting analytic evaluations into human-readable alerts for monitoring or decision-making.", + "limitations": "This tool does not fetch raw data; data preprocessing or aggregation must be done prior. It also cannot configure notification delivery channels or user preferences.", + "examples": [ + "Generate a notification summarizing sales revenue KPI for last week and alert if below target.", + "Create an HTML-formatted KPI notification comparing this month's customer satisfaction score with last month.", + "Produce a JSON notification for system uptime KPI including status and timestamp." + ] + }, + "tags": [ + "notifications", + "KPI", + "analytics", + "alerts", + "performance", + "monitoring" + ], + "examples": [ + { + "inputJson": "{\"kpiName\": \"monthlySales\", \"metrics\": [\"salesRevenue\", \"numberOfOrders\"], \"timeframe\": {\"start\": \"2024-05-01T00:00:00Z\", \"end\": \"2024-05-31T23:59:59Z\"}, \"thresholds\": {\"salesRevenue\": 100000}, \"notificationFormat\": \"text\", \"includeHistoricalComparison\": true}", + "description": "Generate a text notification for the monthly sales KPI comparing revenue with threshold and previous month." + }, + { + "inputJson": "{\"kpiName\": \"customerSatisfaction\", \"metrics\": [\"csatScore\"], \"timeframe\": {\"start\": \"2024-06-01T00:00:00Z\", \"end\": \"2024-06-30T23:59:59Z\"}, \"notificationFormat\": \"html\", \"includeHistoricalComparison\": false}", + "description": "Create an HTML KPI notification for customer satisfaction score for the current month without historical comparison." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "KPI", + "context": null + } + }, + { + "name": "notifications.buildModule", + "description": "Builds a customizable notifications module code snippet based on input parameters including notification types, delivery channels, and message templates. Processes these inputs to generate modular, reusable JavaScript code for sending notifications according to configured preferences. Outputs the generated code as a string module.", + "category": "notifications", + "parameters": [ + { + "name": "notificationTypes", + "type": "array", + "description": "Array of notification types to support, e.g., ['email', 'sms', 'push'].", + "required": true, + "defaultValue": "[]" + }, + { + "name": "deliveryChannels", + "type": "object", + "description": "Mapping of notification types to their delivery channel configurations (e.g., SMTP info for email).", + "required": true, + "defaultValue": "{}" + }, + { + "name": "messageTemplates", + "type": "object", + "description": "Templates for each notification type containing placeholders that will be replaced when sending.", + "required": true, + "defaultValue": "{}" + }, + { + "name": "includeLogging", + "type": "boolean", + "description": "Include logging functionality in the module to capture notification sending results.", + "required": false, + "defaultValue": "false" + }, + { + "name": "retryPolicy", + "type": "object", + "description": "Configuration object defining retry behavior on failed notifications (max retries, delay).", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "string", + "description": "String containing the JavaScript module code implementing the configured notification system." + }, + "aiAgent": { + "useCase": "Use this tool when you need to quickly generate a ready-to-use notifications module tailored with specific notification types, delivery channels, and message templates, enabling agents to integrate programmatic notifications into applications without hand coding. Useful for automating alerts, reminders, or updates.", + "limitations": "This tool does not send notifications by itself; it only generates the module code. Runtime environment and credentials must be properly configured separately. Complex dynamic templating or localization beyond placeholders is not supported.", + "examples": [ + "Generate an email and SMS notification module with templates, SMTP config, and SMS API config.", + "Build a push notification module including a retry policy and logging enabled.", + "Create a multi-channel notification module for email and push with basic templates and no logging." + ] + }, + "tags": [ + "notifications", + "code generation", + "module builder", + "alerts", + "messaging" + ], + "examples": [ + { + "inputJson": "{\"notificationTypes\":[\"email\",\"sms\"],\"deliveryChannels\":{\"email\":{\"smtpHost\":\"smtp.example.com\",\"smtpPort\":587,\"username\":\"user@example.com\",\"password\":\"pass\"},\"sms\":{\"apiKey\":\"abcdef123456\",\"apiUrl\":\"https://sms.example.com/send\"}},\"messageTemplates\":{\"email\":\"Hello {{name}}, you have a message.\",\"sms\":\"Hi {{name}}, new notification!\"},\"includeLogging\":true,\"retryPolicy\":{\"maxRetries\":3,\"retryDelayMs\":1000}}", + "description": "Builds a notifications module supporting email and SMS with respective configurations, templates, logging, and retry policy." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Module", + "context": null + } + }, + { + "name": "notifications.generateQuery", + "description": "Generates a customizable query string or object based on criteria for notification records, such as by date, priority, status, and recipient. Accepts filtering parameters and outputs a structured query useful for fetching or aggregating notification data from databases or APIs.", + "category": "notifications", + "parameters": [ + { + "name": "startDate", + "type": "string", + "description": "ISO 8601 formatted start date to filter notifications from, inclusive.", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "ISO 8601 formatted end date to filter notifications until, inclusive.", + "required": false, + "defaultValue": "" + }, + { + "name": "priorityLevels", + "type": "array", + "description": "Array of priority levels (e.g., ['high','medium','low']) to include in the query.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "statuses", + "type": "array", + "description": "Array of notification statuses to filter by (e.g., ['unread','read','archived']).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "recipientIds", + "type": "array", + "description": "Array of user IDs representing notification recipients to filter notifications for.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeContentKeywords", + "type": "array", + "description": "Keywords to match in the notification content as filters.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "limit", + "type": "number", + "description": "Maximum number of notifications to retrieve.", + "required": false, + "defaultValue": "100" + }, + { + "name": "sortBy", + "type": "string", + "description": "Field name to sort the results by (e.g., 'date', 'priority').", + "required": false, + "defaultValue": "date" + }, + { + "name": "sortDescending", + "type": "boolean", + "description": "Whether to sort the results in descending order.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object representing a query with all filters applied, ready to be used in a notification database or API query operation." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to build complex queries to retrieve or filter notification data dynamically based on multiple optional criteria like time range, priority, status, recipients, and keywords. It assists agents in constructing structured query parameters compatible with notification storages or services.", + "limitations": "This tool generates query objects or strings but does not execute them or validate against specific database schemas. It cannot access notification data or interpret query results.", + "examples": [ + "Generate a query for unread high priority notifications for user ID '123' in the last week.", + "Create a query to fetch up to 50 notifications containing the keyword 'alert' sorted by priority descending.", + "Build a query filtering notifications between two dates for multiple recipients and status 'read'." + ] + }, + "tags": [ + "notifications", + "query generation", + "filtering", + "alerts", + "data retrieval", + "API" + ], + "examples": [ + { + "inputJson": "{\"startDate\":\"2024-06-01T00:00:00Z\",\"endDate\":\"2024-06-07T23:59:59Z\",\"priorityLevels\":[\"high\"],\"statuses\":[\"unread\"],\"recipientIds\":[\"123\"],\"limit\":100,\"sortBy\":\"date\",\"sortDescending\":true}", + "description": "Query for unread high priority notifications for user 123 in the first week of June 2024." + }, + { + "inputJson": "{\"includeContentKeywords\":[\"alert\"],\"limit\":50,\"sortBy\":\"priority\",\"sortDescending\":true}", + "description": "Query for top 50 notifications containing the word 'alert', sorted by priority descending." + }, + { + "inputJson": "{\"startDate\":\"2024-01-01T00:00:00Z\",\"endDate\":\"2024-01-31T23:59:59Z\",\"recipientIds\":[\"234\",\"345\"],\"statuses\":[\"read\"],\"limit\":200}", + "description": "Query for notifications read by users 234 and 345 during January 2024, limited to 200 results." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Query", + "context": null + } + }, + { + "name": "notifications.generateDashboard", + "description": "Generates an interactive analytics dashboard summarizing notification data and alert performance metrics. Accepts historical notification records and filter criteria; processes data to compute statistics like delivery success rate, response times, and alert frequencies; outputs a dashboard configuration object or URL for visualization.", + "category": "notifications", + "parameters": [ + { + "name": "notificationData", + "type": "array", + "description": "Array of notification event objects including timestamps, status, and type, to be analyzed for dashboard metrics.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeRange", + "type": "object", + "description": "Object with start and end ISO date strings to filter the notifications by date.", + "required": false, + "defaultValue": "{\"start\":\"\",\"end\":\"\"}" + }, + { + "name": "filterTypes", + "type": "array", + "description": "List of notification types to include in the analysis (e.g., email, SMS, push).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeResponseMetrics", + "type": "boolean", + "description": "Flag indicating whether to include response time metrics in the dashboard.", + "required": false, + "defaultValue": "true" + }, + { + "name": "dashboardTitle", + "type": "string", + "description": "Title to display on the generated dashboard.", + "required": false, + "defaultValue": "Notification Performance Dashboard" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the dashboard output, such as 'url' for a hosted dashboard link or 'json' for raw config data.", + "required": false, + "defaultValue": "url" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated dashboard link or a configuration JSON for rendering the notification analytics dashboard." + }, + "aiAgent": { + "useCase": "Use this tool when a detailed overview of notification delivery and alert performance is needed, such as monitoring system health or user engagement via alerts over a selected period. It helps visualize key metrics to support decision-making and troubleshooting in communication systems.", + "limitations": "This tool does not send notifications or handle real-time updates; it only analyzes historical data and generates dashboard representations. It requires properly formatted input data and does not create visual dashboards directly but provides configuration or links.", + "examples": [ + "Generate a dashboard summarizing all email and push notifications from the last 30 days, including response times, output as a URL.", + "Create a JSON-configured dashboard with filtered SMS alert data for the past week with only delivery metrics, excluding response times." + ] + }, + "tags": [ + "notifications", + "dashboard", + "analytics", + "alerts", + "monitoring", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"notificationData\":[{\"id\":\"1\",\"type\":\"email\",\"status\":\"delivered\",\"timestamp\":\"2024-05-01T12:00:00Z\",\"responseTimeMs\":150},{\"id\":\"2\",\"type\":\"push\",\"status\":\"failed\",\"timestamp\":\"2024-05-01T12:05:00Z\",\"responseTimeMs\":null}],\"timeRange\":{\"start\":\"2024-04-01T00:00:00Z\",\"end\":\"2024-05-01T23:59:59Z\"},\"filterTypes\":[\"email\",\"push\"],\"includeResponseMetrics\":true,\"dashboardTitle\":\"Monthly Notification Report\",\"outputFormat\":\"url\"}", + "description": "Generate a monthly dashboard with email and push notification stats including response times as a URL." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Dashboard", + "context": null + } + }, + { + "name": "notifications.createDashboard", + "description": "Creates a customizable notification analytics dashboard based on specified metrics, filters, and visualization preferences. Accepts parameters defining data sources, notification event types, time range, and visualization widgets, then processes these inputs to generate an interactive dashboard summary providing insights on notification delivery, engagement, and failures.", + "category": "notifications", + "parameters": [ + { + "name": "dashboardName", + "type": "string", + "description": "The name identifier for the created dashboard.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataSources", + "type": "array", + "description": "List of data source identifiers or endpoints to aggregate notification data from.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "notificationTypes", + "type": "array", + "description": "Types of notifications to include (e.g., email, SMS, push).", + "required": false, + "defaultValue": "[\"email\",\"sms\",\"push\"]" + }, + { + "name": "timeRange", + "type": "object", + "description": "Time range filter with start and end ISO8601 datetime strings to limit the data displayed.", + "required": false, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "List of metrics to include, such as delivery rate, open rate, click rate, failure count.", + "required": true, + "defaultValue": "[\"deliveryRate\",\"openRate\",\"failureCount\"]" + }, + { + "name": "visualizations", + "type": "array", + "description": "Array specifying types of visual widgets (e.g., bar chart, line graph, pie chart) for displaying each metric.", + "required": false, + "defaultValue": "[\"lineChart\",\"barChart\"]" + }, + { + "name": "filters", + "type": "object", + "description": "Additional filters such as user segments, geographic regions, or platforms to refine dashboard data.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the dashboard ID, name, configuration details, and a URL to access the interactive visualization web interface." + }, + "aiAgent": { + "useCase": "Use this tool when you need to generate an interactive, metric-rich dashboard that visualizes notification system performance across multiple channels and dimensions. Ideal for monitoring notification delivery success, engagement metrics, and failure patterns over specific periods to guide operational and business decisions.", + "limitations": "This tool does not fetch raw notification data itself; it requires pre-existing data sources. It cannot generate dashboards for non-notification data or perform real-time data updates without backend support.", + "examples": [ + "Create a dashboard named 'Weekly Email Stats' showing delivery and open rates for email notifications over the last 7 days.", + "Generate a dashboard aggregating push and SMS notification failures with geographic filters for the past month.", + "Build a dashboard with bar and line charts for click rates and delivery rates across all notification types filtered by user segments." + ] + }, + "tags": [ + "notifications", + "dashboard", + "analytics", + "metrics", + "visualization", + "monitoring" + ], + "examples": [ + { + "inputJson": "{\"dashboardName\":\"Weekly Notification Overview\",\"dataSources\":[\"notifDb\",\"analyticsApi\"],\"notificationTypes\":[\"email\",\"push\"],\"timeRange\":{\"start\":\"2024-05-01T00:00:00Z\",\"end\":\"2024-05-07T23:59:59Z\"},\"metrics\":[\"deliveryRate\",\"openRate\",\"failureCount\"],\"visualizations\":[\"lineChart\",\"pieChart\"]}", + "description": "Creates a dashboard summarizing email and push notification delivery, opens, and failures during the first week of May 2024 with line and pie chart visualizations." + }, + { + "inputJson": "{\"dashboardName\":\"SMS Failure Tracker\",\"dataSources\":[\"smsLogs\"],\"notificationTypes\":[\"sms\"],\"metrics\":[\"failureCount\"],\"filters\":{\"region\":\"EMEA\"},\"visualizations\":[\"barChart\"]}", + "description": "Builds an SMS notification failure dashboard filtered by EMEA region, using bar charts for visualization." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dashboard", + "context": null + } + }, + { + "name": "notifications.createKPI", + "description": "Creates a notification alert based on specified Key Performance Indicator (KPI) thresholds. Accepts parameters defining the KPI metrics, thresholds, frequency, and recipients. Processes these inputs to schedule and configure notifications that alert stakeholders when KPI criteria are met or exceeded.", + "category": "notifications", + "parameters": [ + { + "name": "kpiName", + "type": "string", + "description": "The name of the KPI to monitor for generating notifications.", + "required": true, + "defaultValue": "" + }, + { + "name": "thresholdValue", + "type": "number", + "description": "The numeric threshold that triggers the notification when the KPI reaches or exceeds this value.", + "required": true, + "defaultValue": "" + }, + { + "name": "comparisonOperator", + "type": "string", + "description": "Operator to compare KPI value to threshold (e.g., greater_than, less_than, equal_to).", + "required": true, + "defaultValue": "" + }, + { + "name": "notificationFrequency", + "type": "string", + "description": "How often notifications are sent when KPI meets the condition (e.g., immediate, hourly, daily).", + "required": false, + "defaultValue": "immediate" + }, + { + "name": "recipients", + "type": "array", + "description": "List of email addresses or user IDs to receive the KPI notifications.", + "required": true, + "defaultValue": "" + }, + { + "name": "messageTemplate", + "type": "string", + "description": "Custom message template used in the notification body, supporting placeholders for KPI values.", + "required": false, + "defaultValue": "KPI alert: {kpiName} has reached {currentValue}." + }, + { + "name": "enabled", + "type": "boolean", + "description": "Flag to enable or disable the KPI notification on creation.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object confirming creation status, notification ID, and summary of the configured KPI alert." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically set up real-time or periodic notifications based on KPI thresholds within analytics or monitoring platforms. It helps automate alerting of key business or performance metrics to relevant stakeholders.", + "limitations": "Does not analyze KPI data itself; expects KPI values and names to be defined and available elsewhere. Cannot monitor KPIs without integration to underlying data sources.", + "examples": [ + "Create a notification when website traffic drops below 1000 visits per day, sent immediately to marketing team.", + "Set up daily summary alerts when average order value exceeds $200.", + "Notify the finance team immediately if monthly revenue falls below targets." + ] + }, + "tags": [ + "notifications", + "KPI", + "analytics", + "alerts", + "thresholds", + "monitoring" + ], + "examples": [ + { + "inputJson": "{\"kpiName\":\"Monthly Revenue\",\"thresholdValue\":50000,\"comparisonOperator\":\"less_than\",\"notificationFrequency\":\"immediate\",\"recipients\":[\"finance@example.com\"],\"messageTemplate\":\"Alert: {kpiName} has dropped below threshold with a current value of {currentValue}.\",\"enabled\":true}", + "description": "Create an immediate notification alert for Monthly Revenue KPI dropping below $50,000 sent to the finance team." + }, + { + "inputJson": "{\"kpiName\":\"Website Traffic\",\"thresholdValue\":1000,\"comparisonOperator\":\"less_than\",\"notificationFrequency\":\"hourly\",\"recipients\":[\"marketing@example.com\"],\"enabled\":true}", + "description": "Set up hourly notifications when Website Traffic falls below 1000 visits, notifying marketing." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "KPI", + "context": null + } + }, + { + "name": "notifications.createComment", + "description": "Creates and sends a comment notification related to a specific entity or topic within a system. Accepts inputs such as message content, target user or group identifiers, and optional metadata like referencing an object or tagging users. Outputs a notification confirmation including comment ID and timestamp.", + "category": "notifications", + "parameters": [ + { + "name": "message", + "type": "string", + "description": "Text content of the comment to be sent in the notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientIds", + "type": "array", + "description": "Array of user or group IDs who will receive the comment notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "relatedObjectId", + "type": "string", + "description": "Identifier of the related entity (e.g., ticket, document) this comment is associated with.", + "required": false, + "defaultValue": "" + }, + { + "name": "taggedUserIds", + "type": "array", + "description": "Optional array of user IDs tagged within the comment for additional alerting.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "priority", + "type": "string", + "description": "Priority level of the notification, e.g., 'normal', 'high'.", + "required": false, + "defaultValue": "normal" + }, + { + "name": "sendEmail", + "type": "boolean", + "description": "Whether to send an email copy of the comment notification to recipients.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Confirmation object including the unique comment ID, timestamp of creation, and status indicating if notification sending succeeded." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate and dispatch comment notifications to users in applications like project management, customer support, or collaboration platforms. It enables creating contextual messages tied to specific objects and targeting precise users or groups for alerting.", + "limitations": "This tool does not handle comment moderation, content validation, or storage beyond notification delivery. It also does not support rich media content or threaded conversations directly.", + "examples": [ + "Notify team members of a new comment on a support ticket with tagging of relevant specialists.", + "Send a high priority comment notification to a project group about an update on a document.", + "Create and deliver a comment notification with email alerts to specified users regarding a task status change." + ] + }, + "tags": [ + "notifications", + "comments", + "communication", + "alerting", + "collaboration", + "messaging" + ], + "examples": [ + { + "inputJson": "{\"message\":\"Please review the latest update on the project plan.\",\"recipientIds\":[\"user123\",\"user456\"],\"relatedObjectId\":\"proj789\",\"taggedUserIds\":[\"user456\"],\"priority\":\"normal\",\"sendEmail\":true}", + "description": "Send a standard priority comment notification about a project to two users with email alert." + }, + { + "inputJson": "{\"message\":\"Urgent: client escalated issue requires immediate attention.\",\"recipientIds\":[\"supportTeam\"],\"priority\":\"high\",\"sendEmail\":false}", + "description": "Send a high priority comment alert to a support team group without email." + }, + { + "inputJson": "{\"message\":\"FYI: Document D123 has been approved.\",\"recipientIds\":[\"user789\"],\"relatedObjectId\":\"docD123\",\"sendEmail\":true}", + "description": "Notify a single user via email about document approval with relevant document ID." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Comment", + "context": null + } + }, + { + "name": "notifications.createVariable", + "description": "Creates or updates a variable used in notification templates or workflows. Accepts variable name, type, value, and optional metadata. Validates inputs and returns a confirmation with the stored variable details for use in dynamic notifications.", + "category": "notifications", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The name of the variable to create or update. Must be unique within the notification context.", + "required": true, + "defaultValue": "" + }, + { + "name": "variableType", + "type": "string", + "description": "The data type of the variable (e.g., string, number, boolean). This determines how the value is processed and displayed in notifications.", + "required": true, + "defaultValue": "string" + }, + { + "name": "variableValue", + "type": "string", + "description": "The value assigned to the variable, represented as a string but parsed based on variableType.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "An optional description explaining the purpose or usage of the variable in notifications.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value pairs to store additional information about the variable such as scope, tags or constraints.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Object confirming creation or update of the variable including its name, type, stored value (parsed by type), description, and metadata if provided." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically define or update variables that will be referenced in notification templates or workflows, enabling dynamic content generation based on variable data.", + "limitations": "This tool only manages variable creation and updates; it does not send notifications or evaluate variable usage in templates.", + "examples": [ + "Create a string variable named 'userName' with the value 'Alice' for personalized notifications.", + "Update a number variable 'discountRate' to 15 for calculating promotional notifications.", + "Add metadata tagging to a boolean variable 'isPremiumUser' indicating user subscription status." + ] + }, + "tags": [ + "notifications", + "variables", + "dynamic content", + "templates", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"userName\",\"variableType\":\"string\",\"variableValue\":\"Alice\",\"description\":\"Stores the recipient's name for personalized greetings.\"}", + "description": "Create a string variable named 'userName' with the value 'Alice' for use in notification templates." + }, + { + "inputJson": "{\"variableName\":\"discountRate\",\"variableType\":\"number\",\"variableValue\":\"15\",\"description\":\"Current discount rate applied to orders.\"}", + "description": "Create a numeric variable 'discountRate' to dynamically update promotional discounts." + }, + { + "inputJson": "{\"variableName\":\"isPremiumUser\",\"variableType\":\"boolean\",\"variableValue\":\"true\",\"metadata\":{\"scope\":\"user\",\"tags\":[\"subscription\",\"premium\"]}}", + "description": "Create a boolean variable indicating if the user has premium subscription status with additional metadata tags." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Variable", + "context": null + } + }, + { + "name": "notifications.createVideo", + "description": "Creates a video notification by combining visual elements like text, images, and sounds to produce a short, shareable video alert. Accepts inputs such as title, message, images, audio clips, duration, and style options, then renders and outputs a video file URL ready for distribution.", + "category": "notifications", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "Main title text displayed prominently in the video notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "message", + "type": "string", + "description": "Supporting message or description text shown in the notification video.", + "required": true, + "defaultValue": "" + }, + { + "name": "imageUrls", + "type": "array", + "description": "Array of image URLs to include in the video as visual elements or backgrounds.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "audioUrl", + "type": "string", + "description": "Optional background audio or voiceover URL to accompany the video notification.", + "required": false, + "defaultValue": "" + }, + { + "name": "durationSeconds", + "type": "number", + "description": "Total length of the video notification in seconds; affects how content is paced.", + "required": false, + "defaultValue": "10" + }, + { + "name": "styleTheme", + "type": "string", + "description": "Visual style theme to apply (e.g., 'modern', 'minimal', 'corporate').", + "required": false, + "defaultValue": "modern" + }, + { + "name": "resolution", + "type": "string", + "description": "Video resolution (e.g., '720p', '1080p') for output quality.", + "required": false, + "defaultValue": "720p" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Video file format for output (e.g., 'mp4', 'webm').", + "required": false, + "defaultValue": "mp4" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the video URL, format, resolution, and duration." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to create dynamic multimedia alert videos combining text, images, and audio for notifications, promotional messages, or announcements that require engaging visual delivery beyond plain text or static images.", + "limitations": "Cannot perform advanced video editing beyond template-based assembly; requires external URLs for images and audio, no content generation; video length limited by durationSeconds parameter.", + "examples": [ + "Create a 15-second promotional notification video with a title, message, two images, background music, and modern style in 1080p MP4 format.", + "Generate a minimal style 10-second video notification with just title and message for urgent alert delivery.", + "Produce a corporate theme 20-second video notification incorporating voiceover audio and multiple images for event promotion." + ] + }, + "tags": [ + "notifications", + "video", + "multimedia", + "alert", + "create", + "media", + "notification video" + ], + "examples": [ + { + "inputJson": "{\"title\":\"System Update\",\"message\":\"Your device will restart in 5 minutes.\",\"imageUrls\":[\"https://example.com/img1.png\"],\"audioUrl\":\"https://example.com/alert.mp3\",\"durationSeconds\":15,\"styleTheme\":\"modern\",\"resolution\":\"1080p\",\"outputFormat\":\"mp4\"}", + "description": "Creates a 15-second modern style notification video with an image and background audio in 1080p MP4." + }, + { + "inputJson": "{\"title\":\"Meeting Reminder\",\"message\":\"Weekly team sync starts soon.\",\"imageUrls\":[],\"audioUrl\":\"\",\"durationSeconds\":10,\"styleTheme\":\"minimal\",\"resolution\":\"720p\",\"outputFormat\":\"mp4\"}", + "description": "Generates a simple 10-second minimal style video notification with only text, no images or audio." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Video", + "context": null + } + }, + { + "name": "notifications.createOpportunity", + "description": "Creates a notification alert representing a new business opportunity. Accepts details like opportunity title, description, priority, and target recipients, processes these to format a clear notification message, and outputs a notification object ready for dispatch or integration into notification systems.", + "category": "notifications", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title or headline summarizing the opportunity.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Detailed description providing context and details about the opportunity.", + "required": true, + "defaultValue": "" + }, + { + "name": "priority", + "type": "string", + "description": "Priority level of the opportunity notification, e.g., 'low', 'medium', 'high'.", + "required": false, + "defaultValue": "medium" + }, + { + "name": "recipients", + "type": "array", + "description": "List of recipient identifiers (e.g., emails or user IDs) who will receive the notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "dueDate", + "type": "string", + "description": "Optional ISO 8601 date string for when the opportunity expires or requires attention by.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Optional tags or categories to classify the opportunity notification.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted notification with fields like id, title, message, priority, recipients, tags, creation timestamp, and due date if provided." + }, + "aiAgent": { + "useCase": "Use this tool when needing to generate structured notifications about new or existing business opportunities for targeted users or teams, enabling organized alerting through notification systems.", + "limitations": "This tool does not send the notification itself; it only creates and formats the notification data object. Integration with messaging or push notification services is required for delivery.", + "examples": [ + "Create an opportunity notification about a new sales lead for the sales team.", + "Notify specific users about an urgent partnership opportunity requiring quick follow-up.", + "Generate a tagged notification alerting managers of an approaching contract renewal deadline." + ] + }, + "tags": [ + "notification", + "business", + "opportunity", + "alert", + "sales", + "task", + "reminder" + ], + "examples": [ + { + "inputJson": "{\"title\":\"New Strategic Partnership\",\"description\":\"Potential partnership opportunity with ABC Corp to expand market reach.\",\"priority\":\"high\",\"recipients\":[\"sales_team@example.com\",\"partner_manager@example.com\"],\"dueDate\":\"2024-07-15T00:00:00Z\",\"tags\":[\"partnership\",\"urgent\"]}", + "description": "Create a high priority notification alerting sales and partner managers about a new partnership opportunity with a due date and tags." + }, + { + "inputJson": "{\"title\":\"Quarterly Client Review\",\"description\":\"Opportunity to review service effectiveness with key client beforehand.\",\"priority\":\"medium\",\"recipients\":[\"account_manager@example.com\"],\"tags\":[\"client\",\"review\"]}", + "description": "Generate a medium priority notification for an account manager regarding a client review opportunity, including tags for filtering." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Opportunity", + "context": null + } + }, + { + "name": "messaging.analyzeDashboard", + "description": "Analyzes real-time messaging and chat data to produce a comprehensive dashboard of communication metrics. It accepts chat logs, user activity data, and time range parameters. The tool processes message volumes, sentiment scores, active user counts, and response times, outputting structured analytics data suitable for dashboard visualization.", + "category": "messaging", + "parameters": [ + { + "name": "chatLogs", + "type": "array", + "description": "An array of chat message objects with timestamps, user IDs, and message content to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "userActivityData", + "type": "array", + "description": "An optional array of user activity objects including user IDs and activity timestamps to correlate engagement.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "startTime", + "type": "string", + "description": "ISO 8601 formatted timestamp to specify the start of analysis period.", + "required": true, + "defaultValue": "" + }, + { + "name": "endTime", + "type": "string", + "description": "ISO 8601 formatted timestamp to specify the end of analysis period.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Flag to indicate whether to perform sentiment analysis on message content.", + "required": false, + "defaultValue": "true" + }, + { + "name": "timeZone", + "type": "string", + "description": "Time zone identifier to correctly interpret timestamps and display time-based data.", + "required": false, + "defaultValue": "UTC" + } + ], + "returns": { + "type": "object", + "description": "An object containing metrics such as totalMessages, messagesPerUser, sentimentSummary, activeUsersCount, averageResponseTime, and timeSeriesData for dashboard rendering." + }, + "aiAgent": { + "useCase": "Use this tool when needing to generate a detailed analytics dashboard from raw chat and messaging data to gain insights into user engagement, sentiment trends, and communication patterns over a specific period. Ideal for managing community platforms or internal messaging analysis.", + "limitations": "This tool does not provide real-time streaming analytics and depends on complete and accurate input data. It cannot generate visual dashboards but outputs structured data for visualization by other tools.", + "examples": [ + "Analyze messaging activity and sentiment for a team's Slack channel over the past week.", + "Get a report on user engagement and average response times from customer support chat logs last month.", + "Summarize daily message volumes and active user counts for a messaging app's user base over the last 24 hours." + ] + }, + "tags": [ + "messaging", + "analytics", + "dashboard", + "chat", + "sentiment-analysis", + "user-engagement" + ], + "examples": [ + { + "inputJson": "{\"chatLogs\":[{\"timestamp\":\"2024-06-01T09:00:00Z\",\"userId\":\"user1\",\"message\":\"Hello everyone!\"},{\"timestamp\":\"2024-06-01T09:01:30Z\",\"userId\":\"user2\",\"message\":\"Hi! How are you?\"}],\"userActivityData\":[{\"userId\":\"user1\",\"lastActive\":\"2024-06-01T09:05:00Z\"},{\"userId\":\"user2\",\"lastActive\":\"2024-06-01T09:02:00Z\"}],\"startTime\":\"2024-06-01T00:00:00Z\",\"endTime\":\"2024-06-02T00:00:00Z\",\"includeSentimentAnalysis\":true,\"timeZone\":\"UTC\"}", + "description": "Analyze basic two-user chat log with sentiment and activity data for one day" + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Dashboard", + "context": null + } + }, + { + "name": "notifications.createArticle", + "description": "Creates a notification article suitable for sending as an alert or informational message. Accepts inputs like title, body content, target audience, urgency level, and optionally tags and an expiration date. Processes these inputs into a structured article object that can be used in notification systems or alert dashboards.", + "category": "notifications", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The headline or title of the notification article.", + "required": true, + "defaultValue": "" + }, + { + "name": "body", + "type": "string", + "description": "The main content text of the article providing details of the notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetAudience", + "type": "array", + "description": "List of user groups or segments to receive this notification (e.g., admins, users).", + "required": true, + "defaultValue": "[]" + }, + { + "name": "urgency", + "type": "string", + "description": "Urgency level of the notification (e.g., low, medium, high).", + "required": false, + "defaultValue": "medium" + }, + { + "name": "tags", + "type": "array", + "description": "Optional keywords or categories associated with the article for filtering or classification.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "expirationDate", + "type": "string", + "description": "Optional ISO 8601 datetime string when this notification should expire or become inactive.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured notification article object including all input fields plus a unique articleId and creation timestamp." + }, + "aiAgent": { + "useCase": "Use this tool to generate well-structured notification articles for alerts, newsletters, or bulletins to be distributed via messaging pipelines or shown in notification centers. Ideal when you need to programmatically create messages with metadata for audience targeting and lifecycle management.", + "limitations": "This tool only creates the data structure for an article; it does not send or deliver the notification, nor does it handle formatting beyond plain text.", + "examples": [ + "Create a high urgency notification for all admins about a planned maintenance.", + "Generate an article with tags related to security updates for a specific user group.", + "Produce a general info notification expiring in 7 days for all registered users." + ] + }, + "tags": [ + "notifications", + "creation", + "article", + "alert", + "message", + "targeting", + "urgency" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Scheduled Maintenance Notice\",\"body\":\"Our system will undergo maintenance on July 10 between 1AM and 3AM UTC.\",\"targetAudience\":[\"admins\"],\"urgency\":\"high\",\"tags\":[\"maintenance\",\"system\"],\"expirationDate\":\"2024-07-11T00:00:00Z\"}", + "description": "Create a high urgency maintenance notification for admins expiring after the maintenance window." + }, + { + "inputJson": "{\"title\":\"Weekly Newsletter\",\"body\":\"Here's what's new this week in our platform.\",\"targetAudience\":[\"allUsers\"],\"urgency\":\"low\",\"tags\":[\"newsletter\"],\"expirationDate\":\"\"}", + "description": "Generate a low urgency weekly newsletter article for all users with no expiration." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Article", + "context": null + } + }, + { + "name": "messaging.analyzeOpportunity", + "description": "Analyzes messaging data related to a business opportunity by evaluating communication patterns, sentiment, and engagement metrics to provide insights on deal progress and recommendation on next actions. Accepts conversations, contacts involved, and opportunity metadata; outputs an analysis report with key indicators and suggested strategies.", + "category": "messaging", + "parameters": [ + { + "name": "conversationTexts", + "type": "array", + "description": "An array of text messages or chat logs related to the opportunity to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "participants", + "type": "array", + "description": "A list of participant identifiers (e.g., user IDs or names) who are involved in the conversation.", + "required": true, + "defaultValue": "" + }, + { + "name": "opportunityId", + "type": "string", + "description": "Unique identifier for the business opportunity under analysis.", + "required": true, + "defaultValue": "" + }, + { + "name": "sentimentAnalysis", + "type": "boolean", + "description": "Flag indicating whether to perform sentiment analysis on the conversation texts.", + "required": false, + "defaultValue": "true" + }, + { + "name": "timeframeDays", + "type": "number", + "description": "Number of past days of conversation data to consider for analysis; defaults to all if not specified.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeEngagementMetrics", + "type": "boolean", + "description": "Determines if engagement stats such as message frequency and response time should be included in the analysis.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing analysis results including sentiment summary, communication frequency, engagement scores, opportunity health indicators, and recommended next steps." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to evaluate text-based interactions linked to sales or business deals to detect signals of opportunity progress, risks, or customer sentiment, helping decision-making on follow-up actions.", + "limitations": "The tool relies on textual conversation data and may not incorporate offline or non-messaging interactions. Sentiment and engagement metrics are based on available message content and may miss context nuances.", + "examples": [ + "Analyze the chat history of opportunity ID 'opp123' for sentiment and engagement scores.", + "Provide a summary of the messaging threads in the past 30 days for opportunity 'abc789' and recommend next actions.", + "Evaluate participant interactions in conversations related to opportunity 'sales456' to assess likelihood of closing." + ] + }, + "tags": [ + "messaging", + "analysis", + "business", + "opportunity", + "sales", + "sentiment", + "engagement" + ], + "examples": [ + { + "inputJson": "{\"conversationTexts\":[\"Hi, just following up on the proposal.\",\"Thanks for the update, we'll review and get back.\",\"Are there any questions about the contract?\"],\"participants\":[\"client_A\",\"sales_B\"],\"opportunityId\":\"opp001\",\"sentimentAnalysis\":true,\"timeframeDays\":30,\"includeEngagementMetrics\":true}", + "description": "Analyze recent 30 days messaging for 'opp001' with sentiment and engagement data to assist sales team in opportunity evaluation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Opportunity", + "context": null + } + }, + { + "name": "messaging.downloadDataset", + "description": "Downloads a specified dataset of messaging or chat data from a configured messaging platform or chat service. Accepts parameters identifying the dataset by name or ID, optional filters like date range, and export format. Processes the request by fetching messages or chat logs matching criteria and outputs a downloadable file link or raw data object in the desired format.", + "category": "messaging", + "parameters": [ + { + "name": "datasetId", + "type": "string", + "description": "Unique identifier of the messaging dataset to download, typically provided by the chat service or platform.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Optional ISO 8601 start date to filter messages; only messages from this date forward are included.", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "Optional ISO 8601 end date to filter messages; only messages up to this date are included.", + "required": false, + "defaultValue": "" + }, + { + "name": "exportFormat", + "type": "string", + "description": "Desired format of the exported dataset, e.g., 'json', 'csv', or 'txt'.", + "required": false, + "defaultValue": "json" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include message metadata such as sender info, timestamps, and message IDs in the output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxMessages", + "type": "number", + "description": "Maximum number of messages to include in the dataset. Limits size of the download.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing a download URL for the dataset file and metadata about the dataset such as total messages included and format." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to retrieve historical messaging or chat data from a platform for analysis, compliance, or reporting. It facilitates fetching chat logs or message datasets on demand, optionally filtered by date or size limits, and returns a ready-to-download dataset in a common format.", + "limitations": "Cannot create datasets or modify messaging data; only downloads existing datasets. Requires valid dataset identifiers and access permissions. Large datasets may be truncated based on maxMessages limit. Does not support real-time streaming or continuous syncing.", + "examples": [ + "Download the chat logs dataset with ID 'chat123' in CSV format for last month.", + "Fetch up to 500 messages from dataset 'teamMessages' including metadata in JSON format.", + "Get the entire message dataset 'supportLogs' without date filtering as a plain text file." + ] + }, + "tags": [ + "messaging", + "dataset", + "download", + "chat", + "export", + "data" + ], + "examples": [ + { + "inputJson": "{\"datasetId\":\"chat123\",\"startDate\":\"2024-05-01T00:00:00Z\",\"endDate\":\"2024-05-31T23:59:59Z\",\"exportFormat\":\"csv\",\"includeMetadata\":true,\"maxMessages\":1000}", + "description": "Download messages from May 2024 from the dataset 'chat123' in CSV format including message metadata, limited to 1000 messages." + }, + { + "inputJson": "{\"datasetId\":\"teamMessages\",\"exportFormat\":\"json\",\"includeMetadata\":false}", + "description": "Download the full 'teamMessages' dataset in JSON format excluding metadata." + }, + { + "inputJson": "{\"datasetId\":\"supportLogs\",\"exportFormat\":\"txt\",\"maxMessages\":500}", + "description": "Download the first 500 messages from 'supportLogs' in a plain text format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Dataset", + "context": null + } + }, + { + "name": "messaging.downloadImage", + "description": "Downloads an image from a given chat message or URL within a messaging platform. Accepts a message ID or direct image URL, fetches the image data, and outputs the image as a binary buffer or saved file path, enabling integration with chat applications requiring image retrieval.", + "category": "messaging", + "parameters": [ + { + "name": "messageId", + "type": "string", + "description": "The unique identifier of the chat message containing the image to download.", + "required": false, + "defaultValue": "" + }, + { + "name": "imageUrl", + "type": "string", + "description": "Direct URL of the image to download. Used if messageId is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "saveToFile", + "type": "boolean", + "description": "If true, saves the downloaded image to disk at the given path; otherwise returns image data as a buffer.", + "required": false, + "defaultValue": "false" + }, + { + "name": "filePath", + "type": "string", + "description": "File system path where the image should be saved if saveToFile is true.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing image data buffer if not saved to file, or confirmation with file path if saved to disk." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to download images embedded in chat messages or referenced by URLs for processing, analysis, or saving as part of messaging integration workflows.", + "limitations": "Cannot download images from messages without access permissions or unsupported messaging platforms. Does not perform image validation or processing beyond download.", + "examples": [ + "Download the image from chat message with ID '12345'.", + "Fetch the image from URL 'https://example.com/image.png'.", + "Save the photo from message ID 'abc123' to '/tmp/chat-photo.jpg'." + ] + }, + "tags": [ + "messaging", + "download", + "image", + "chat", + "media", + "integration" + ], + "examples": [ + { + "inputJson": "{\"messageId\":\"msg7890\",\"saveToFile\":false}", + "description": "Download image binary from message with ID 'msg7890' without saving to file." + }, + { + "inputJson": "{\"imageUrl\":\"https://cdn.chatapp.com/images/photo.jpg\",\"saveToFile\":true,\"filePath\":\"/user/images/photo.jpg\"}", + "description": "Download image from URL and save it to specified file path." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Image", + "context": null + } + }, + { + "name": "messaging.uploadDataset", + "description": "Uploads a structured dataset (e.g., CSV, JSON) to the messaging platform for use in automated chat responses, analytics, or training conversational AI models. Accepts dataset content or file URL, validates format, stores securely, and returns upload status and dataset ID for reference.", + "category": "messaging", + "parameters": [ + { + "name": "datasetContent", + "type": "string", + "description": "Raw dataset content as a string, typically CSV or JSON format. Either this or datasetUrl is required.", + "required": false, + "defaultValue": "" + }, + { + "name": "datasetUrl", + "type": "string", + "description": "URL to download the dataset file if not providing content directly. Either this or datasetContent is required.", + "required": false, + "defaultValue": "" + }, + { + "name": "datasetFormat", + "type": "string", + "description": "Format of the dataset file provided or referenced, e.g., 'csv' or 'json'.", + "required": true, + "defaultValue": "csv" + }, + { + "name": "datasetName", + "type": "string", + "description": "Human-readable name for the dataset to identify it within the messaging system.", + "required": true, + "defaultValue": "" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "Whether to overwrite an existing dataset with the same name if found (true to overwrite).", + "required": false, + "defaultValue": "false" + }, + { + "name": "validateSchema", + "type": "boolean", + "description": "If true, validate dataset schema against messaging platform requirements before upload.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Result object containing upload success status, assigned dataset ID, and any error messages encountered during processing." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to load external datasets into a messaging platform to enable data-driven chat features, train or update conversational models, or perform analytics on communication patterns. It is useful when datasets are received as files or URLs and must be ingested securely and validated before use.", + "limitations": "This tool does not parse or interpret dataset content beyond basic format validation. It cannot correct dataset errors or enable real-time streaming of datasets. Large files may require chunking outside this tool.", + "examples": [ + "Upload a CSV file content for chatbot training.", + "Upload a JSON dataset from an accessible URL for analytics.", + "Replace an existing dataset in the messaging platform by overwriting." + ] + }, + "tags": [ + "messaging", + "upload", + "dataset", + "chatbot", + "integration", + "data ingestion" + ], + "examples": [ + { + "inputJson": "{\"datasetContent\":\"id,name,message\\n1,Alice,Hello\\n2,Bob,Hi\",\"datasetFormat\":\"csv\",\"datasetName\":\"ChatSamples\",\"overwriteExisting\":false}", + "description": "Uploading small CSV content directly to store chat sample data." + }, + { + "inputJson": "{\"datasetUrl\":\"https://example.com/chat_data.json\",\"datasetFormat\":\"json\",\"datasetName\":\"CustomerSupportLogs\",\"overwriteExisting\":true}", + "description": "Uploading a JSON dataset from a remote URL and overwriting existing dataset with the same name." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Dataset", + "context": null + } + }, + { + "name": "messaging.formatWord", + "description": "Formats a given word according to specified text styles suitable for real-time messaging contexts. Accepts a word string and applies formatting such as bold, italic, underline, strikethrough, or uppercase transformations. Returns the word wrapped with appropriate markdown or messaging platform syntax for styling.", + "category": "messaging", + "parameters": [ + { + "name": "word", + "type": "string", + "description": "The single word or token to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "bold", + "type": "boolean", + "description": "Whether to format the word in bold.", + "required": false, + "defaultValue": "false" + }, + { + "name": "italic", + "type": "boolean", + "description": "Whether to format the word in italic.", + "required": false, + "defaultValue": "false" + }, + { + "name": "underline", + "type": "boolean", + "description": "Whether to underline the word, if supported by the platform.", + "required": false, + "defaultValue": "false" + }, + { + "name": "strikethrough", + "type": "boolean", + "description": "Whether to apply strikethrough formatting to the word.", + "required": false, + "defaultValue": "false" + }, + { + "name": "uppercase", + "type": "boolean", + "description": "Whether to convert the word to uppercase letters.", + "required": false, + "defaultValue": "false" + }, + { + "name": "platform", + "type": "string", + "description": "Target messaging platform to tailor formatting syntax (e.g., 'markdown', 'slack', 'discord').", + "required": false, + "defaultValue": "markdown" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted word string ready to be inserted into a messaging conversation with proper style formatting." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to style or emphasize specific words in messages for clarity, emphasis, or presentation purposes, adapting formatting to the messaging platform's syntax constraints.", + "limitations": "Cannot format phrases or entire sentences; only single words. Not all platforms support all formatting styles, and output depends on the specified platform compatibility.", + "examples": [ + "Format the word 'hello' to be bold and italic in markdown.", + "Convert the word 'warning' to uppercase and strikethrough for Slack.", + "Underline the word 'important' for Discord chat." + ] + }, + "tags": [ + "formatting", + "word", + "messaging", + "text-style", + "real-time", + "chat", + "emphasis" + ], + "examples": [ + { + "inputJson": "{\"word\":\"alert\",\"bold\":true,\"italic\":false,\"underline\":false,\"strikethrough\":false,\"uppercase\":false,\"platform\":\"markdown\"}", + "description": "Format the word 'alert' in bold for markdown." + }, + { + "inputJson": "{\"word\":\"update\",\"bold\":false,\"italic\":true,\"underline\":true,\"strikethrough\":false,\"uppercase\":false,\"platform\":\"discord\"}", + "description": "Format the word 'update' italic and underlined for Discord." + }, + { + "inputJson": "{\"word\":\"notice\",\"bold\":false,\"italic\":false,\"underline\":false,\"strikethrough\":true,\"uppercase\":true,\"platform\":\"slack\"}", + "description": "Format the word 'NOTICE' uppercase with strikethrough for Slack." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Word", + "context": null + } + }, + { + "name": "messaging.uploadJSON", + "description": "Uploads structured JSON data to a specified real-time messaging channel or chat session, enabling the integration of dynamic data payloads directly into live conversations. Accepts JSON objects as input, optionally tags metadata, and returns an upload confirmation with status and message details.", + "category": "messaging", + "parameters": [ + { + "name": "channelId", + "type": "string", + "description": "The identifier of the target messaging channel or conversation where JSON data will be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "jsonData", + "type": "object", + "description": "The JSON object containing structured data to upload into the messaging channel.", + "required": true, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Authentication token required for authorization to post messages in the target channel.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional metadata key-value pairs to associate with the uploaded JSON data for context or processing.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "priority", + "type": "string", + "description": "Priority level assigned to the message; can influence delivery or highlighting (e.g., normal, high).", + "required": false, + "defaultValue": "normal" + } + ], + "returns": { + "type": "object", + "description": "An object containing the upload status ('success' or 'failure'), a message for details, and optionally a messageId referencing the uploaded content." + }, + "aiAgent": { + "useCase": "This tool is ideal when an AI agent needs to embed structured JSON content into a live messaging environment, such as posting configuration details, status updates, or data snapshots directly into chat channels for real-time collaboration or monitoring. It should be used when structured data transfer in chat is necessary, with authentication and targeting of specific channels.", + "limitations": "Cannot parse or modify JSON content; only uploads provided JSON as-is. Does not support large files beyond practical message size limits. Requires valid authentication and channel identifiers.", + "examples": [ + "Upload system status JSON to the #alerts channel for team notifications.", + "Post user configuration JSON data into a project management chatroom.", + "Send real-time sensor data JSON to a monitoring channel with high priority." + ] + }, + "tags": [ + "messaging", + "upload", + "JSON", + "real-time", + "chat integration", + "data upload", + "API" + ], + "examples": [ + { + "inputJson": "{\"channelId\":\"general\",\"jsonData\":{\"event\":\"userJoined\",\"userId\":\"12345\",\"timestamp\":\"2024-06-01T12:34:56Z\"},\"authToken\":\"abcd1234token\",\"metadata\":{\"source\":\"bot\"},\"priority\":\"normal\"}", + "description": "Uploading a user join event JSON payload to the 'general' channel with normal priority." + }, + { + "inputJson": "{\"channelId\":\"alerts\",\"jsonData\":{\"alertType\":\"temperatureThreshold\",\"value\":78.5,\"units\":\"Celsius\"},\"authToken\":\"secureAuthTokenXYZ\",\"priority\":\"high\"}", + "description": "Uploading a high priority temperature alert JSON to the 'alerts' channel." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "JSON", + "context": null + } + }, + { + "name": "messaging.formatDataset", + "description": "Formats a structured dataset for messaging contexts by converting data arrays or objects into user-friendly chat message formats such as tables, lists, or JSON strings. Accepts datasets as arrays or objects, applies specified formatting style, and outputs a string optimized for real-time messaging display.", + "category": "messaging", + "parameters": [ + { + "name": "dataset", + "type": "object", + "description": "The dataset to format; can be an array of records or an object representing data entries.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatStyle", + "type": "string", + "description": "The desired output format style, e.g., 'table', 'list', 'json', or 'csv'. Determines how the dataset is transformed into a message string.", + "required": true, + "defaultValue": "table" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include headers or keys in the output when applicable, such as in table or CSV formats.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxRows", + "type": "number", + "description": "Maximum number of rows to include in the output to keep the message concise; excess data is truncated with indication.", + "required": false, + "defaultValue": "10" + }, + { + "name": "delimiter", + "type": "string", + "description": "Delimiter character to use for CSV format. Ignored for other formats.", + "required": false, + "defaultValue": "," + } + ], + "returns": { + "type": "object", + "description": "An object containing a 'formattedMessage' string optimized for real-time messaging display of the input dataset in the chosen format." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to present structured data or datasets within chat or messaging platforms in a clear, readable format. It helps convert raw data into appropriately formatted strings such as tables or lists that are easy to read conversationally. Ideal for summarizing API data, logs, stats, or any tabular information for messaging contexts.", + "limitations": "Cannot render complex rich media like images or interactive elements. Formatting is limited to plain text styles appropriate for messaging (tables, lists, JSON, CSV). Very large datasets should be truncated to avoid oversized messages.", + "examples": [ + "Format the user data JSON into a readable table for chat display.", + "Convert a list of alerts into a bulleted list message.", + "Output recent log entries as CSV format text for easy copy-pasting." + ] + }, + "tags": [ + "messaging", + "formatting", + "dataset", + "chat", + "real-time", + "table", + "list", + "json", + "csv" + ], + "examples": [ + { + "inputJson": "{\"dataset\":[{\"name\":\"Alice\",\"score\":92},{\"name\":\"Bob\",\"score\":87}],\"formatStyle\":\"table\",\"includeHeaders\":true,\"maxRows\":5}", + "description": "Formats a small array of user scores into a readable table for messaging." + }, + { + "inputJson": "{\"dataset\":[\"Task 1 completed\",\"Task 2 pending\",\"Task 3 in progress\"],\"formatStyle\":\"list\",\"includeHeaders\":false}", + "description": "Formats a simple array of status messages into a bulleted list." + }, + { + "inputJson": "{\"dataset\":{\"id\":123,\"temperature\":21.6,\"humidity\":58},\"formatStyle\":\"json\"}", + "description": "Formats a JSON object representing sensor data as a JSON string message." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Dataset", + "context": null + } + }, + { + "name": "messaging.formatJSON", + "description": "Formats a given JSON string or object into a human-readable, properly indented string for displaying in messaging or chat interfaces. Accepts raw JSON string or object input, applies indentation and optional syntax highlighting, and outputs a formatted JSON string suitable for user-friendly display.", + "category": "messaging", + "parameters": [ + { + "name": "jsonInput", + "type": "string", + "description": "Raw JSON string or object to be formatted into readable JSON text.", + "required": true, + "defaultValue": "" + }, + { + "name": "indentation", + "type": "number", + "description": "Number of spaces to use for each indentation level; helps control output readability.", + "required": false, + "defaultValue": "2" + }, + { + "name": "addSyntaxHighlighting", + "type": "boolean", + "description": "If true, adds basic syntax highlighting tags for JSON keys and values to improve visual clarity in messaging clients that support styled text.", + "required": false, + "defaultValue": "false" + }, + { + "name": "sortKeys", + "type": "boolean", + "description": "If true, sorts the keys of JSON objects alphabetically before formatting to improve consistency and readability.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "string", + "description": "A formatted JSON string with indentation, optional sorting and syntax highlighting, ready for display in messaging and chat systems." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert raw JSON data into a clean, readable format suitable for sending or displaying in real-time messaging and chat applications. It helps make JSON payloads human-friendly by adding indentation, sorting keys optionally, and optionally applying syntax highlighting tags supported by the client.", + "limitations": "This tool does not validate JSON schema, nor does it handle extremely large JSON objects efficiently. It also cannot customize the highlighting beyond simple boolean enable/disable and does not convert JSON to other data formats.", + "examples": [ + "Format a raw JSON string with 4 spaces indentation for a chat message.", + "Pretty-print an object converting it to a readable JSON string with keys sorted alphabetically.", + "Format JSON string with syntax highlighting enabled for enhanced visual display in chat clients." + ] + }, + "tags": [ + "messaging", + "formatting", + "JSON", + "chat", + "readability", + "syntaxHighlighting", + "prettyPrint" + ], + "examples": [ + { + "inputJson": "{\"jsonInput\":\"{\\\"user\\\":\\\"alice\\\",\\\"messages\\\":[\\\"hello\\\",\\\"world\\\"]}\",\"indentation\":4,\"addSyntaxHighlighting\":false,\"sortKeys\":false}", + "description": "Format a raw JSON string with 4 spaces indentation for messaging display." + }, + { + "inputJson": "{\"jsonInput\":\"{\\\"b\\\":2,\\\"a\\\":1}\",\"indentation\":2,\"addSyntaxHighlighting\":true,\"sortKeys\":true}", + "description": "Format JSON string with syntax highlighting and alphabetically sorted keys." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "JSON", + "context": null + } + }, + { + "name": "messaging.formatTest", + "description": "Formats a code snippet written as a test for messaging or chat integration environments. Accepts test code as a string and processes it to apply consistent indentation, syntax highlighting markers, and line breaks suitable for messaging platform display. Returns the formatted test code as a string ready for sending in chat or messaging tools.", + "category": "messaging", + "parameters": [ + { + "name": "codeSnippet", + "type": "string", + "description": "Raw test code snippet as a string that needs formatting", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language of the test code to enable proper formatting and highlighting (e.g., 'javascript', 'python')", + "required": true, + "defaultValue": "" + }, + { + "name": "indentation", + "type": "number", + "description": "Number of spaces to use for indentation in the formatted output", + "required": false, + "defaultValue": "2" + }, + { + "name": "addLineNumbers", + "type": "boolean", + "description": "Whether to prepend line numbers to each line of the formatted test code", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted test code string optimized for messaging platforms with consistent indentation and optional line numbering." + }, + "aiAgent": { + "useCase": "Use this tool when needing to share or display test code related to messaging/chat integrations in a clear, readable format within chat or messaging platforms, ensuring code blocks maintain readability and structure across devices and clients.", + "limitations": "Does not execute or validate the test code logic, only formats the code snippet text for messaging display. Language-specific formatting is basic and not a substitute for full IDE or linter formatting.", + "examples": [ + "Format a JavaScript Jest test snippet with 4 space indentation and line numbers for sharing in Slack.", + "Format a simple Python unittest snippet for readable display in Microsoft Teams chat without line numbers." + ] + }, + "tags": [ + "messaging", + "formatting", + "test", + "code", + "chat", + "syntax-highlighting" + ], + "examples": [ + { + "inputJson": "{\"codeSnippet\":\"test(\\\"should send message\\\", () => {expect(sendMessage(\\\"hello\\\")).toBe(true);});\",\"language\":\"javascript\",\"indentation\":4,\"addLineNumbers\":true}", + "description": "Format a JavaScript test snippet with 4-space indentation and line numbers for sharing in chat." + }, + { + "inputJson": "{\"codeSnippet\":\"def test_send_message():\\n assert send_message(\\\"hello\\\") == True\",\"language\":\"python\",\"indentation\":2,\"addLineNumbers\":false}", + "description": "Format a Python unittest snippet with 2-space indentation without line numbers for chat." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Test", + "context": null + } + }, + { + "name": "messaging.formatContract", + "description": "Formats an unstructured contract text or contract data input into a standardized, readable legal contract format suitable for messaging platforms. It accepts raw contract text or JSON contract data, applies formatting rules including sections, clauses, numbering, and styling, and outputs a formatted contract string optimized for chats or messaging systems that support rich text or markdown.", + "category": "messaging", + "parameters": [ + { + "name": "contractText", + "type": "string", + "description": "Raw unformatted contract text input to be formatted.", + "required": false, + "defaultValue": "" + }, + { + "name": "contractData", + "type": "object", + "description": "Structured contract data in JSON representing clauses, parties, and terms to format into contract text.", + "required": false, + "defaultValue": "" + }, + { + "name": "formatStyle", + "type": "string", + "description": "Style of formatting output, e.g., 'markdown', 'plainText', 'html'.", + "required": false, + "defaultValue": "markdown" + }, + { + "name": "includeClauseNumbers", + "type": "boolean", + "description": "Whether to include clause numbering in the formatted contract.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxLineLength", + "type": "number", + "description": "Maximum line length for wrapping text in the formatted contract.", + "required": false, + "defaultValue": "80" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with the formatted contract as a string and metadata indicating formatting style and sections count." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to send or display legal contract information within messaging or chat platforms and requires the contract to be formatted clearly and readably, preserving clauses and structure. It is useful to convert raw contract text or JSON contract data into a user-friendly contract presentation tailored to messaging context.", + "limitations": "Cannot validate legal correctness or content of contract, only formats given text/data. May not fully support complex formatting beyond basic styling and numbering as allowed by the target messaging platform.", + "examples": [ + "Format raw contract text for display in Slack message.", + "Convert structured JSON contract data into markdown-style contract for chat message.", + "Reformat a dense contract into chunked clauses with numbering for clearer reading in chat." + ] + }, + "tags": [ + "messaging", + "formatting", + "contract", + "legal", + "chat", + "markdown" + ], + "examples": [ + { + "inputJson": "{\"contractText\":\"This Agreement is made on the 1st of Jan, 2024. The parties agree to the following terms...\",\"formatStyle\":\"markdown\",\"includeClauseNumbers\":true}", + "description": "Format raw contract text input into markdown formatted contract with numbered clauses." + }, + { + "inputJson": "{\"contractData\":{\"title\":\"Service Agreement\",\"clauses\":[{\"title\":\"Scope\",\"text\":\"Provider agrees to...\"},{\"title\":\"Payment\",\"text\":\"Client will pay...\"}]},\"formatStyle\":\"plainText\",\"maxLineLength\":60}", + "description": "Format structured JSON contract data into plain text contract with maximum line length of 60 characters." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Contract", + "context": null + } + }, + { + "name": "messaging.draftReport", + "description": "Generates a concise, structured draft report based on key points or chat conversation history provided as input. The tool processes textual inputs, optionally filtering or summarizing conversations, and outputs a formatted report suitable for messaging or communication contexts.", + "category": "messaging", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title of the report to be generated.", + "required": true, + "defaultValue": "" + }, + { + "name": "contentSummary", + "type": "string", + "description": "A brief summary or the main discussion points to include in the report.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeTimestamp", + "type": "boolean", + "description": "Whether to include timestamps for each summarized point in the report.", + "required": false, + "defaultValue": "false" + }, + { + "name": "authorName", + "type": "string", + "description": "Name of the person or system generating the report.", + "required": false, + "defaultValue": "" + }, + { + "name": "formatStyle", + "type": "string", + "description": "Preferred formatting style for the report output, e.g., 'bulletPoints', 'paragraph','markdown'.", + "required": false, + "defaultValue": "bulletPoints" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length of the draft report in characters. Helps keep the report concise.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing the draft report text and metadata such as character count and format style." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create a readable draft report summarizing chat conversations or discussion points for messaging platforms or collaborative environments. It helps transform raw or summarized textual data into an organized report format suitable for sharing.", + "limitations": "This tool does not analyze sentiment or detect factual inaccuracies. It requires input summaries or conversation text to function and does not generate reports from non-text media.", + "examples": [ + "Create a meeting summary report from chat logs.", + "Draft a project update report based on key discussion points.", + "Generate a report summarizing customer feedback conversation" + ] + }, + "tags": [ + "messaging", + "reporting", + "summary", + "chat", + "communication", + "drafting" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Weekly Team Sync\",\"contentSummary\":\"- Discussed project deadlines and next steps\\n- Reviewed blockers and assigned action items\\n- Planned next sprint goals\",\"includeTimestamp\":true,\"authorName\":\"AI Assistant\",\"formatStyle\":\"bulletPoints\",\"maxLength\":500}", + "description": "Draft a bullet point report with timestamps and author name included, summarizing the weekly team sync discussion." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Report", + "context": null + } + }, + { + "name": "messaging.buildContainer", + "description": "Constructs and configures a Docker container environment tailored for real-time messaging and chat applications. Accepts container base image, environment variables, port mappings, and messaging service configurations to produce a ready-to-deploy container specification with necessary middleware and connection setups.", + "category": "messaging", + "parameters": [ + { + "name": "baseImage", + "type": "string", + "description": "Docker base image name (e.g., 'node:16-alpine') to build the container from.", + "required": true, + "defaultValue": "" + }, + { + "name": "environmentVariables", + "type": "object", + "description": "Key-value pairs of environment variables to set inside the container for configuration purposes.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "portMappings", + "type": "array", + "description": "List of port mappings from host to container (e.g., [{\"hostPort\":3000,\"containerPort\":3000}]) to expose messaging service ports.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "messagingService", + "type": "string", + "description": "The messaging service or protocol to configure inside the container (e.g., 'MQTT', 'WebSocket', 'XMPP').", + "required": true, + "defaultValue": "" + }, + { + "name": "loggingEnabled", + "type": "boolean", + "description": "Flag to enable detailed logging inside the container for debugging messaging traffic.", + "required": false, + "defaultValue": "false" + }, + { + "name": "resourceLimits", + "type": "object", + "description": "Optional CPU and memory limits for the container in keys 'cpu' (number cores) and 'memory' (MB).", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "An object containing the finalized container configuration including Dockerfile content, environment setup, and networking details ready for deployment." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically generate a container environment optimized for real-time messaging applications, ensuring correct base image, environmental setup, service configuration, and connectivity. It supports scenarios like deploying chatbots, messaging middleware, or real-time communication servers within container orchestration environments.", + "limitations": "This tool does not build or run the container but only configures the container specification. It does not handle service orchestration or deployment to platforms like Kubernetes directly.", + "examples": [ + "Create a container with Node.js base image for WebSocket messaging with ports 8080 mapped.", + "Build a lightweight MQTT broker container with environment variables for authentication.", + "Generate a container setup with logging enabled and CPU/memory limits for an XMPP service." + ] + }, + "tags": [ + "messaging", + "container", + "docker", + "real-time", + "chat", + "build", + "infrastructure", + "deployment" + ], + "examples": [ + { + "inputJson": "{\"baseImage\":\"node:16-alpine\",\"environmentVariables\":{\"NODE_ENV\":\"production\",\"API_KEY\":\"abc123\"},\"portMappings\":[{\"hostPort\":8080,\"containerPort\":8080}],\"messagingService\":\"WebSocket\",\"loggingEnabled\":true,\"resourceLimits\":{\"cpu\":1,\"memory\":512}}", + "description": "Creates a Node.js based WebSocket container with production environment, exposes port 8080, enables logging, and sets CPU/memory limits." + }, + { + "inputJson": "{\"baseImage\":\"eclipse-mosquitto:2\",\"environmentVariables\":{},\"portMappings\":[{\"hostPort\":1883,\"containerPort\":1883}],\"messagingService\":\"MQTT\",\"loggingEnabled\":false,\"resourceLimits\":{}}", + "description": "Builds a container for MQTT using the Eclipse Mosquitto image exposing default MQTT port without logging or resource limits." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Container", + "context": null + } + }, + { + "name": "messaging.composeWord", + "description": "Composes a single word tailored for messaging contexts, accepting parameters specifying the desired tone, formality level, and additional styling options. It processes these inputs to generate a word that fits the intended usage for real-time chat or messaging platforms and returns the composed word as output.", + "category": "messaging", + "parameters": [ + { + "name": "tone", + "type": "string", + "description": "Desired emotional tone of the word, e.g., friendly, urgent, neutral.", + "required": false, + "defaultValue": "neutral" + }, + { + "name": "formalityLevel", + "type": "string", + "description": "Formality level of the word to compose, e.g., formal, informal.", + "required": false, + "defaultValue": "informal" + }, + { + "name": "partOfSpeech", + "type": "string", + "description": "Specify the part of speech for the word, e.g., noun, verb, adjective, adverb.", + "required": false, + "defaultValue": "noun" + }, + { + "name": "lengthLimit", + "type": "number", + "description": "Maximum number of characters allowed for the word; zero means no limit.", + "required": false, + "defaultValue": "0" + }, + { + "name": "includeSlang", + "type": "boolean", + "description": "Whether to consider slang or colloquial terms when composing the word.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the composed word string and metadata including tone, formality, and part of speech." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to generate a single word optimized for messaging or chat, adapting to tone and formality preferences to suit conversational contexts or branding voice in real-time communication systems. It helps produce context-appropriate vocabulary on demand.", + "limitations": "This tool cannot generate full sentences or phrases, only single words. It may not produce specialized technical vocabulary without appropriate prompt context. It does not handle multi-word expressions or idioms.", + "examples": [ + "Compose a friendly adjective for a chat greeting.", + "Generate a formal noun suitable for a business message.", + "Create a short informal verb including slang when possible." + ] + }, + "tags": [ + "messaging", + "composition", + "word generation", + "tone", + "formality", + "chat", + "real-time" + ], + "examples": [ + { + "inputJson": "{\"tone\":\"friendly\",\"formalityLevel\":\"informal\",\"partOfSpeech\":\"adjective\",\"lengthLimit\":0,\"includeSlang\":false}", + "description": "Generate a friendly, informal adjective word with no length limit and no slang." + }, + { + "inputJson": "{\"tone\":\"neutral\",\"formalityLevel\":\"formal\",\"partOfSpeech\":\"noun\",\"lengthLimit\":10,\"includeSlang\":false}", + "description": "Generate a neutral, formal noun with a maximum of 10 characters, no slang." + }, + { + "inputJson": "{\"tone\":\"urgent\",\"formalityLevel\":\"informal\",\"partOfSpeech\":\"verb\",\"lengthLimit\":6,\"includeSlang\":true}", + "description": "Generate an urgent, informal verb word including slang terms, max length 6 characters." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Word", + "context": null + } + }, + { + "name": "messaging.buildPullRequest", + "description": "This tool generates a formatted pull request message suitable for posting in real-time messaging platforms. It accepts details like branch names, title, description, reviewers, and optionally links to issue trackers. It processes and formats these inputs to create a clear, standardized pull request notification for chat integration.", + "category": "messaging", + "parameters": [ + { + "name": "sourceBranch", + "type": "string", + "description": "The name of the source branch for the pull request", + "required": true, + "defaultValue": "" + }, + { + "name": "targetBranch", + "type": "string", + "description": "The name of the target branch to merge into", + "required": true, + "defaultValue": "" + }, + { + "name": "title", + "type": "string", + "description": "The title or headline of the pull request", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Detailed description or summary of the pull request changes", + "required": false, + "defaultValue": "" + }, + { + "name": "reviewers", + "type": "array", + "description": "List of usernames or identifiers of requested reviewers", + "required": false, + "defaultValue": "[]" + }, + { + "name": "issueLink", + "type": "string", + "description": "URL to the related issue or ticket for reference", + "required": false, + "defaultValue": "" + }, + { + "name": "includeDiffStats", + "type": "boolean", + "description": "Whether to include diff statistics such as number of files changed, additions, deletions", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing a formatted message string for posting in the messaging platform, including all relevant pull request details" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create a well-structured pull request notification message for a chat or messaging platform. It is ideal for bots that monitor code repository events or for generating human-friendly summaries before posting to channels like Slack or Microsoft Teams. This facilitates clear communication and collaboration during development cycles.", + "limitations": "This tool does not create or submit the actual pull request in a code repository; it only builds formatted messages for messaging tools. It does not handle authentication or API interactions with version control systems.", + "examples": [ + "Create a pull request message announcing a new feature branch merging into main with specified reviewers.", + "Generate a message including an issue link and diff stats summarizing the pull request changes.", + "Build a pull request chat message with only the required parameters: branch names and title." + ] + }, + "tags": [ + "messaging", + "pull request", + "chat integration", + "notification", + "code collaboration" + ], + "examples": [ + { + "inputJson": "{\"sourceBranch\":\"feature/login-improvements\",\"targetBranch\":\"main\",\"title\":\"Improve login flow UX\",\"description\":\"Refactor login UI, add error handling, and enhance security checks.\",\"reviewers\":[\"alice\",\"bob\"],\"issueLink\":\"https://tracker.example.com/issues/123\",\"includeDiffStats\":true}", + "description": "Creates a detailed pull request message with reviewers and issue link, including diff stats." + }, + { + "inputJson": "{\"sourceBranch\":\"bugfix/typo-fix\",\"targetBranch\":\"develop\",\"title\":\"Fix typo in README\"}", + "description": "Generates a minimal pull request message with only required fields for a simple text fix." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "PullRequest", + "context": null + } + }, + { + "name": "messaging.buildBranch", + "description": "Creates a new messaging branch within a chat or messaging platform codebase by initializing the necessary structures and configurations. Accepts a base branch name and optional metadata, processes branch creation including setting up messaging event handlers, and returns details about the new branch created, including its identifier and status.", + "category": "messaging", + "parameters": [ + { + "name": "baseBranchName", + "type": "string", + "description": "The name of the base code branch to branch from, typically a stable or main branch.", + "required": true, + "defaultValue": "" + }, + { + "name": "newBranchName", + "type": "string", + "description": "The desired name for the new messaging branch to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "messagingPlatform", + "type": "string", + "description": "The target messaging platform or framework (e.g., Slack, Microsoft Teams) for which the branch is customized.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeEventHandlers", + "type": "boolean", + "description": "Whether to include default event handler stubs in the new branch code for message events.", + "required": false, + "defaultValue": "true" + }, + { + "name": "metadata", + "type": "object", + "description": "Additional metadata and settings for branch creation such as description, author, or configuration flags.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "An object containing the new branch ID, name, messaging platform, creation status, and any error messages." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to automate or assist with initializing new branches in a code repository specifically geared towards messaging applications or chat integrations. Helpful when creating multiple environment branches customized for different messaging platforms or features.", + "limitations": "This tool does not perform the actual code merge or deployment; it only sets up the new branch with initial messaging-specific code infrastructure. It requires access to the version control system and permission to create branches.", + "examples": [ + "Create a new branch 'feature/slack-integration' based off 'main' for Slack messaging platform with event handlers enabled.", + "Build a messaging branch named 'dev/teams-bot' from 'development' branch without event handlers for Microsoft Teams." + ] + }, + "tags": [ + "messaging", + "branch", + "codebase", + "development", + "chat", + "integration", + "automation" + ], + "examples": [ + { + "inputJson": "{\"baseBranchName\":\"main\",\"newBranchName\":\"feature/slack-integration\",\"messagingPlatform\":\"Slack\",\"includeEventHandlers\":true,\"metadata\":{\"author\":\"devUser\",\"description\":\"Slack integration features\"}}", + "description": "Create a 'feature/slack-integration' branch from 'main' with Slack event handlers and metadata." + }, + { + "inputJson": "{\"baseBranchName\":\"dev\",\"newBranchName\":\"dev/teams-bot\",\"messagingPlatform\":\"Microsoft Teams\",\"includeEventHandlers\":false,\"metadata\":{}}", + "description": "Create 'dev/teams-bot' branch from 'dev' without event handlers for Teams bot development." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Branch", + "context": null + } + }, + { + "name": "messaging.buildEndpoint", + "description": "Constructs a real-time messaging endpoint configuration given protocol, authentication, and routing options. Accepts parameters such as protocol type (e.g., WebSocket, MQTT), security credentials, allowed message types, and optional middleware integrations. Outputs a JSON configuration object representing a ready-to-use messaging endpoint setup for integration in chat or IoT systems.", + "category": "messaging", + "parameters": [ + { + "name": "protocol", + "type": "string", + "description": "Specifies the messaging protocol for the endpoint, e.g., 'WebSocket', 'MQTT', 'SSE'.", + "required": true, + "defaultValue": "" + }, + { + "name": "authentication", + "type": "object", + "description": "An object detailing authentication method and credentials, e.g., token or API key info.", + "required": true, + "defaultValue": "" + }, + { + "name": "allowedMessageTypes", + "type": "array", + "description": "List of allowed message types (e.g., 'text', 'image', 'json').", + "required": false, + "defaultValue": "[\"text\"]" + }, + { + "name": "maxConnections", + "type": "number", + "description": "Maximum number of concurrent client connections allowed.", + "required": false, + "defaultValue": "100" + }, + { + "name": "enableLogging", + "type": "boolean", + "description": "Flag to enable detailed logging of message traffic for debugging.", + "required": false, + "defaultValue": "false" + }, + { + "name": "middleware", + "type": "array", + "description": "Array of middleware component names or settings to process messages, such as filters or transformers.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "Returns a JSON object representing the fully configured messaging endpoint ready for deployment or integration." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create or configure a messaging endpoint for real-time chat or IoT messaging that requires specific protocols, authentication, and message handling rules. It helps automate setting up endpoints that are compatible with client applications or services.", + "limitations": "Does not provision actual server infrastructure or deploy the endpoint. It only generates the configuration object. It cannot validate connectivity or runtime behavior.", + "examples": [ + "Create a WebSocket endpoint with token authentication for text and JSON messages.", + "Build an MQTT endpoint allowing image messaging with API key authentication and logging enabled.", + "Generate a server-sent events (SSE) endpoint with no authentication and default settings." + ] + }, + "tags": [ + "messaging", + "endpoint", + "configuration", + "real-time", + "chat", + "protocol", + "integration" + ], + "examples": [ + { + "inputJson": "{\"protocol\":\"WebSocket\",\"authentication\":{\"type\":\"token\",\"token\":\"abc123\"},\"allowedMessageTypes\":[\"text\",\"json\"],\"maxConnections\":200,\"enableLogging\":true,\"middleware\":[\"filterProfanity\"]}", + "description": "Build a WebSocket messaging endpoint using token authentication allowing text and JSON messages with logging and a profanity filter." + }, + { + "inputJson": "{\"protocol\":\"MQTT\",\"authentication\":{\"type\":\"apiKey\",\"key\":\"key123\"},\"allowedMessageTypes\":[\"image\"],\"maxConnections\":50,\"enableLogging\":false,\"middleware\":[]}", + "description": "Create an MQTT endpoint with API key authentication supporting image messages without logging or middleware." + }, + { + "inputJson": "{\"protocol\":\"SSE\",\"authentication\":{},\"allowedMessageTypes\":[\"text\"],\"maxConnections\":100,\"enableLogging\":false,\"middleware\":[]}", + "description": "Configure a simple Server-Sent Events endpoint with no authentication and default message settings." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Endpoint", + "context": null + } + }, + { + "name": "messaging.buildModule", + "description": "Constructs a customizable messaging module for real-time chat integration in applications. Accepts configuration inputs including supported protocols, message format options, user authentication methods, and UI customization settings. Outputs a ready-to-deploy code module encapsulating messaging features tailored to the specified parameters.", + "category": "messaging", + "parameters": [ + { + "name": "moduleName", + "type": "string", + "description": "The unique name identifier for the messaging module to be generated.", + "required": true, + "defaultValue": "" + }, + { + "name": "supportedProtocols", + "type": "array", + "description": "Array of messaging protocols to support, e.g., ['WebSocket', 'MQTT', 'XMPP'].", + "required": true, + "defaultValue": "[\"WebSocket\"]" + }, + { + "name": "messageFormat", + "type": "string", + "description": "Preferred message data format such as 'JSON', 'XML', or 'PlainText'.", + "required": true, + "defaultValue": "JSON" + }, + { + "name": "enableEncryption", + "type": "boolean", + "description": "Flag to enable message encryption for secure communication.", + "required": false, + "defaultValue": "false" + }, + { + "name": "authenticationMethod", + "type": "string", + "description": "User authentication method supported, e.g., 'OAuth2', 'JWT', 'None'.", + "required": false, + "defaultValue": "None" + }, + { + "name": "uiTheme", + "type": "string", + "description": "Optional UI theme style applied to the chat interface (e.g., 'light', 'dark').", + "required": false, + "defaultValue": "light" + }, + { + "name": "maxConcurrentConnections", + "type": "number", + "description": "Maximum number of simultaneous client connections allowed by the module.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated messaging module's source code as a string, the list of included protocols, and configuration summary." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a fully functional messaging module with real-time chat capabilities tailored to specific application requirements, protocols, and security options. Ideal for integrating chat into web or mobile applications with flexible customization.", + "limitations": "The tool does not handle deployment infrastructure, integration with backend services beyond messaging protocols, or actual runtime environment setup. It also cannot automatically test the module or ensure compatibility with every possible platform.", + "examples": [ + "Build a messaging module named 'ChatPro' supporting WebSocket with JSON messages and OAuth2 authentication.", + "Create a lightweight chat module with MQTT protocol, plain text messages, no encryption, and a dark UI theme.", + "Generate a messaging module with XMPP protocol supporting encrypted messages and JWT authentication, supporting up to 50 concurrent clients." + ] + }, + "tags": [ + "messaging", + "module generation", + "real-time chat", + "protocol support", + "code generation", + "security", + "customization" + ], + "examples": [ + { + "inputJson": "{\"moduleName\":\"ChatPro\",\"supportedProtocols\":[\"WebSocket\"],\"messageFormat\":\"JSON\",\"enableEncryption\":true,\"authenticationMethod\":\"OAuth2\",\"uiTheme\":\"light\",\"maxConcurrentConnections\":100}", + "description": "Generate a WebSocket-based JSON messaging module with encryption and OAuth2 authentication." + }, + { + "inputJson": "{\"moduleName\":\"LiteChat\",\"supportedProtocols\":[\"MQTT\"],\"messageFormat\":\"PlainText\",\"enableEncryption\":false,\"authenticationMethod\":\"None\",\"uiTheme\":\"dark\",\"maxConcurrentConnections\":20}", + "description": "Build a lightweight MQTT messaging module with plain text messages and no authentication." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Module", + "context": null + } + }, + { + "name": "messaging.generateQuery", + "description": "Generates structured query strings for real-time messaging platforms based on filtering criteria, keywords, and user context. Accepts parameters like keywords array, user ID, date range, and flags for including metadata. Outputs a query string compatible with messaging APIs for searching or filtering messages.", + "category": "messaging", + "parameters": [ + { + "name": "keywords", + "type": "array", + "description": "List of keywords or phrases to include in the query filter", + "required": true, + "defaultValue": "[]" + }, + { + "name": "userId", + "type": "string", + "description": "User identifier to filter messages sent or received by this user", + "required": false, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "ISO 8601 start date to filter messages from this date", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "ISO 8601 end date to filter messages up to this date", + "required": false, + "defaultValue": "" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Flag indicating if the query should include message metadata fields", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxResults", + "type": "number", + "description": "Maximum number of messages to retrieve", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated query string for messaging API usage, and optionally parameters metadata." + }, + "aiAgent": { + "useCase": "Use this tool when needing to create precise query strings to filter or search messages within real-time messaging platforms or chat services. It is especially helpful when composing complex filters including keywords, user scoping, date ranges, or inclusion of message metadata. By generating standardized query strings, the agent can interact with APIs that require structured queries.", + "limitations": "This tool does not execute the query or fetch messages; it only builds query strings. It assumes standard messaging query syntax and may require adaptation for specific platform dialects.", + "examples": [ + "Generate a query for messages containing 'urgent' and 'deadline' from user 'user123' in the last week.", + "Create a query to find messages with keyword 'error' including metadata, limiting to 50 results.", + "Build a query for messages between 2023-01-01 and 2023-01-31 with keywords 'meeting' or 'schedule'." + ] + }, + "tags": [ + "messaging", + "query", + "filter", + "search", + "real-time", + "chat" + ], + "examples": [ + { + "inputJson": "{\"keywords\":[\"urgent\",\"deadline\"],\"userId\":\"user123\",\"startDate\":\"2024-05-01T00:00:00Z\",\"endDate\":\"2024-05-08T23:59:59Z\",\"includeMetadata\":false,\"maxResults\":100}", + "description": "Query filtering messages containing 'urgent' and 'deadline' from user 'user123' in the first week of May 2024." + }, + { + "inputJson": "{\"keywords\":[\"error\"],\"includeMetadata\":true,\"maxResults\":50}", + "description": "Query for messages with the keyword 'error', including metadata fields, limited to 50 results." + }, + { + "inputJson": "{\"keywords\":[\"meeting\",\"schedule\"],\"startDate\":\"2023-01-01T00:00:00Z\",\"endDate\":\"2023-01-31T23:59:59Z\"}", + "description": "Query for messages containing either 'meeting' or 'schedule' during January 2023." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Query", + "context": null + } + }, + { + "name": "messaging.generateLink", + "description": "Generates a secure, customizable messaging link for real-time chat or communication integration. Accepts parameters to specify the target channel, optional user identification, link expiration, and additional query parameters. Produces a URL string that can be shared or embedded to initiate or join messaging sessions.", + "category": "messaging", + "parameters": [ + { + "name": "channelId", + "type": "string", + "description": "Unique identifier of the messaging channel or chat room for which the link is generated.", + "required": true, + "defaultValue": "" + }, + { + "name": "userId", + "type": "string", + "description": "Optional user identifier to pre-associate the link with a specific user session.", + "required": false, + "defaultValue": "" + }, + { + "name": "expiresInSeconds", + "type": "number", + "description": "Duration in seconds before the link expires. If zero or omitted, the link does not expire.", + "required": false, + "defaultValue": "0" + }, + { + "name": "queryParams", + "type": "object", + "description": "Additional key-value pairs to append as query parameters in the generated link for customization.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "isTemporary", + "type": "boolean", + "description": "Flag indicating whether the link is temporary and should disable reuse after first use.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated messaging link URL as a string property named 'url'." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create shareable, customizable links for users to join or initiate messaging channels in real-time chat applications, especially when specifying user context, expiration, or additional parameters for enhanced integration.", + "limitations": "This tool does not handle the actual sending or processing of messages, user authentication, or content moderation. It only generates the URL; proper backend services must support link usage and validation.", + "examples": [ + "Generate a permanent link to channel '12345' for anonymous users.", + "Create a temporary link for user 'user789' that expires in 3600 seconds.", + "Generate a link with extra query parameters to trigger specific client-side behaviors." + ] + }, + "tags": [ + "messaging", + "link generation", + "chat", + "real-time", + "integration", + "sharing" + ], + "examples": [ + { + "inputJson": "{\"channelId\":\"general-chat\"}", + "description": "Generate a permanent messaging link for the 'general-chat' channel with no user association and default settings." + }, + { + "inputJson": "{\"channelId\":\"support-room\",\"userId\":\"user123\",\"expiresInSeconds\":1800}", + "description": "Generate a link to 'support-room' tied to user 'user123' which expires in 30 minutes." + }, + { + "inputJson": "{\"channelId\":\"marketing\",\"queryParams\":{\"utm_source\":\"email_campaign\"},\"isTemporary\":true}", + "description": "Generate a temporary link to 'marketing' channel with a UTM parameter for tracking the source." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Link", + "context": null + } + }, + { + "name": "messaging.createKPI", + "description": "Generates key performance indicators (KPIs) for messaging platforms by analyzing chat data and metadata. Accepts parameters defining KPI type, time range, and target channels or users. Processes message volumes, response times, user engagement metrics, and outputs structured KPI results for reporting or monitoring.", + "category": "messaging", + "parameters": [ + { + "name": "kpiType", + "type": "string", + "description": "Type of KPI to calculate, e.g., messageVolume, responseTime, userEngagement.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date for the KPI calculation period, in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date for the KPI calculation period, in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "channels", + "type": "array", + "description": "List of channel IDs to include in KPI calculation. If empty or omitted, includes all channels.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "userIds", + "type": "array", + "description": "List of user IDs to filter the data by. If empty or omitted, includes all users.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeBots", + "type": "boolean", + "description": "Whether to include bot messages in calculations. Defaults to false.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Structured KPI report including metric name, calculated value, unit, and timeframe. Format varies by KPI type." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create measurable performance metrics from messaging data, such as tracking message volume trends, average response times, or user engagement over a specified period for certain channels or users to enable monitoring and decision making.", + "limitations": "Does not collect raw message content, only metadata and aggregated statistics. Does not perform real-time data streaming; requires historical data access. KPI types are limited to predefined metrics like volume, response times, and engagement.", + "examples": [ + "Calculate total messages sent in channel 'sales' between 2024-01-01 and 2024-01-31.", + "Get average first response time for all users from 2024-03-01 to 2024-03-15.", + "Measure user engagement KPIs including bot messages in main support channels for last week." + ] + }, + "tags": [ + "messaging", + "analytics", + "KPI", + "reporting", + "chat", + "performance", + "monitoring" + ], + "examples": [ + { + "inputJson": "{\"kpiType\":\"messageVolume\",\"startDate\":\"2024-04-01\",\"endDate\":\"2024-04-30\",\"channels\":[\"general\",\"support\"],\"userIds\":[],\"includeBots\":false}", + "description": "Calculate the total number of messages in the 'general' and 'support' channels during April 2024, excluding bot messages." + }, + { + "inputJson": "{\"kpiType\":\"responseTime\",\"startDate\":\"2024-05-01\",\"endDate\":\"2024-05-07\",\"channels\":[],\"userIds\":[\"user123\",\"user456\"],\"includeBots\":false}", + "description": "Calculate the average response time for two specific users across all channels during the first week of May 2024." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "KPI", + "context": null + } + }, + { + "name": "messaging.generateArticle", + "description": "Generates a coherent, well-structured article suitable for messaging platforms based on given topic, style preferences, and target audience. Accepts inputs such as topic keywords, article length, tone, and format, and outputs a formatted article text ready for sharing or posting.", + "category": "messaging", + "parameters": [ + { + "name": "topic", + "type": "string", + "description": "Main topic or keywords the article should cover", + "required": true, + "defaultValue": "" + }, + { + "name": "length", + "type": "number", + "description": "Approximate desired length of the article in words", + "required": false, + "defaultValue": "500" + }, + { + "name": "tone", + "type": "string", + "description": "Tone of the article, e.g., formal, informal, conversational, professional", + "required": false, + "defaultValue": "conversational" + }, + { + "name": "targetAudience", + "type": "string", + "description": "Intended audience for the article, e.g., general public, developers, marketers", + "required": false, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "Preferred article format: paragraph, list, Q&A, or mixed", + "required": false, + "defaultValue": "paragraph" + }, + { + "name": "includeCallToAction", + "type": "boolean", + "description": "Whether to include a call-to-action section at the end", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated article text along with metadata like word count and format" + }, + "aiAgent": { + "useCase": "Use this tool when needing to quickly generate medium-length articles or content pieces suitable for real-time messaging platforms or chat integrations, especially when input constraints are minimal and customization for tone and audience is needed. It helps automate article writing based on dynamic inputs for conversational or informative content.", + "limitations": "Cannot guarantee factual accuracy or up-to-date information, does not research external databases, and may not handle highly technical or specialized subjects reliably. Output requires human review before publishing.", + "examples": [ + "Generate a 600-word informal article on 'remote work productivity tips' aimed at general professionals.", + "Create a short, formal article for developers about new JavaScript features, including a call to action to try the latest version.", + "Produce a conversational list-format article about healthy snacks for office workers without a call to action." + ] + }, + "tags": [ + "messaging", + "article generation", + "content creation", + "text generation", + "chat integration", + "real-time", + "automation" + ], + "examples": [ + { + "inputJson": "{\"topic\":\"remote work productivity tips\",\"length\":600,\"tone\":\"informal\",\"targetAudience\":\"general professionals\",\"format\":\"paragraph\",\"includeCallToAction\":false}", + "description": "Generate a 600-word informal article on remote work productivity tips aimed at general professionals." + }, + { + "inputJson": "{\"topic\":\"new JavaScript features\",\"length\":400,\"tone\":\"formal\",\"targetAudience\":\"developers\",\"format\":\"paragraph\",\"includeCallToAction\":true}", + "description": "Generate a 400-word formal article for developers about new JavaScript features, including a call to action." + }, + { + "inputJson": "{\"topic\":\"healthy snacks for office workers\",\"length\":300,\"tone\":\"conversational\",\"targetAudience\":\"office workers\",\"format\":\"list\",\"includeCallToAction\":false}", + "description": "Produce a conversational list-format article about healthy snacks for office workers without a call to action." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Article", + "context": null + } + }, + { + "name": "messaging.createTable", + "description": "This tool creates a structured table representation suitable for real-time messaging platforms. It accepts input specifying column headers, row data, and optional formatting. The output is a message-friendly table object that can be rendered or transmitted within chat applications to display organized data clearly.", + "category": "messaging", + "parameters": [ + { + "name": "columns", + "type": "array", + "description": "An array of strings representing the table column headers.", + "required": true, + "defaultValue": "" + }, + { + "name": "rows", + "type": "array", + "description": "A two-dimensional array where each inner array contains cell values for a row corresponding to the columns.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeHeader", + "type": "boolean", + "description": "Flag to include the column headers as the table's first row in output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "borderStyle", + "type": "string", + "description": "Specifies the border style of the table; options include 'none', 'simple', or 'grid'.", + "required": false, + "defaultValue": "simple" + }, + { + "name": "maxWidth", + "type": "number", + "description": "Maximum width of the table in characters for message formatting; text will be truncated or wrapped as needed.", + "required": false, + "defaultValue": "80" + } + ], + "returns": { + "type": "object", + "description": "An object containing a formatted table string ready for messaging platform display and metadata about columns and rows." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert structured data into a clear tabular format optimized for display within chat or messaging environments, ensuring readability and proper alignment. Useful for sending reports, summaries, or any data snapshots in conversations.", + "limitations": "This tool does not support advanced interactive table features such as sorting or filtering within the messaging platform. It also does not export to external file formats like CSV or Excel.", + "examples": [ + "Create a table with sales data to send in chat: columns ['Product','Quantity','Price'], rows [[\"Apples\",10,\"$1.00\"],[\"Bananas\",5,\"$0.50\"]].", + "Generate a simple attendee list with names and RSVP status for a meeting chat.", + "Make a leaderboard table showing usernames and scores for a game chat channel." + ] + }, + "tags": [ + "messaging", + "table", + "formatting", + "chat", + "data display" + ], + "examples": [ + { + "inputJson": "{\"columns\":[\"Name\",\"Age\",\"City\"],\"rows\":[[\"Alice\",30,\"New York\"],[\"Bob\",25,\"Los Angeles\"]],\"includeHeader\":true,\"borderStyle\":\"grid\",\"maxWidth\":50}", + "description": "Create a 2-row table with headers and grid border style for a messaging app." + }, + { + "inputJson": "{\"columns\":[\"Task\",\"Status\"],\"rows\":[[\"Deploy update\",\"Completed\"],[\"Fix bug #123\",\"In Progress\"]],\"includeHeader\":true,\"borderStyle\":\"simple\"}", + "description": "Generate a simple border table for task status reporting in chat." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Table", + "context": null + } + }, + { + "name": "messaging.createVideo", + "description": "This tool generates a short video clip from provided images, text captions, and optional background audio for real-time messaging contexts. It accepts arrays of image URLs, text overlays, and audio URL, processes these inputs into a cohesive video slideshow with transitions, and returns a video file URL suitable for chat integration.", + "category": "messaging", + "parameters": [ + { + "name": "imageUrls", + "type": "array", + "description": "An array of image URLs to include as video frames or slides, in display order.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "textCaptions", + "type": "array", + "description": "Optional array of text captions corresponding to each image, to overlay on the video frames.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "backgroundAudioUrl", + "type": "string", + "description": "Optional URL to background audio to include in the video, e.g., music or narration (mp3 format preferred).", + "required": false, + "defaultValue": "" + }, + { + "name": "slideDurationSeconds", + "type": "number", + "description": "Duration each image slide should be displayed in seconds. Default is 3 seconds per slide.", + "required": false, + "defaultValue": "3" + }, + { + "name": "videoResolution", + "type": "string", + "description": "Desired output video resolution, e.g., '720p', '1080p'. Defaults to '720p'.", + "required": false, + "defaultValue": "720p" + }, + { + "name": "videoFormat", + "type": "string", + "description": "Output video container format, e.g., 'mp4', 'webm'. Defaults to 'mp4'.", + "required": false, + "defaultValue": "mp4" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the generated video URL and metadata such as duration and format." + }, + "aiAgent": { + "useCase": "Use this tool when needing to create short, visually engaging video messages from static images and optional audio to enhance chat and messaging applications with multimedia content. Ideal for automated creation of video greetings, tutorials, or announcements in messaging platforms.", + "limitations": "This tool cannot generate videos from live video input or perform advanced video editing like cutting existing videos or complex animations. It also requires URLs of source images and audio; it does not perform image or audio content generation internally.", + "examples": [ + "Create a video slideshow from 5 images with captions for a chat greeting.", + "Generate a short video with background music from company event photos for internal messaging.", + "Produce a product highlight video from images and overlay text to share in a team chat." + ] + }, + "tags": [ + "video", + "messaging", + "media", + "slideshow", + "chat integration", + "multimedia", + "content creation" + ], + "examples": [ + { + "inputJson": "{\"imageUrls\":[\"https://example.com/image1.jpg\",\"https://example.com/image2.jpg\"],\"textCaptions\":[\"Welcome\",\"Thank you for joining!\"],\"backgroundAudioUrl\":\"https://example.com/audio.mp3\",\"slideDurationSeconds\":4,\"videoResolution\":\"1080p\",\"videoFormat\":\"mp4\"}", + "description": "Generate a 2-slide video with captions and background audio in 1080p MP4 format." + }, + { + "inputJson": "{\"imageUrls\":[\"https://example.com/photo1.png\"],\"textCaptions\":[\"Hello from the team!\"],\"slideDurationSeconds\":5}", + "description": "Create a single-slide 5-second video greeting with a caption at default 720p resolution and mp4 format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Video", + "context": null + } + }, + { + "name": "messaging.createRisk", + "description": "Creates a risk incident report related to messaging or chat interactions by analyzing input metadata and risk details. Accepts parameters describing risk type, severity, affected channels, and description, and outputs a structured risk object with unique ID, timestamp, and status for tracking potential security or compliance issues within messaging platforms.", + "category": "messaging", + "parameters": [ + { + "name": "riskType", + "type": "string", + "description": "Type of risk detected, e.g., phishing, dataLeak, harassment", + "required": true, + "defaultValue": "" + }, + { + "name": "severity", + "type": "string", + "description": "Severity level of the risk: low, medium, high, critical", + "required": true, + "defaultValue": "" + }, + { + "name": "affectedChannels", + "type": "array", + "description": "List of messaging channels or platforms affected by the risk", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Detailed description of the risk incident", + "required": true, + "defaultValue": "" + }, + { + "name": "detectedBy", + "type": "string", + "description": "Identifier of the detection source or system", + "required": false, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 timestamp when the risk was detected; if omitted, current time is used", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A risk report object containing riskId, riskType, severity, affectedChannels, description, detectedBy, timestamp, and status indicating if risk is open or resolved" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent identifies or receives information about a security or compliance risk emerging from messaging or chat platforms. It helps document and structure the risk details for tracking and further action within security or incident management workflows.", + "limitations": "This tool does not automatically detect risks from raw chat content; it requires pre-assessed risk information. It also does not resolve or mitigate risks, only creates structured risk records.", + "examples": [ + "Create a risk report for a phishing attempt detected in Slack channel #general with high severity.", + "Document a data leak risk involving exposed customer data in corporate chat app.", + "Record harassment incident detected by moderation AI in messaging platform with medium severity." + ] + }, + "tags": [ + "messaging", + "riskManagement", + "security", + "incidentReporting", + "chatIntegration" + ], + "examples": [ + { + "inputJson": "{\"riskType\":\"phishing\",\"severity\":\"high\",\"affectedChannels\":[\"slack-general\"],\"description\":\"Detected phishing attempt targeting employees with malicious link.\",\"detectedBy\":\"emailFilterBot\",\"timestamp\":\"2024-06-01T15:30:00Z\"}", + "description": "Creating a phishing risk report in Slack channel #general with high severity." + }, + { + "inputJson": "{\"riskType\":\"dataLeak\",\"severity\":\"critical\",\"affectedChannels\":[\"microsoft-teams\"],\"description\":\"Sensitive customer data accidentally shared in Teams chat.\",\"detectedBy\":\"complianceScanner\"}", + "description": "Recording a critical data leak risk in Microsoft Teams without explicit timestamp." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Risk", + "context": null + } + }, + { + "name": "messaging.createOpportunity", + "description": "Creates a business opportunity record from real-time messaging inputs. Accepts details like opportunity name, client info, estimated value, probability, and expected close date. Processes and validates these inputs, then outputs a structured opportunity object for CRM or sales pipeline integration.", + "category": "messaging", + "parameters": [ + { + "name": "opportunityName", + "type": "string", + "description": "The name or title of the business opportunity.", + "required": true, + "defaultValue": "" + }, + { + "name": "clientName", + "type": "string", + "description": "The name of the client or customer related to the opportunity.", + "required": true, + "defaultValue": "" + }, + { + "name": "estimatedValue", + "type": "number", + "description": "Estimated monetary value of the opportunity in USD.", + "required": false, + "defaultValue": "0" + }, + { + "name": "probability", + "type": "number", + "description": "The probability (0-100) that the opportunity will close successfully.", + "required": false, + "defaultValue": "50" + }, + { + "name": "expectedCloseDate", + "type": "string", + "description": "Expected closing date in ISO 8601 format (YYYY-MM-DD).", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Detailed description or notes about the opportunity.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "List of tags or keywords related to the opportunity for categorization.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "Returns the created opportunity object, including a unique opportunityId, timestamps, and all provided fields, formatted for easy CRM integration." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent detects opportunity-related information emerging from chat or messaging platforms, aiming to create structured sales records without manual entry. It facilitates seamless capture of potential deals from conversations.", + "limitations": "This tool does not validate the authenticity of the opportunity information or communicate with external CRM systems directly; integration requires additional tooling.", + "examples": [ + "Create a new sales opportunity after a chat conversation reveals client interest.", + "Extract opportunity details mentioned in a team messaging channel and record them.", + "Generate an opportunity record from a messaging app conversation with client details and deal parameters." + ] + }, + "tags": [ + "messaging", + "business", + "sales", + "opportunity", + "CRM", + "real-time", + "integration" + ], + "examples": [ + { + "inputJson": "{\"opportunityName\":\"New Website Development\",\"clientName\":\"Acme Corp\",\"estimatedValue\":150000,\"probability\":70,\"expectedCloseDate\":\"2024-12-31\",\"description\":\"Developing corporate website and e-commerce platform.\",\"tags\":[\"web\",\"development\",\"priority-high\"]}", + "description": "Create an opportunity for Acme Corp's web development project with estimated value and close date." + }, + { + "inputJson": "{\"opportunityName\":\"Cloud Migration Services\",\"clientName\":\"Beta Inc\",\"estimatedValue\":80000,\"probability\":60}", + "description": "Add a cloud migration opportunity for Beta Inc with basic financial estimates." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Opportunity", + "context": null + } + }, + { + "name": "messaging.createComponent", + "description": "Creates a customizable chat UI component for real-time messaging applications. Accepts configuration options like component type, styles, initial state, and event handlers, and outputs a ready-to-integrate code snippet or object representation of the messaging component tailored to specified requirements.", + "category": "messaging", + "parameters": [ + { + "name": "componentType", + "type": "string", + "description": "Type of messaging component to create, e.g., 'chatWindow', 'messageInput', 'userList'.", + "required": true, + "defaultValue": "" + }, + { + "name": "styles", + "type": "object", + "description": "Custom style properties to apply, e.g., colors, fonts, spacing, specified as CSS-in-JS style object.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "initialState", + "type": "object", + "description": "Initial state data for the component, such as preloaded messages or user data.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "eventHandlers", + "type": "object", + "description": "Mapping of event names to callback functions or handler names for interactivity, e.g., onMessageSend.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "platform", + "type": "string", + "description": "Target platform for the component, e.g., 'web', 'mobile', to tailor output accordingly.", + "required": false, + "defaultValue": "web" + }, + { + "name": "includeStyles", + "type": "boolean", + "description": "Whether to include styles inline with the component code or not.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output: 'reactComponent', 'vueComponent', 'htmlString', or 'jsonObject'.", + "required": false, + "defaultValue": "reactComponent" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the generated component code or data structure and metadata, including the component code string, language/framework, and any warnings or notes about compatibility." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically generate modular messaging UI components customized by type, style, and behavior for integration into messaging platforms or applications. It assists in creating code snippets for chat windows, input fields, or user lists without manual coding.", + "limitations": "Cannot fully implement backend connectivity or real-time data fetching logic; does not support generation of entire chat applications, only frontend components; complex business logic or dynamic state management beyond basic initialState is not supported.", + "examples": [ + "Create a React chat window component with dark theme styles and an event handler for sending messages.", + "Generate a Vue.js message input box without styles for a mobile app, including a placeholder text.", + "Produce a JSON object describing a user list component with default styling for web platform integration." + ] + }, + "tags": [ + "messaging", + "UI", + "component", + "chat", + "real-time", + "frontend", + "code generation", + "customization" + ], + "examples": [ + { + "inputJson": "{\"componentType\":\"chatWindow\",\"styles\":{\"backgroundColor\":\"#1a1a1a\",\"color\":\"white\"},\"initialState\":{\"messages\":[]},\"eventHandlers\":{\"onMessageSend\":\"handleSend\"},\"platform\":\"web\",\"includeStyles\":true,\"outputFormat\":\"reactComponent\"}", + "description": "Generate a dark-themed React chat window component with event handler for sending messages." + }, + { + "inputJson": "{\"componentType\":\"messageInput\",\"styles\":{},\"initialState\":{\"text\":\"\"},\"eventHandlers\":{\"onInputChange\":\"handleChange\"},\"platform\":\"mobile\",\"includeStyles\":false,\"outputFormat\":\"vueComponent\"}", + "description": "Create a Vue.js message input component without styles for mobile platform." + }, + { + "inputJson": "{\"componentType\":\"userList\",\"styles\":{\"fontSize\":\"14px\"},\"initialState\":{\"users\":[{\"id\":1,\"name\":\"Alice\"}]},\"eventHandlers\":{},\"platform\":\"web\",\"includeStyles\":true,\"outputFormat\":\"jsonObject\"}", + "description": "Produce a JSON representation of a web user list component with default styling." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Component", + "context": null + } + }, + { + "name": "email-communication.analyzeHeading", + "description": "Analyzes email subject headings to evaluate effectiveness, detect sentiment, and extract key themes. Accepts a list of subject lines, processes them to identify engagement factors, sentiment polarity, and recurring keywords, and returns a structured summary with metrics and insights for improving email campaign headings.", + "category": "email-communication", + "parameters": [ + { + "name": "headings", + "type": "array", + "description": "Array of email subject heading strings to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language of the headings for accurate sentiment and keyword analysis (e.g., 'en' for English).", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeSentiment", + "type": "boolean", + "description": "Whether to analyze sentiment polarity of each heading.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxKeywords", + "type": "number", + "description": "Maximum number of key themes or keywords to extract from the headings.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "An object containing overall statistics such as average sentiment score, frequency of top keywords, and a list with each heading's detailed sentiment and keyword highlights." + }, + "aiAgent": { + "useCase": "Use this tool when evaluating a batch of email subject lines to understand their effectiveness and emotional tone, to optimize for engagement and click-through rates in email marketing campaigns.", + "limitations": "This tool focuses on text analysis of headings only and does not evaluate the full email content, delivery metrics, or recipient reactions outside of sentiment and keyword analysis. It may have limited accuracy on short or ambiguous headings.", + "examples": [ + "Analyze sentiment and key themes for these 10 email headings.", + "Extract the top 5 keywords from a list of subject lines to identify trends.", + "Evaluate whether subject lines are predominantly positive or negative in tone to adjust campaign messaging." + ] + }, + "tags": [ + "email", + "heading", + "analysis", + "sentiment", + "keywords", + "marketing", + "optimization" + ], + "examples": [ + { + "inputJson": "{\"headings\":[\"Limited Time Offer! Save 50% Now\",\"Don't Miss Out on Our New Features\",\"Last Chance: Your Subscription Ends Soon\",\"Welcome to Our Newsletter!\",\"Join Us for an Exclusive Webinar\"],\"language\":\"en\",\"includeSentiment\":true,\"maxKeywords\":5}", + "description": "Analyze sentiment and extract top 5 keywords from a list of 5 marketing email subject headings in English." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Heading", + "context": null + } + }, + { + "name": "email-communication.analyzeReference", + "description": "This tool analyzes the references and citations included in an email body or signature to identify and categorize them. It accepts raw email content as input, processes the text to extract URLs, document titles, or cited works, and returns a structured summary of these references, including their types and relevance.", + "category": "email-communication", + "parameters": [ + { + "name": "emailContent", + "type": "string", + "description": "Raw text content of the email to analyze for references and citations.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeSignature", + "type": "boolean", + "description": "Flag indicating whether to include the email signature in the analysis of references.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxReferences", + "type": "number", + "description": "Maximum number of references to extract and analyze from the email content.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "Structured object listing extracted references with metadata like type (URL, document, citation), title, source domain if URL, and confidence score." + }, + "aiAgent": { + "useCase": "Use this tool when you need to extract and interpret references mentioned in an email to assist in understanding context, verify sources, or automate follow-up actions such as information retrieval or compliance checks. It is especially useful for managing emails in professional settings where citations or reference links are common.", + "limitations": "This tool does not verify the accuracy or validity of the references; it only extracts and categorizes them. It is limited to text analysis and cannot access locked or external content behind references.", + "examples": [ + "Analyze references mentioned in a contract negotiation email.", + "Extract and summarize URLs and document citations from an email chain about project specifications.", + "Check for valid reference links in an email before auto-forwarding it to legal review." + ] + }, + "tags": [ + "email", + "analysis", + "references", + "content-extraction", + "automation" + ], + "examples": [ + { + "inputJson": "{\"emailContent\":\"Hi team, please review the report at https://example.com/report.pdf and check the data cited from Smith et al. (2020) in section 3. Also, my signature includes the link https://company.com/about.\",\"includeSignature\":true,\"maxReferences\":5}", + "description": "Analyze an email containing URLs and a bibliographic citation, including signature links." + }, + { + "inputJson": "{\"emailContent\":\"Dear all, as per the guidelines found in the attached document Guidelines_v2.docx and previous emails referencing ISO 9001 standards, please comply accordingly.\",\"includeSignature\":false,\"maxReferences\":3}", + "description": "Extract references from an email mentioning attached documents and standards without including signatures." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Reference", + "context": null + } + }, + { + "name": "email-communication.analyzeReply", + "description": "Analyzes an email reply message to identify its tone, intent, key topics, and response adequacy. Accepts raw email reply text and optional metadata, processes natural language understanding and sentiment analysis, and outputs structured insights and suggestions to assist in crafting follow-up communications.", + "category": "email-communication", + "parameters": [ + { + "name": "replyText", + "type": "string", + "description": "The full text content of the email reply message to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "originalEmailText", + "type": "string", + "description": "Optional original email text that this reply is responding to, used to understand context and relevance.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the email reply for accurate linguistic processing (e.g., 'en' for English).", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Whether to perform sentiment and tone analysis on the reply text.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxTopics", + "type": "number", + "description": "Maximum number of key topics to extract from the reply for summary purposes.", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "An object containing the sentiment score and tone, identified intent categories, extracted key topics, relevant action suggestions, and an adequacy rating indicating how well the reply addresses the original message." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to evaluate the content and tone of an incoming email reply to decide how to respond or escalate. The analysis helps in understanding customer satisfaction, urgency, and appropriate next steps in email communications.", + "limitations": "Does not generate replies or detailed response content. May have reduced accuracy with very short or highly informal replies, or unsupported languages.", + "examples": [ + "Analyze tone and intent of this customer reply to determine urgency.", + "Extract key topics from this email response and suggest if a follow-up is needed.", + "Evaluate how adequately this reply addresses the original email's questions." + ] + }, + "tags": [ + "email", + "analysis", + "reply", + "sentiment", + "tone", + "intent", + "communication" + ], + "examples": [ + { + "inputJson": "{\"replyText\":\"Thank you for your prompt response. I appreciate the detailed explanation. I will try the solution and get back to you if there are issues.\",\"originalEmailText\":\"Please try this solution to fix your issue and let me know if it works.\",\"language\":\"en\",\"includeSentimentAnalysis\":true,\"maxTopics\":3}", + "description": "Analyzing a polite customer reply with appreciation and willingness to follow up." + }, + { + "inputJson": "{\"replyText\":\"This is not working at all! I am very disappointed and need a refund.\",\"language\":\"en\",\"includeSentimentAnalysis\":true,\"maxTopics\":4}", + "description": "Analyzing a dissatisfied customer reply expressing frustration and refund request with no original email supplied." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Reply", + "context": null + } + }, + { + "name": "email-communication.analyzeDeal", + "description": "Analyzes email communication data related to a specific business deal to assess engagement levels, sentiment, and key discussion points. Accepts deal identifiers and email thread metadata as input, processes sentiment analysis, frequencies, and timelines, and outputs a detailed report highlighting communication effectiveness and potential risks.", + "category": "email-communication", + "parameters": [ + { + "name": "dealId", + "type": "string", + "description": "Unique identifier for the business deal to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "emailThreadIds", + "type": "array", + "description": "List of IDs of email threads associated with the deal.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date (ISO 8601) to filter emails within a certain period. Optional.", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date (ISO 8601) to filter emails within a certain period. Optional.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Whether to perform sentiment analysis on email content. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "Language code to use for sentiment and keyword analysis (e.g., 'en'). Defaults to 'en'.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing metrics such as total emails, frequency over time, sentiment summary, key terms, and risk flags related to the deal communication." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to evaluate the status and quality of email communications around a particular business deal, identifying engagement trends, sentiment shifts, or warning signs that may impact deal success.", + "limitations": "Does not analyze attachments or phone call transcripts; accuracy depends on language support and quality of email content; cannot infer business outcomes beyond communication metrics.", + "examples": [ + "Analyze the email exchanges for deal ID 12345 from last quarter and summarize sentiment and engagement.", + "Provide a communication analysis report for all threads related to deal ABCD, including frequency and key topics.", + "Assess if the recent email activity on deal XYZ shows any risks or negative sentiment trends." + ] + }, + "tags": [ + "email", + "deal-analysis", + "sentiment", + "business", + "communication", + "engagement", + "email-frequency" + ], + "examples": [ + { + "inputJson": "{\"dealId\":\"deal_001\",\"emailThreadIds\":[\"thread123\",\"thread124\"],\"startDate\":\"2024-01-01\",\"endDate\":\"2024-03-31\",\"includeSentimentAnalysis\":true}", + "description": "Analyze communications for deal_001 during Q1 2024 including sentiment." + }, + { + "inputJson": "{\"dealId\":\"deal_xyz\",\"emailThreadIds\":[\"t001\",\"t002\",\"t003\"],\"includeSentimentAnalysis\":false}", + "description": "Analyze email frequency and key terms for deal_xyz without sentiment analysis." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Deal", + "context": null + } + }, + { + "name": "email-communication.analyzeHTML", + "description": "Analyzes raw HTML content of an email template to identify email-specific features such as inline styles, external links, image alt texts, and accessibility compliance. It accepts HTML string input, parses and examines structural and style elements, then outputs a detailed report highlighting potential rendering issues, link validity, and best practice adherence for email clients.", + "category": "email-communication", + "parameters": [ + { + "name": "htmlContent", + "type": "string", + "description": "Raw HTML content of the email to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "checkLinks", + "type": "boolean", + "description": "Whether to validate external URLs within the HTML for reachability and redirects.", + "required": false, + "defaultValue": "true" + }, + { + "name": "checkAccessibility", + "type": "boolean", + "description": "Whether to assess the HTML for basic accessibility features like alt text and semantic tags.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxImageSizeKB", + "type": "number", + "description": "Threshold in kilobytes above which images are flagged for being too large, affecting email load times.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "A structured report object including counts of inline styles, number of images with and without alt text, list of external links with validation status, flagged potential issues for rendering, and accessibility warnings." + }, + "aiAgent": { + "useCase": "Use this tool when preparing or optimizing email HTML content to ensure compatibility across various email clients, improve accessibility, and identify potential errors or best practice violations before sending bulk or transactional emails. Ideal for validating templates or user-submitted HTML before deploying in campaigns.", + "limitations": "Does not execute JavaScript or interactive content; cannot fully emulate all email client rendering quirks; link validation depends on live URL accessibility and may be blocked by some servers.", + "examples": [ + "Analyze this email HTML snippet for missing alt attributes and broken links.", + "Check if the provided newsletter HTML uses best inline styling practices for emails.", + "Validate the accessibility and external link health of this promotional email HTML." + ] + }, + "tags": [ + "email", + "HTML", + "analysis", + "accessibility", + "link-validation", + "email-template", + "email-marketing" + ], + "examples": [ + { + "inputJson": "{\"htmlContent\":\"Visit\",\"checkLinks\":true,\"checkAccessibility\":true,\"maxImageSizeKB\":100}", + "description": "Basic email HTML with one image lacking alt text and a link to check for reachability." + }, + { + "inputJson": "{\"htmlContent\":\"

Welcome!

BannerCheck us out\",\"checkLinks\":true,\"checkAccessibility\":true,\"maxImageSizeKB\":200}", + "description": "Email HTML using inline styles, one properly tagged image, and an external link which is likely unreachable." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "HTML", + "context": null + } + }, + { + "name": "email-communication.analyzeXML", + "description": "This tool accepts email-related XML data (e.g., email campaign configurations, email templates, or logs) and analyzes its structure and content to extract key metrics such as number of messages, presence of specific tags, or structural anomalies. It outputs a structured report summarizing findings, helping users validate and understand their email XML data.", + "category": "email-communication", + "parameters": [ + { + "name": "xmlData", + "type": "string", + "description": "The raw email XML data string to be analyzed, containing email campaign or template information.", + "required": true, + "defaultValue": "" + }, + { + "name": "analysisDepth", + "type": "number", + "description": "Level of detail for the analysis report. 1 for basic schema check, higher numbers for deeper content inspection.", + "required": false, + "defaultValue": "1" + }, + { + "name": "validateSchema", + "type": "boolean", + "description": "Whether to validate the XML against a standard email schema if available (true enables validation).", + "required": false, + "defaultValue": "false" + }, + { + "name": "extractTags", + "type": "array", + "description": "List of specific XML tag names to extract and report on if present in the XML data.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing analysis results including counts of messages, extracted tag data, any schema validation errors, and summary insights about the email XML." + }, + "aiAgent": { + "useCase": "Use this tool when you have email campaign or template data represented in XML format and need to verify its structure, extract key information, or check for potential errors and schema compliance before sending or processing emails. It helps automate validation and insights extraction from complex XML email data.", + "limitations": "This tool does not send emails or modify XML data. It performs analysis only and depends on well-formed XML input; it cannot fix errors, only report them.", + "examples": [ + "Analyze an XML email template to verify presence and count of all and tags.", + "Validate campaign XMLs against known email schemas to ensure compliance before upload.", + "Extract and summarize all tags from bulk email campaign XML data." + ] + }, + "tags": [ + "email", + "XML", + "analysis", + "validation", + "email-campaign", + "automation" + ], + "examples": [ + { + "inputJson": "{\"xmlData\":\"Sale...Update...\",\"analysisDepth\":2,\"validateSchema\":false,\"extractTags\":[\"subject\",\"body\"]}", + "description": "Analyze an email campaign XML with two emails, extracting subject and body tag info." + }, + { + "inputJson": "{\"xmlData\":\"user@example.comadmin@example.com\",\"analysisDepth\":1,\"validateSchema\":true,\"extractTags\":[\"recipient\"]}", + "description": "Validate XML email list against schema and extract recipients." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "XML", + "context": null + } + }, + { + "name": "email-communication.downloadCSV", + "description": "This tool downloads email campaign data in CSV format. It accepts parameters to specify the campaign id, date range, and fields to include. It fetches email performance metrics such as opens, clicks, bounces, and subscriber info, then outputs a CSV file containing the requested data for offline analysis or reporting.", + "category": "email-communication", + "parameters": [ + { + "name": "campaignId", + "type": "string", + "description": "Unique identifier for the email campaign to download data from.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date (YYYY-MM-DD) for filtering data. Inclusive. Optional, if not set downloads all data.", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date (YYYY-MM-DD) for filtering data. Inclusive. Optional, if not set downloads all data.", + "required": false, + "defaultValue": "" + }, + { + "name": "fields", + "type": "array", + "description": "Array of fields to include in the CSV output, e.g. ['email','openRate','clicks']. Defaults to key metrics if empty.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include CSV header row with field names. Defaults to true.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Object containing CSV content as a string and metadata such as filename." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically retrieve detailed email campaign metrics and subscriber data in CSV format for further processing, reporting, or archiving. It is ideal for agents automating campaign analysis or generating downloadable reports for users.", + "limitations": "This tool does not send emails, nor does it support exporting other formats such as XLSX or JSON. It requires valid campaign identifiers and does not support data outside stored campaign periods.", + "examples": [ + "Download CSV for campaign 'abc123' including only 'email', 'openRate', and 'clicks' fields for last month.", + "Fetch all data for campaign 'xyz789' without date filtering, including all default metrics.", + "Download CSV without headers for campaign 'campaign2024' filtered between '2024-01-01' and '2024-01-31'." + ] + }, + "tags": [ + "email", + "CSV", + "download", + "campaign", + "reporting", + "metrics" + ], + "examples": [ + { + "inputJson": "{\"campaignId\":\"abc123\",\"startDate\":\"2024-04-01\",\"endDate\":\"2024-04-30\",\"fields\":[\"email\",\"openRate\",\"clicks\"],\"includeHeaders\":true}", + "description": "Download selected fields for a specific campaign during April 2024 with headers included." + }, + { + "inputJson": "{\"campaignId\":\"xyz789\",\"fields\":[],\"includeHeaders\":true}", + "description": "Download complete data with default fields for a campaign with no date filtering." + }, + { + "inputJson": "{\"campaignId\":\"campaign2024\",\"startDate\":\"2024-01-01\",\"endDate\":\"2024-01-31\",\"fields\":[\"email\",\"bounces\"],\"includeHeaders\":false}", + "description": "Download specific fields without CSV headers for January 2024 campaign data." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "CSV", + "context": null + } + }, + { + "name": "email-communication.uploadCSV", + "description": "This tool uploads a CSV file containing recipient emails and optional personalization fields for email campaigns. It parses the CSV, validates email formats, and stores the contacts for subsequent email automation tasks. It outputs a summary of the upload including count of valid, invalid, and duplicate records.", + "category": "email-communication", + "parameters": [ + { + "name": "csvContent", + "type": "string", + "description": "The raw CSV text content to be uploaded containing recipient data", + "required": true, + "defaultValue": "" + }, + { + "name": "emailColumn", + "type": "string", + "description": "The header name in the CSV that contains the email addresses", + "required": true, + "defaultValue": "" + }, + { + "name": "hasHeader", + "type": "boolean", + "description": "Indicates if the CSV includes a header row", + "required": false, + "defaultValue": "true" + }, + { + "name": "customFieldMappings", + "type": "object", + "description": "Optional mapping of other CSV columns to personalization fields (key: field name, value: CSV column)", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object summarizing the result of the upload, including counts of total, valid, invalid and duplicate entries, and details for errors if any" + }, + "aiAgent": { + "useCase": "Use this tool when ingesting recipient lists for email marketing or communication campaigns. It accepts CSV data to quickly and reliably upload bulk contacts, preparing them for personalized email automation. The tool validates emails and highlights any faulty or duplicate entries before campaign execution.", + "limitations": "This tool does not send emails or handle email campaign scheduling. It assumes CSV is UTF-8 encoded and does not support other file formats. It does not perform deep validation against external email services or suppression lists.", + "examples": [ + "Upload a CSV string containing emails and names for a newsletter mailing list.", + "Ingest a CSV file with custom columns mapped to personalization tokens for dynamic email content.", + "Validate and store an uploaded CSV file of contacts for a drip email campaign." + ] + }, + "tags": [ + "email", + "csv", + "upload", + "bulk", + "recipients", + "contacts", + "marketing" + ], + "examples": [ + { + "inputJson": "{\"csvContent\":\"email,name\\njohn.doe@example.com,John Doe\\njane.smith@example.com,Jane Smith\",\"emailColumn\":\"email\",\"hasHeader\":true,\"customFieldMappings\":{\"name\":\"name\"}}", + "description": "Uploading a CSV with emails and names with header row for a marketing list" + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "CSV", + "context": null + } + }, + { + "name": "email-communication.renderText", + "description": "This tool accepts plain text with optional placeholders and styling instructions to generate email-ready HTML content. It processes the input by replacing placeholders with provided values and applying simple text formatting. The output is a string of HTML formatted text suitable for embedding in email bodies, ensuring consistent rendering across email clients.", + "category": "email-communication", + "parameters": [ + { + "name": "plainText", + "type": "string", + "description": "The raw text content to be rendered, which may include placeholders for dynamic values.", + "required": true, + "defaultValue": "" + }, + { + "name": "placeholders", + "type": "object", + "description": "A key-value map where keys correspond to placeholders in the text, and values are their replacements.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "styleOptions", + "type": "object", + "description": "An object specifying simple styling options such as font family, size, color, and alignment to apply to the rendered text.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "maxLineLength", + "type": "number", + "description": "Maximum number of characters per line; longer lines will be wrapped accordingly for better email client compatibility.", + "required": false, + "defaultValue": "72" + }, + { + "name": "escapeHtml", + "type": "boolean", + "description": "When true, HTML special characters in plainText are escaped to avoid unintended formatting.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated HTML string ready for email embedding under the key 'htmlContent'." + }, + "aiAgent": { + "useCase": "AI agents should use this tool when they need to convert plain or lightly templated text into a well-formatted HTML snippet for inclusion in emails. This is especially useful when sending automated emails that require dynamic content insertion and consistent styling across multiple recipients or platforms.", + "limitations": "This tool does not support complex HTML templates or CSS. It handles basic styling and placeholder substitution only. It cannot render images, attachments, or advanced layout features.", + "examples": [ + "Render a welcome email text with user name placeholders replaced and styled with a specific font and color.", + "Convert a plain text newsletter with line wrapping into HTML with minimal formatting for compatible email clients.", + "Escape HTML characters in user-generated content and insert dynamic data before rendering to HTML." + ] + }, + "tags": [ + "email", + "rendering", + "html", + "templating", + "automation", + "text formatting" + ], + "examples": [ + { + "inputJson": "{\"plainText\":\"Hello {{userName}},\\nWelcome to our service!\", \"placeholders\":{\"userName\":\"Alice\"}, \"styleOptions\":{\"fontFamily\":\"Arial\",\"color\":\"#333333\"}, \"maxLineLength\":80, \"escapeHtml\":true}", + "description": "Render greeting text by replacing {{userName}} with 'Alice', applying Arial font and dark gray text color, wrapping lines at 80 characters." + }, + { + "inputJson": "{\"plainText\":\"Thank you for your order #{{orderNumber}}.\", \"placeholders\":{\"orderNumber\":\"12345\"}, \"styleOptions\":{}, \"maxLineLength\":72, \"escapeHtml\":true}", + "description": "Create a simple order confirmation snippet replacing {{orderNumber}} with actual order number, default styling, and standard max line length." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Text", + "context": null + } + }, + { + "name": "email-communication.formatCSV", + "description": "Formats raw CSV data containing email communication information to a structured and standardized CSV string. The tool accepts CSV input as a string, allows optional selection of columns to include, and supports specifying delimiter, text quoting, and header options. It outputs a formatted CSV string ready for importing or sending in email communication workflows.", + "category": "email-communication", + "parameters": [ + { + "name": "csvData", + "type": "string", + "description": "Raw CSV data input as a string, which may have inconsistent formatting or extra columns.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeColumns", + "type": "array", + "description": "Optional list of column names to include in the output. If empty or omitted, all columns are included.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "delimiter", + "type": "string", + "description": "Delimiter character to use in the output CSV, e.g., comma or semicolon.", + "required": false, + "defaultValue": "," + }, + { + "name": "quoteCharacter", + "type": "string", + "description": "Character to enclose text fields, typically double quotes.", + "required": false, + "defaultValue": "\"" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include the header row in the output CSV.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted CSV string under the 'formattedCSV' property." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to clean up, standardize, or selectively format CSV data related to email contacts, messages, or campaigns before sending or further processing. It is especially useful for preparing CSVs with varied inputs into a consistent format for email communication tools or APIs.", + "limitations": "This tool does not validate email formats or correct data errors beyond formatting. It does not parse or analyze email content semantics or detect spam. It only formats CSV strings according to parameters provided.", + "examples": [ + "Format raw CSV export of email contacts to include only name and email fields with proper quoting.", + "Standardize CSV data delimiters and ensure headers for importing into email campaign software.", + "Generate formatted CSV string from raw input for sending personalized email batches." + ] + }, + "tags": [ + "email", + "CSV", + "formatting", + "data-preparation", + "communication", + "automation" + ], + "examples": [ + { + "inputJson": "{\"csvData\":\"name,email,phone\\nAlice,a@example.com,123-456-7890\\nBob,b@example.com,098-765-4321\",\"includeColumns\":[\"name\",\"email\"],\"delimiter\":\",\",\"quoteCharacter\":\"\\\"\",\"includeHeaders\":true}", + "description": "Format CSV to include only name and email columns with default delimiter and quoting." + }, + { + "inputJson": "{\"csvData\":\"\"name\";\"email\";\"note\"\\n\"John Doe\";\"john@example.com\";\"VIP\"\\n\"Jane Smith\";\"jane@example.com\";\"\"\",\"includeColumns\":[],\"delimiter\":\";\",\"quoteCharacter\":\"\\\"\",\"includeHeaders\":true}", + "description": "Preserve all columns and format CSV using semicolon delimiter and double-quote character." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "CSV", + "context": null + } + }, + { + "name": "email-communication.formatParagraph", + "description": "Formats a given email paragraph text according to specified style options such as line length, text alignment, indentation, and bullet styling. Accepts raw paragraph text as input and returns the formatted paragraph string ready to be included in email body content.", + "category": "email-communication", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The raw paragraph text content to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "maxLineLength", + "type": "number", + "description": "Maximum number of characters per line before wrapping occurs.", + "required": false, + "defaultValue": "72" + }, + { + "name": "alignment", + "type": "string", + "description": "Text alignment style: 'left', 'right', 'center', or 'justify'.", + "required": false, + "defaultValue": "left" + }, + { + "name": "indentationSpaces", + "type": "number", + "description": "Number of spaces to indent the first line of the paragraph.", + "required": false, + "defaultValue": "4" + }, + { + "name": "bulletStyle", + "type": "string", + "description": "Bullet style to prepend to the paragraph, such as '-', '*', or empty for no bullet.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "string", + "description": "The formatted paragraph string, formatted according to the specified parameters, ready for insertion into an email message body." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent is generating or editing email content and needs to produce neatly formatted paragraphs that comply with visual style preferences, such as wrapping lines at a certain length and consistent indentation or bulleting. This is particularly useful when preparing automated email replies, newsletters, or templated content where appearance and readability are important.", + "limitations": "This tool formats plain text paragraphs only; it does not handle HTML or rich-text formatting. It cannot insert images, hyperlinks, or advanced styling beyond basic indentation, line breaks, alignment, and simple bullet marks.", + "examples": [ + "Format a raw block of text into a left-aligned paragraph wrapped at 72 characters with 4 spaces indentation.", + "Apply bullet points using '-' and justify the paragraph text to resemble a list item in an email.", + "Center align a short paragraph without indentation or bullet for an email signature note." + ] + }, + "tags": [ + "email", + "formatting", + "paragraph", + "text-processing", + "automation", + "communication" + ], + "examples": [ + { + "inputJson": "{\"text\":\"This is a sample paragraph that needs to be formatted properly for inclusion in an email. It should wrap lines neatly and indent the first line.\",\"maxLineLength\":50,\"alignment\":\"left\",\"indentationSpaces\":4,\"bulletStyle\":\"\"}", + "description": "Formats a paragraph with left alignment, line wrap at 50 characters, and 4-space indentation without bullet." + }, + { + "inputJson": "{\"text\":\"Please find the tasks listed below:\",\"maxLineLength\":60,\"alignment\":\"left\",\"indentationSpaces\":0,\"bulletStyle\":\"-\"}", + "description": "Formats a single-line paragraph with a '-' bullet and no indentation." + }, + { + "inputJson": "{\"text\":\"Thank you for your time and consideration.\",\"maxLineLength\":70,\"alignment\":\"center\",\"indentationSpaces\":0,\"bulletStyle\":\"\"}", + "description": "Centers a closing sentence without indentation or bullets." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Paragraph", + "context": null + } + }, + { + "name": "email-communication.draftContract", + "description": "Generates a professional contract draft based on provided parties' information, terms, and contract type. Accepts party details, key contract clauses, and optional custom terms, then creates a structured contract text output suitable for email sending or further editing.", + "category": "email-communication", + "parameters": [ + { + "name": "partyAName", + "type": "string", + "description": "Name of the first party in the contract.", + "required": true, + "defaultValue": "" + }, + { + "name": "partyBName", + "type": "string", + "description": "Name of the second party in the contract.", + "required": true, + "defaultValue": "" + }, + { + "name": "contractType", + "type": "string", + "description": "Type of contract to draft (e.g., NDA, Service Agreement, Sale Contract).", + "required": true, + "defaultValue": "" + }, + { + "name": "effectiveDate", + "type": "string", + "description": "Date when the contract becomes effective (ISO 8601 format).", + "required": false, + "defaultValue": "" + }, + { + "name": "terms", + "type": "array", + "description": "Array of objects representing key contract terms and conditions with title and description.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "customClauses", + "type": "string", + "description": "Additional custom clauses or notes to include in the contract body.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Generated contract text including header, parties, definitions, terms, clauses, and signature placeholders as a formatted string." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to automatically generate a contract draft based on input parameters describing the parties, contract type, and essential terms. Ideal for automating contract preparation workflows in email communications or legal document generation processes.", + "limitations": "This tool does not perform legal validation or ensure compliance with jurisdictional laws. It outputs a general draft requiring professional legal review before use.", + "examples": [ + "Draft a service agreement contract between 'Acme Corp' and 'Beta LLC' effective from '2024-07-01' with terms about service scope and payment.", + "Generate an NDA contract between 'Alice' and 'Bob' with standard confidentiality terms.", + "Create a sale contract draft for two parties with specified custom terms about delivery and liability." + ] + }, + "tags": [ + "email", + "contract", + "drafting", + "automation", + "document-generation", + "legal" + ], + "examples": [ + { + "inputJson": "{\"partyAName\":\"Acme Corp\",\"partyBName\":\"Beta LLC\",\"contractType\":\"Service Agreement\",\"effectiveDate\":\"2024-07-01\",\"terms\":[{\"title\":\"Scope of Service\",\"description\":\"Acme Corp will provide software development services.\"},{\"title\":\"Payment Terms\",\"description\":\"Beta LLC will pay $5000 monthly.\"}],\"customClauses\":\"Confidentiality must be maintained by both parties.\"}", + "description": "Drafts a service agreement contract between two companies with terms and a confidentiality clause." + }, + { + "inputJson": "{\"partyAName\":\"Alice\",\"partyBName\":\"Bob\",\"contractType\":\"NDA\",\"effectiveDate\":\"2024-06-15\",\"terms\":[{\"title\":\"Confidentiality\",\"description\":\"Both parties agree not to disclose confidential information.\"}],\"customClauses\":\"Duration of agreement is 2 years.\"}", + "description": "Creates a non-disclosure agreement draft between two individuals with a specified duration and confidentiality clause." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Contract", + "context": null + } + }, + { + "name": "email-communication.buildInstance", + "description": "This tool provisions and configures an email sending infrastructure instance based on specified parameters. It accepts input such as instance type, region, email service provider, and optional security settings, then builds a ready-to-use email communication instance, outputting connection details and configuration status.", + "category": "email-communication", + "parameters": [ + { + "name": "instanceType", + "type": "string", + "description": "The type of email infrastructure instance to create (e.g., 'SMTP', 'API', 'Webhook')", + "required": true, + "defaultValue": "" + }, + { + "name": "region", + "type": "string", + "description": "Geographic region where the instance will be deployed (e.g., 'us-east-1')", + "required": true, + "defaultValue": "" + }, + { + "name": "provider", + "type": "string", + "description": "Email service provider to use for this instance (e.g., 'SendGrid', 'AmazonSES')", + "required": true, + "defaultValue": "" + }, + { + "name": "securitySettings", + "type": "object", + "description": "Optional security configurations such as TLS enforcement, authentication methods, and encryption", + "required": false, + "defaultValue": "" + }, + { + "name": "instanceName", + "type": "string", + "description": "Custom name for the email instance for easier identification", + "required": false, + "defaultValue": "" + }, + { + "name": "enableLogging", + "type": "boolean", + "description": "Flag to enable or disable detailed logging of email sending activities", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the instanceId, connectionDetails (like host, port, API keys), deploymentStatus, and any error messages if applicable." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically provision a new email sending infrastructure tailored to specific providers and geographic regions, for automated email communication workflows or marketing campaigns.", + "limitations": "Does not handle actual email content creation or email sending; it only provisions and configures the infrastructure instance.", + "examples": [ + "Create an SMTP instance with SendGrid in us-east-1 region with TLS enabled.", + "Provision an API-based email instance named 'MarketingMailer' using Amazon SES in eu-west-2 region.", + "Build an email communication instance with detailed logging enabled for debugging purposes." + ] + }, + "tags": [ + "email", + "infrastructure", + "automation", + "provisioning", + "email-sending", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"instanceType\":\"SMTP\",\"region\":\"us-east-1\",\"provider\":\"SendGrid\",\"securitySettings\":{\"tls\":true},\"instanceName\":\"PrimarySMTP\",\"enableLogging\":true}", + "description": "Provision an SMTP instance on SendGrid with TLS enabled in US East region, named PrimarySMTP, with logging enabled." + }, + { + "inputJson": "{\"instanceType\":\"API\",\"region\":\"eu-west-2\",\"provider\":\"AmazonSES\"}", + "description": "Create an API-based email instance in the EU West region using Amazon SES without additional security settings." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Instance", + "context": null + } + }, + { + "name": "email-communication.composeParagraph", + "description": "Generates a coherent, professional paragraph for email communication based on a specified topic, tone, and key points. Takes inputs as strings and arrays, processes them to create a well-structured paragraph suitable for various email contexts such as business inquiries, follow-ups, or introductions.", + "category": "email-communication", + "parameters": [ + { + "name": "topic", + "type": "string", + "description": "The main subject or theme to be addressed in the paragraph.", + "required": true, + "defaultValue": "" + }, + { + "name": "tone", + "type": "string", + "description": "The desired tone of the paragraph, e.g., formal, friendly, persuasive, or neutral.", + "required": false, + "defaultValue": "formal" + }, + { + "name": "keyPoints", + "type": "array", + "description": "An array of strings representing important points or ideas that should be included in the paragraph.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length of the paragraph in number of words to control conciseness.", + "required": false, + "defaultValue": "150" + }, + { + "name": "includeCallToAction", + "type": "boolean", + "description": "Whether to add a call-to-action sentence at the end of the paragraph.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the composed paragraph text under the 'paragraph' key." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to generate a clear and contextually appropriate email paragraph based on specific input criteria like topic and tone. Ideal for automating parts of email drafting to ensure natural yet professional language without manual writing.", + "limitations": "Cannot guarantee perfect context comprehension or highly creative writing beyond given input parameters; does not handle full email composition or sign-offs.", + "examples": [ + "Compose a formal paragraph about partnership benefits including key points on trust and reliability.", + "Generate a friendly introduction paragraph highlighting a recent meeting and next steps.", + "Write a concise persuasive paragraph urging timely action on a proposal." + ] + }, + "tags": [ + "email", + "compose", + "paragraph", + "automation", + "professional writing", + "communication" + ], + "examples": [ + { + "inputJson": "{\"topic\":\"collaboration opportunities\",\"tone\":\"formal\",\"keyPoints\":[\"mutual benefits\",\"enhanced productivity\",\"long-term partnership\"],\"maxLength\":120,\"includeCallToAction\":true}", + "description": "Compose a formal paragraph discussing collaboration opportunities emphasizing mutual benefits and including a call to action." + }, + { + "inputJson": "{\"topic\":\"product feedback request\",\"tone\":\"friendly\",\"keyPoints\":[\"customer satisfaction importance\",\"invitation to share honest opinions\"],\"maxLength\":100,\"includeCallToAction\":true}", + "description": "Generate a friendly paragraph encouraging customer feedback to improve satisfaction with an invitation to respond." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Paragraph", + "context": null + } + }, + { + "name": "email-communication.buildVariable", + "description": "Constructs a dynamic email variable from provided parameters to be used in templated email campaigns. Accepts variable name, data type, default value, and optional transformation rules. Outputs a structured variable object ready for injection into email templates and automation workflows.", + "category": "email-communication", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The identifier name for the email variable to be used in templates.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataType", + "type": "string", + "description": "The data type of the variable such as string, number, date, or boolean.", + "required": true, + "defaultValue": "string" + }, + { + "name": "defaultValue", + "type": "string", + "description": "Optional fallback value used when no user data is provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "transformationRules", + "type": "object", + "description": "Optional set of rules to modify or format the variable value (e.g., uppercase, date formatting).", + "required": false, + "defaultValue": "" + }, + { + "name": "isRequired", + "type": "boolean", + "description": "Indicates whether the variable must always have a value before sending the email.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object representing the variable with all its defined properties, ready to be integrated into email templates and automation logic." + }, + "aiAgent": { + "useCase": "Use this tool when creating personalized email campaigns that require dynamic, customizable variables based on user data or logic. It helps define variables clearly, including fallback values and transformations ensuring consistent email content generation.", + "limitations": "This tool does not fetch or validate actual user data; it only builds the variable definition structure. It also does not send emails or evaluate complex conditional logic beyond simple transformations.", + "examples": [ + "Create a variable for user first name as a string with fallback 'Customer'.", + "Define a date-type variable for subscription end date with formatting to 'MM/dd/yyyy'.", + "Build a boolean variable indicating if user is premium, default to false, required in email." + ] + }, + "tags": [ + "email", + "variable", + "template", + "automation", + "personalization", + "dynamic", + "build" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"firstName\",\"dataType\":\"string\",\"defaultValue\":\"Customer\",\"transformationRules\":{\"capitalize\":true},\"isRequired\":true}", + "description": "Builds a required string variable named 'firstName' with default 'Customer' and a rule to capitalize the value." + }, + { + "inputJson": "{\"variableName\":\"subscriptionEnd\",\"dataType\":\"date\",\"defaultValue\":\"\",\"transformationRules\":{\"format\":\"MM/dd/yyyy\"},\"isRequired\":false}", + "description": "Constructs an optional date variable for subscription end date with date formatting rule." + }, + { + "inputJson": "{\"variableName\":\"isPremiumUser\",\"dataType\":\"boolean\",\"defaultValue\":\"false\",\"isRequired\":true}", + "description": "Creates a required boolean variable indicating premium user status, defaulting to false." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Variable", + "context": null + } + }, + { + "name": "email-communication.buildComponent", + "description": "Creates a reusable email template component by accepting inputs like component name, HTML content, inline CSS styles, and optional dynamic placeholders. Processes these inputs to generate a structured JSON representation of the component for use in email builders or automation workflows.", + "category": "email-communication", + "parameters": [ + { + "name": "componentName", + "type": "string", + "description": "The name identifier for the email component to be created", + "required": true, + "defaultValue": "" + }, + { + "name": "htmlContent", + "type": "string", + "description": "Raw HTML code that defines the structure of the email component", + "required": true, + "defaultValue": "" + }, + { + "name": "inlineStyles", + "type": "string", + "description": "CSS styles to be applied inline within the component for consistent rendering", + "required": false, + "defaultValue": "" + }, + { + "name": "placeholders", + "type": "array", + "description": "List of dynamic placeholder names that will be replaced with actual data during email generation", + "required": false, + "defaultValue": "[]" + }, + { + "name": "description", + "type": "string", + "description": "Optional brief description about the purpose or usage of the component", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured JSON object representing the email component, including its name, HTML, styles, placeholders, and description suitable for integration into email systems." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically create or update email template components for modular email building or automation. It helps generate standardized, reusable components with dynamic content placeholders that can be used in email campaigns or transactional email systems.", + "limitations": "This tool does not validate HTML content for correctness or email client compatibility; it also does not send emails or render previews.", + "examples": [ + "Create an email header component with logo and navigation links.", + "Build a reusable footer component with unsubscribe link placeholder.", + "Generate a promotional banner component with dynamic discount code placeholder." + ] + }, + "tags": [ + "email", + "component", + "template", + "html", + "css", + "automation", + "dynamic-content" + ], + "examples": [ + { + "inputJson": "{\"componentName\":\"Header\",\"htmlContent\":\"
Welcome to our newsletter!
\",\"inlineStyles\":\"table {width:100%;} td {padding:10px;}\",\"placeholders\":[],\"description\":\"Basic header with logo and welcome text.\"}", + "description": "Create a header component with logo and text." + }, + { + "inputJson": "{\"componentName\":\"Footer\",\"htmlContent\":\"\",\"inlineStyles\":\"footer {font-size:12px;color:#888;}\",\"placeholders\":[\"unsubscribe_link\"],\"description\":\"Footer with unsubscribe placeholder.\"}", + "description": "Create a footer component including an unsubscribe link placeholder." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Component", + "context": null + } + }, + { + "name": "email-communication.generateSession", + "description": "Generates an email communication session report summarizing key analytics such as total emails sent, open rates, click rates, and recipient engagement within a specified timeframe. Accepts parameters defining the date range, email campaign identifier, and optional segmentation criteria. Outputs a structured analytics summary representing the performance and engagement metrics of the email session.", + "category": "email-communication", + "parameters": [ + { + "name": "campaignId", + "type": "string", + "description": "Unique identifier of the email campaign to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date of the session period in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date of the session period in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "segmentCriteria", + "type": "object", + "description": "Optional object defining segmentation filters like recipient demographics or engagement level.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeDetailedEvents", + "type": "boolean", + "description": "Flag whether to include detailed email event logs such as individual opens and clicks.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing summary analytics of the email session including total sent, opened, clicks, bounce rate, and detailed engagement statistics if requested." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create an overview report of email campaign performance or recipient engagement for a defined session period. It is useful for generating summary analytics for decision making, reporting to stakeholders, or triggering follow-up automation based on engagement metrics.", + "limitations": "This tool does not send emails or adjust campaign settings. It only summarizes historical data and cannot predict future campaign performance or directly modify email content.", + "examples": [ + "Generate a session report for campaign 'ABC123' from 2024-01-01 to 2024-01-31.", + "Provide email engagement summary for campaign 'XYZ789' segmented by recipients in Europe between 2024-03-01 and 2024-03-15.", + "Create a detailed event session report for campaign 'SpringLaunch' for the first quarter of 2024." + ] + }, + "tags": [ + "email", + "analytics", + "session", + "campaign", + "reporting", + "engagement", + "communication" + ], + "examples": [ + { + "inputJson": "{\"campaignId\":\"camp2024spring\",\"startDate\":\"2024-03-01\",\"endDate\":\"2024-03-31\",\"segmentCriteria\":{\"region\":\"North America\"},\"includeDetailedEvents\":false}", + "description": "Generate a monthly performance summary for the Spring 2024 campaign focused on North American recipients without detailed events." + }, + { + "inputJson": "{\"campaignId\":\"launchpromo2024\",\"startDate\":\"2024-04-01\",\"endDate\":\"2024-04-15\",\"segmentCriteria\":{},\"includeDetailedEvents\":true}", + "description": "Create a detailed session report including open and click events for promotional campaign in early April." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Session", + "context": null + } + }, + { + "name": "email-communication.generateTrend", + "description": "Generates analytical trend reports based on email campaign data such as open rates, click-through rates, bounce rates, and subscriber engagement over a specified time range. Accepts campaign identifiers and date ranges as input, processes the email metrics to identify upward or downward trends, and outputs summarized trend statistics and visual insights.", + "category": "email-communication", + "parameters": [ + { + "name": "campaignIds", + "type": "array", + "description": "List of unique identifiers for the email campaigns to analyze", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date for the trend analysis in ISO 8601 format (YYYY-MM-DD)", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date for the trend analysis in ISO 8601 format (YYYY-MM-DD)", + "required": true, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "List of email metrics to include in the trend analysis, e.g., 'openRate', 'clickRate', 'bounceRate'", + "required": false, + "defaultValue": "[\"openRate\",\"clickRate\",\"bounceRate\"]" + }, + { + "name": "granularity", + "type": "string", + "description": "Time granularity for trend aggregation: daily, weekly, or monthly", + "required": false, + "defaultValue": "daily" + } + ], + "returns": { + "type": "object", + "description": "An object containing trend summaries for each metric, including date-wise values, percent change, and trend direction indicators." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to provide insights about the performance trends of email campaigns over time, such as identifying improvements or declines in engagement metrics. Useful for marketing optimization and reporting tasks.", + "limitations": "Does not access real-time data streams or integrate with email service providers directly; requires pre-collected campaign data. It does not predict future trends beyond the analyzed data range.", + "examples": [ + "Generate a weekly trend report for campaign IDs ['camp123', 'camp456'] between 2023-01-01 and 2023-03-31 focusing on open and click rates.", + "Show the monthly bounce rate trend for the campaign 'spring_sale' from 2022-10-01 to 2023-01-31.", + "Analyze daily open, click, and bounce rates trends for multiple campaigns over the past 30 days." + ] + }, + "tags": [ + "email", + "analytics", + "trend analysis", + "marketing", + "campaign performance" + ], + "examples": [ + { + "inputJson": "{\"campaignIds\":[\"camp123\",\"camp789\"],\"startDate\":\"2023-01-01\",\"endDate\":\"2023-03-31\",\"metrics\":[\"openRate\",\"clickRate\"],\"granularity\":\"weekly\"}", + "description": "Generate weekly open and click rate trends for two campaigns over Q1 2023." + }, + { + "inputJson": "{\"campaignIds\":[\"holiday_promo\"],\"startDate\":\"2022-11-01\",\"endDate\":\"2022-12-31\",\"metrics\":[\"bounceRate\"],\"granularity\":\"monthly\"}", + "description": "Monthly bounce rate trend for holiday promo campaign during November and December 2022." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Trend", + "context": null + } + }, + { + "name": "email-communication.generateSchema", + "description": "Generates a JSON schema definition for email message templates based on provided template structure and field specifications. Accepts a template object describing fields such as subject, body, recipients, and custom variables, then produces a JSON schema used for validating email template data programmatically.", + "category": "email-communication", + "parameters": [ + { + "name": "templateName", + "type": "string", + "description": "Name identifier for the email template to generate schema for.", + "required": true, + "defaultValue": "" + }, + { + "name": "fields", + "type": "array", + "description": "Array of field definition objects specifying the name, type, required flag, and description of each template field (e.g., subject, body, cc).", + "required": true, + "defaultValue": "" + }, + { + "name": "allowAdditionalProperties", + "type": "boolean", + "description": "Flag to specify if additional properties beyond the defined fields are allowed in the schema.", + "required": false, + "defaultValue": "false" + }, + { + "name": "schemaVersion", + "type": "string", + "description": "Specify the JSON schema version identifier to use, e.g., 'http://json-schema.org/draft-07/schema#'.", + "required": false, + "defaultValue": "http://json-schema.org/draft-07/schema#" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing the JSON schema defining the email template's structure, types, and constraints suitable for validation." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to formalize and validate email message template data structures programmatically. It helps generate a JSON schema to enforce consistency, required fields, and data types of email templates before generating or sending emails. This is useful in large-scale email automation or templating systems.", + "limitations": "The tool only generates schema definitions and does not validate actual email content or send emails. It requires structured field definitions as input and does not infer schema from free text or existing templates.", + "examples": [ + "Generate a schema for a welcome email template with fields: subject (string, required), body (string, required), cc (array of strings, optional).", + "Create a JSON schema for an invoice email template including fields for recipient, subject, body, and attachments with specified types." + ] + }, + "tags": [ + "email", + "schema", + "validation", + "template", + "automation", + "json-schema" + ], + "examples": [ + { + "inputJson": "{\"templateName\":\"WelcomeEmail\",\"fields\":[{\"name\":\"subject\",\"type\":\"string\",\"required\":true,\"description\":\"Email subject line\"},{\"name\":\"body\",\"type\":\"string\",\"required\":true,\"description\":\"Main email content\"},{\"name\":\"cc\",\"type\":\"array\",\"required\":false,\"description\":\"List of CC email addresses\"}],\"allowAdditionalProperties\":false}", + "description": "Generate schema for a welcome email template with subject, body, and optional cc fields." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Schema", + "context": null + } + }, + { + "name": "email-communication.createCluster", + "description": "Creates and configures a scalable email sending cluster infrastructure based on user-defined parameters. The tool accepts input for cluster name, number of nodes, geographic regions, email throughput limits, and failover strategies. It sets up the cluster environment, provisions SMTP nodes, and outputs a summary of the cluster configuration and operational endpoints.", + "category": "email-communication", + "parameters": [ + { + "name": "clusterName", + "type": "string", + "description": "The unique name identifier for the email cluster.", + "required": true, + "defaultValue": "" + }, + { + "name": "nodeCount", + "type": "number", + "description": "The number of SMTP nodes to include in the cluster for load balancing and redundancy.", + "required": true, + "defaultValue": "3" + }, + { + "name": "regions", + "type": "array", + "description": "List of geographic regions (ISO region codes) where cluster nodes will be deployed for latency optimization.", + "required": true, + "defaultValue": "[\"us-east-1\"]" + }, + { + "name": "maxEmailsPerSecond", + "type": "number", + "description": "Maximum number of emails the cluster can send per second to manage throughput capacity.", + "required": false, + "defaultValue": "1000" + }, + { + "name": "failoverStrategy", + "type": "string", + "description": "Method used for cluster failover (e.g., automatic, manual, weighted) to maintain uptime.", + "required": false, + "defaultValue": "automatic" + }, + { + "name": "enableMonitoring", + "type": "boolean", + "description": "Whether to enable real-time monitoring and alerting for cluster health and performance.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object detailing the finalized cluster configuration including clusterId, nodes info, endpoint URLs, and status." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically deploy or scale an email sending infrastructure that requires multiple SMTP nodes distributed geographically for high availability and throughput. It helps automate the cluster setup process to meet specified email throughput and regional requirements.", + "limitations": "This tool does not handle the setup of email content templates, recipient management, or handle detailed SMTP authentication configurations beyond basic cluster provisioning.", + "examples": [ + "Create an email cluster named 'MarketingCluster' with 5 nodes in US and EU regions for high throughput email campaigns.", + "Setup a failover-capable cluster with monitoring disabled for cost savings.", + "Deploy a minimal cluster for testing with 1 node in a single region." + ] + }, + "tags": [ + "email", + "infrastructure", + "cluster", + "smtp", + "scaling", + "automation", + "failover" + ], + "examples": [ + { + "inputJson": "{\"clusterName\":\"MarketingCluster\",\"nodeCount\":5,\"regions\":[\"us-east-1\",\"eu-west-1\"],\"maxEmailsPerSecond\":5000,\"failoverStrategy\":\"automatic\",\"enableMonitoring\":true}", + "description": "Create a 5-node email cluster named 'MarketingCluster' with nodes in US East and EU West regions supporting up to 5000 emails/sec and automatic failover with monitoring enabled." + }, + { + "inputJson": "{\"clusterName\":\"TestCluster\",\"nodeCount\":1,\"regions\":[\"us-west-2\"],\"maxEmailsPerSecond\":500,\"failoverStrategy\":\"manual\",\"enableMonitoring\":false}", + "description": "Create a single-node test email cluster with manual failover in US West region with monitoring disabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Cluster", + "context": null + } + }, + { + "name": "email-communication.createQueue", + "description": "Creates a new email sending queue with defined properties such as queue name, concurrency limits, retry policies, and optional scheduling to manage and automate email dispatching efficiently. Accepts queue configuration parameters and returns a confirmation with the queue metadata.", + "category": "email-communication", + "parameters": [ + { + "name": "queueName", + "type": "string", + "description": "A unique name identifier for the new email queue.", + "required": true, + "defaultValue": "" + }, + { + "name": "maxConcurrentEmails", + "type": "number", + "description": "Maximum number of emails that can be processed concurrently in this queue.", + "required": false, + "defaultValue": "10" + }, + { + "name": "retryAttempts", + "type": "number", + "description": "Number of times to retry sending a failed email before marking it as failed.", + "required": false, + "defaultValue": "3" + }, + { + "name": "retryDelaySeconds", + "type": "number", + "description": "Delay in seconds between each retry attempt for a failed email.", + "required": false, + "defaultValue": "60" + }, + { + "name": "enableScheduling", + "type": "boolean", + "description": "Flag to enable scheduling of emails in this queue at specified times (true or false).", + "required": false, + "defaultValue": "false" + }, + { + "name": "allowedSendingHours", + "type": "array", + "description": "An array specifying allowed hours (0-23) during which emails can be sent, applicable if scheduling is enabled.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "description", + "type": "string", + "description": "Optional descriptive text about the purpose or details of the queue.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing confirmation details of the created queue including queue ID, name, and configuration summary." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically set up a managed email sending queue that controls concurrency, retries, and optionally schedules sending hours, to ensure reliable and efficient email delivery workflows.", + "limitations": "This tool does not send emails itself, nor does it handle individual email content creation or tracking. It only sets up the infrastructure queue parameters for email dispatching.", + "examples": [ + "Create an email queue named 'MarketingCampaign' with concurrency limit 20 and 5 retry attempts.", + "Set up a queue 'TransactionalEmails' that only sends emails between 8 AM and 6 PM with scheduling enabled.", + "Create a simple queue 'DefaultQueue' with default concurrency and retries without scheduling." + ] + }, + "tags": [ + "email", + "queue", + "automation", + "sending", + "retry", + "concurrency", + "scheduling" + ], + "examples": [ + { + "inputJson": "{\"queueName\":\"MarketingCampaign\",\"maxConcurrentEmails\":20,\"retryAttempts\":5,\"retryDelaySeconds\":120,\"enableScheduling\":false,\"description\":\"Queue for marketing blast emails.\"}", + "description": "Creating a marketing email queue with higher concurrency and retry policies, no scheduling." + }, + { + "inputJson": "{\"queueName\":\"TransactionalEmails\",\"maxConcurrentEmails\":10,\"retryAttempts\":3,\"retryDelaySeconds\":60,\"enableScheduling\":true,\"allowedSendingHours\":[8,9,10,11,12,13,14,15,16,17,18],\"description\":\"Queue for transactional emails sent during business hours.\"}", + "description": "Creating a transactional email queue with scheduling enabled limited to business hours." + }, + { + "inputJson": "{\"queueName\":\"DefaultQueue\"}", + "description": "Creating a default email queue with default parameters and no scheduling." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Queue", + "context": null + } + }, + { + "name": "email-communication.createIncident", + "description": "Creates a security incident report email draft based on input details of the incident, including severity, affected systems, description, and recommended actions. Generates an email-ready structured incident report that can be reviewed and sent to relevant security stakeholders.", + "category": "email-communication", + "parameters": [ + { + "name": "incidentTitle", + "type": "string", + "description": "A brief, descriptive title summarizing the security incident.", + "required": true, + "defaultValue": "" + }, + { + "name": "severityLevel", + "type": "string", + "description": "Severity classification of the incident (e.g., Low, Medium, High, Critical).", + "required": true, + "defaultValue": "" + }, + { + "name": "affectedSystems", + "type": "array", + "description": "List of system names or identifiers affected by the incident.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "incidentDescription", + "type": "string", + "description": "Detailed textual description of what the incident entails.", + "required": true, + "defaultValue": "" + }, + { + "name": "discoveryDate", + "type": "string", + "description": "Date when the incident was discovered, in ISO 8601 format (YYYY-MM-DD).", + "required": false, + "defaultValue": "" + }, + { + "name": "recommendedActions", + "type": "string", + "description": "Suggested mitigation or remediation actions to address the incident.", + "required": false, + "defaultValue": "" + }, + { + "name": "recipients", + "type": "array", + "description": "List of email addresses to send the incident report to.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeAttachments", + "type": "boolean", + "description": "Whether to indicate inclusion of relevant attachments in the email.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated email subject and body text formatted as an incident report." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to draft a structured security incident report email from raw incident data for communication to security teams or stakeholders. It helps automate incident notification by creating clear, consistent email content ready for review and sending.", + "limitations": "The tool does not send emails—only creates the draft content. It cannot validate recipient address correctness or dynamically attach files.", + "examples": [ + "Create an incident email for a newly discovered critical vulnerability affecting backend servers.", + "Generate a security incident report email summarizing a medium severity phishing attack.", + "Draft an incident notification for a detected malware infection including recommended actions." + ] + }, + "tags": [ + "email", + "security", + "incident", + "automation", + "reporting", + "communication" + ], + "examples": [ + { + "inputJson": "{\"incidentTitle\":\"Unauthorized Access Detected\",\"severityLevel\":\"High\",\"affectedSystems\":[\"Database Server 1\",\"Web Server 3\"],\"incidentDescription\":\"Multiple unauthorized login attempts detected on critical servers, indicating possible brute force attack.\",\"discoveryDate\":\"2024-06-10\",\"recommendedActions\":\"Immediately disable affected accounts, reset passwords, and conduct a forensic analysis.\",\"recipients\":[\"security-team@example.com\",\"it-support@example.com\"],\"includeAttachments\":false}", + "description": "Creates a high severity incident email draft detailing unauthorized access attempts affecting two servers, including actions and recipients." + }, + { + "inputJson": "{\"incidentTitle\":\"Malware Infection on Workstation\",\"severityLevel\":\"Medium\",\"affectedSystems\":[\"User PC 42\"],\"incidentDescription\":\"Detected malware activity on a user workstation causing unusual network traffic.\",\"recommendedActions\":\"Isolate the affected machine and run anti-malware scans.\",\"recipients\":[\"security-ops@example.com\"]}", + "description": "Generates an incident report email for a medium severity malware infection on a single workstation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Incident", + "context": null + } + }, + { + "name": "email-communication.createThread", + "description": "Creates a new email thread by initializing the first message and associated metadata. Accepts details like subject, sender, recipients, optional body, and attachments. Returns a thread ID and summary data for tracking and referencing the conversation thread.", + "category": "email-communication", + "parameters": [ + { + "name": "subject", + "type": "string", + "description": "Subject line of the email thread, used to group messages.", + "required": true, + "defaultValue": "" + }, + { + "name": "sender", + "type": "string", + "description": "Email address of the sender initiating the thread.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipients", + "type": "array", + "description": "List of recipient email addresses to include in the thread.", + "required": true, + "defaultValue": "" + }, + { + "name": "ccRecipients", + "type": "array", + "description": "Optional list of email addresses to carbon copy on the thread's first message.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "bccRecipients", + "type": "array", + "description": "Optional list of email addresses to blind carbon copy on the thread's first message.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "body", + "type": "string", + "description": "Optional text body content of the initial email in the thread.", + "required": false, + "defaultValue": "" + }, + { + "name": "attachments", + "type": "array", + "description": "Optional list of attachments included in the first email message. Each item includes filename and binary or URL.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "priority", + "type": "string", + "description": "Optional priority level of the thread (e.g., 'normal', 'high').", + "required": false, + "defaultValue": "normal" + } + ], + "returns": { + "type": "object", + "description": "An object containing the new thread's unique identifier, initial message ID, subject, sender, recipients, and a timestamp." + }, + "aiAgent": { + "useCase": "Use this tool to start a new email conversation thread programmatically, such as when automating customer support emails, onboarding communications, or initiating newsletters. Ideal for agents managing bulk or templated outreach where tracking separate conversations is important.", + "limitations": "This tool does not send the email over SMTP or handle replies; it only creates and stores the thread metadata and initial message. Sending emails requires additional tools. It cannot modify existing threads.", + "examples": [ + "Create a new customer support email thread with subject, sender, and recipients.", + "Initialize a newsletter thread with multiple recipients and attachments.", + "Create a priority thread for urgent team communications." + ] + }, + "tags": [ + "email", + "thread", + "communication", + "automation", + "messaging", + "customer-support" + ], + "examples": [ + { + "inputJson": "{\"subject\":\"Welcome to Our Service\",\"sender\":\"support@example.com\",\"recipients\":[\"user1@example.com\"],\"body\":\"Hello and welcome! We are glad to have you.\",\"priority\":\"normal\"}", + "description": "Creates a new email thread welcoming a new user." + }, + { + "inputJson": "{\"subject\":\"Monthly Newsletter\",\"sender\":\"news@example.com\",\"recipients\":[\"subscriber1@example.com\",\"subscriber2@example.com\"],\"attachments\":[{\"filename\":\"newsletter.pdf\",\"url\":\"https://example.com/newsletter.pdf\"}],\"body\":\"Please find attached our latest newsletter.\"}", + "description": "Starts a newsletter thread with multiple recipients and an attachment." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Thread", + "context": null + } + }, + { + "name": "email-communication.createThreat", + "description": "This tool accepts detailed parameters about an email threat scenario, such as sender, subject, content patterns, and risk level, then creates a structured threat report object. It processes inputs to classify and document potential email-based security threats for automation or alerting systems.", + "category": "email-communication", + "parameters": [ + { + "name": "threatName", + "type": "string", + "description": "A concise name identifying the email threat type or campaign.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A detailed description of the email threat, including behavior or characteristics.", + "required": false, + "defaultValue": "" + }, + { + "name": "senderEmail", + "type": "string", + "description": "The email address or domain linked to the threat as sender.", + "required": false, + "defaultValue": "" + }, + { + "name": "subjectPatterns", + "type": "array", + "description": "List of string patterns or keywords commonly found in threat email subjects.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "contentPatterns", + "type": "array", + "description": "List of string patterns or keywords indicating malicious content in email body.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "riskLevel", + "type": "string", + "description": "Risk severity level of the threat (e.g., low, medium, high).", + "required": true, + "defaultValue": "medium" + }, + { + "name": "active", + "type": "boolean", + "description": "Flag indicating whether the threat is currently active and should be monitored.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "A structured threat report object containing all provided details and a generated threatId for referencing." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent detects or is informed about a new or existing email-based threat and needs to formalize it into a standardized threat object for tracking, analysis, prevention, or alerting purposes. It enables integrating threat intelligence into email security workflows or incident response automation.", + "limitations": "This tool does not itself analyze emails or detect threats automatically; it only creates structured threat representations based on provided information. It does not perform mitigation or direct email filtering.", + "examples": [ + "Create a threat entry for a phishing campaign impersonating a bank with suspicious subject lines.", + "Document an active malware delivery threat via emails containing certain keywords and sender domains.", + "Register a low-risk spam threat pattern with characteristic content phrases." + ] + }, + "tags": [ + "email", + "security", + "threat", + "automation", + "phishing", + "malware", + "riskManagement" + ], + "examples": [ + { + "inputJson": "{\"threatName\":\"BankPhishCampaign\",\"description\":\"Phishing emails impersonating Bank Corp using urgent language.\",\"senderEmail\":\"malicious@fakebank.com\",\"subjectPatterns\":[\"urgent update\",\"account locked\"],\"contentPatterns\":[\"verify your account\",\"click this link\"],\"riskLevel\":\"high\",\"active\":true}", + "description": "Create a high-risk phishing threat profile targeting bank customers." + }, + { + "inputJson": "{\"threatName\":\"MalwareAttachmentSpike\",\"description\":\"Emails delivering malware attachments disguised as invoices.\",\"senderEmail\":\"invoice@unknown.com\",\"subjectPatterns\":[\"invoice\",\"payment due\"],\"contentPatterns\":[\"attachment\",\"download\"],\"riskLevel\":\"medium\",\"active\":true}", + "description": "Document a medium-risk malware email delivery threat with invoice themes." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Threat", + "context": null + } + }, + { + "name": "email-communication.createDeal", + "description": "Creates a business deal record linked to an email communication context. Accepts deal details such as title, value, associated contacts, and email thread ID. Processes this information to generate a structured deal object useful for CRM systems or sales tracking. Returns the created deal information including a unique deal ID and timestamps.", + "category": "email-communication", + "parameters": [ + { + "name": "dealTitle", + "type": "string", + "description": "The title or name of the deal being created.", + "required": true, + "defaultValue": "" + }, + { + "name": "dealValue", + "type": "number", + "description": "Monetary value of the deal in the specified currency.", + "required": false, + "defaultValue": "0" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code for the deal value (e.g., USD, EUR).", + "required": false, + "defaultValue": "USD" + }, + { + "name": "contactEmails", + "type": "array", + "description": "List of email addresses for contacts involved in the deal.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "emailThreadId", + "type": "string", + "description": "Identifier of the email thread to associate the deal with.", + "required": true, + "defaultValue": "" + }, + { + "name": "expectedCloseDate", + "type": "string", + "description": "Expected closing date of the deal in ISO 8601 format (YYYY-MM-DD).", + "required": false, + "defaultValue": "" + }, + { + "name": "dealStage", + "type": "string", + "description": "Current stage of the deal lifecycle, e.g., \"Prospecting\", \"Negotiation\".", + "required": false, + "defaultValue": "Prospecting" + }, + { + "name": "notes", + "type": "string", + "description": "Additional notes or description about the deal.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Object containing the dealId, deal details submitted, creation timestamp, and status indication." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to convert an email-based lead or opportunity into a structured business deal record for CRM or sales pipeline tracking. It helps automate deal creation from email interactions by extracting key deal info and linking it to the communication context.", + "limitations": "This tool does not send emails or update existing deals; it only creates new deal records. It requires the email thread to already exist and be identified by its ID.", + "examples": [ + "Create a new deal for an opportunity discussed over email with contacts john@example.com and jane@example.com valued at 5000 USD.", + "Record a deal titled 'Website Redesign' linked to a particular email thread with an expected close date next quarter.", + "Add notes to a new deal about client preferences based on email correspondence." + ] + }, + "tags": [ + "email", + "deal creation", + "business", + "crm", + "sales", + "automation" + ], + "examples": [ + { + "inputJson": "{\"dealTitle\":\"New Software License Sale\",\"dealValue\":12000,\"currency\":\"USD\",\"contactEmails\":[\"saleslead@example.com\"],\"emailThreadId\":\"thread12345\",\"expectedCloseDate\":\"2024-12-31\",\"dealStage\":\"Negotiation\",\"notes\":\"Discussed bulk licensing terms.\"}", + "description": "Creating a software license deal linked to an email thread with value and deal stage." + }, + { + "inputJson": "{\"dealTitle\":\"Consulting Services Proposal\",\"contactEmails\":[\"client@example.com\"],\"emailThreadId\":\"emailthread987\"}", + "description": "Creating a minimal deal entry from an email with required fields only." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Deal", + "context": null + } + }, + { + "name": "email-communication.createHTML", + "description": "Generates customizable HTML email content based on provided text, images, styles, and layout preferences. Accepts parameters for subject, body text, images, colors, fonts, and responsive layout options. Outputs a complete HTML string ready for email sending or further customization.", + "category": "email-communication", + "parameters": [ + { + "name": "subject", + "type": "string", + "description": "The email subject line text to include in the message header section.", + "required": false, + "defaultValue": "" + }, + { + "name": "bodyText", + "type": "string", + "description": "Plain text content for the main body of the email.", + "required": true, + "defaultValue": "" + }, + { + "name": "images", + "type": "array", + "description": "List of image URLs to embed or reference in the email content.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "primaryColor", + "type": "string", + "description": "Hex code or named color for main accents and elements in the email.", + "required": false, + "defaultValue": "#007BFF" + }, + { + "name": "fontFamily", + "type": "string", + "description": "Font family name to style the email text content.", + "required": false, + "defaultValue": "Arial, sans-serif" + }, + { + "name": "includeFooter", + "type": "boolean", + "description": "Whether to include a standard footer section in the email HTML.", + "required": false, + "defaultValue": "true" + }, + { + "name": "isResponsive", + "type": "boolean", + "description": "Flag to enable responsive design for mobile email clients.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Object containing a single HTML string field with the generated email markup." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to automatically generate styled, professional HTML email content from input text, optional images, and style preferences to be sent via email systems. It helps prepare email-ready HTML without manual coding.", + "limitations": "Cannot send email directly or handle dynamic content personalization per recipient. Does not guarantee full compatibility with all email clients or embed images inline; external hosting is recommended for images.", + "examples": [ + "Create a promotional email HTML with a blue theme including three images.", + "Generate a simple plain text newsletter HTML with a footer but no images.", + "Produce a mobile responsive invitation email with a custom font and primary color." + ] + }, + "tags": [ + "email", + "html", + "template", + "automation", + "email-communication" + ], + "examples": [ + { + "inputJson": "{\"subject\":\"Welcome to Our Service\",\"bodyText\":\"Hello, thank you for joining our newsletter!\",\"images\":[\"https://example.com/welcome.png\"],\"primaryColor\":\"#1a73e8\",\"fontFamily\":\"Helvetica, sans-serif\",\"includeFooter\":true,\"isResponsive\":true}", + "description": "A welcome email with a branded blue color, custom font, one image, footer, and responsiveness enabled." + }, + { + "inputJson": "{\"bodyText\":\"Monthly update: Here are the latest news and offers.\",\"includeFooter\":false}", + "description": "A simple monthly update plain HTML email with no images or footer, using default styles." + }, + { + "inputJson": "{\"subject\":\"Event Invitation\",\"bodyText\":\"Join us for an exciting event this weekend!\",\"images\":[],\"primaryColor\":\"#ff5722\",\"fontFamily\":\"Georgia, serif\",\"includeFooter\":true,\"isResponsive\":true}", + "description": "An event invitation styled with an orange accent color, serif font, responsive layout, and including footer." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "HTML", + "context": null + } + }, + { + "name": "email-communication.createChart", + "description": "Generates an embeddable chart image that visualizes email campaign metrics like open rates, click rates, and bounce rates based on provided data. Accepts structured campaign performance data and chart customization options, and produces a URL or base64 image string for embedding in emails or reports.", + "category": "email-communication", + "parameters": [ + { + "name": "campaignData", + "type": "object", + "description": "Structured data object containing email campaign statistics (e.g., openRate, clickRate, bounceRate) over time or segments.", + "required": true, + "defaultValue": "" + }, + { + "name": "chartType", + "type": "string", + "description": "Type of chart to generate, such as 'bar', 'line', or 'pie' to best represent the data.", + "required": false, + "defaultValue": "bar" + }, + { + "name": "title", + "type": "string", + "description": "Title text for the chart to be displayed above it.", + "required": false, + "defaultValue": "Email Campaign Metrics" + }, + { + "name": "width", + "type": "number", + "description": "Width of the generated chart image in pixels.", + "required": false, + "defaultValue": "600" + }, + { + "name": "height", + "type": "number", + "description": "Height of the generated chart image in pixels.", + "required": false, + "defaultValue": "400" + }, + { + "name": "colorScheme", + "type": "string", + "description": "Color theme or palette name used to style the chart.", + "required": false, + "defaultValue": "default" + }, + { + "name": "includeLegend", + "type": "boolean", + "description": "Flag to include a legend explaining chart elements.", + "required": false, + "defaultValue": "true" + }, + { + "name": "returnFormat", + "type": "string", + "description": "Format of output chart: 'url' for an image URL or 'base64' for a base64-encoded string.", + "required": false, + "defaultValue": "url" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated chart image as either a URL or base64 string, including metadata like chart dimensions and type." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to create visual representations of email campaign performance metrics for reports or email content, facilitating easy interpretation of campaign success indicators.", + "limitations": "Cannot generate interactive charts or handle raw unstructured email logs; requires summarized numerical campaign data as input. Does not send emails, only generates chart images.", + "examples": [ + "Create a line chart showing weekly open and click rates for the last month.", + "Generate a pie chart visualizing the distribution of bounce reasons in the latest campaign.", + "Produce a bar chart with custom colors showing click rates per segment." + ] + }, + "tags": [ + "email", + "chart", + "visualization", + "campaign-metrics", + "reporting", + "email-marketing" + ], + "examples": [ + { + "inputJson": "{\"campaignData\":{\"weeks\":[\"Week 1\",\"Week 2\"],\"openRate\":[45,52],\"clickRate\":[12,15]},\"chartType\":\"line\",\"title\":\"Weekly Open and Click Rates\",\"width\":700,\"height\":400,\"colorScheme\":\"cool\",\"includeLegend\":true,\"returnFormat\":\"url\"}", + "description": "Generate a line chart of weekly open and click rates with a cool color scheme." + }, + { + "inputJson": "{\"campaignData\":{\"segments\":[\"Newsletter\",\"Promotions\"],\"clickRate\":[20,30]},\"chartType\":\"bar\",\"title\":\"Click Rates by Segment\",\"width\":600,\"height\":300,\"colorScheme\":\"warm\",\"includeLegend\":false,\"returnFormat\":\"base64\"}", + "description": "Create a bar chart of click rates segmented by mail type, returning a base64 image string." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Chart", + "context": null + } + }, + { + "name": "email-communication.createXML", + "description": "Generates a well-structured XML document representing email content and metadata, based on provided subject, recipients, body, and optional attachments. Inputs include subject, recipients list, body content (plain text or HTML), and attachment details. Outputs a string containing the complete XML representation suitable for email automation or integration.", + "category": "email-communication", + "parameters": [ + { + "name": "subject", + "type": "string", + "description": "The subject line of the email to be included in the XML.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipients", + "type": "array", + "description": "List of recipient email addresses to include in the XML envelope.", + "required": true, + "defaultValue": "" + }, + { + "name": "body", + "type": "string", + "description": "The main content of the email body, can include HTML.", + "required": true, + "defaultValue": "" + }, + { + "name": "isHtml", + "type": "boolean", + "description": "Flag indicating whether the body content is HTML (true) or plain text (false).", + "required": false, + "defaultValue": "false" + }, + { + "name": "attachments", + "type": "array", + "description": "Optional list of attachments where each item includes file name and base64 encoded content.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "sender", + "type": "string", + "description": "Optional sender email address to include in XML metadata.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with a single property 'xmlContent' containing the XML string representation of the email." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert email details into a standardized XML format for downstream sending systems, archiving, or integrations requiring XML input. Ideal for automating email workflows where XML is the chosen data exchange format.", + "limitations": "This tool does not send the email or validate the correctness of email addresses. It only formats provided data into XML. It cannot interpret or modify email content beyond XML structuring.", + "examples": [ + "Create an XML for a marketing email to multiple recipients with HTML content and attachments.", + "Generate XML email representation from user-provided subject, body text, and recipient list.", + "Format an email draft with sender info, plain text body, and no attachments into XML." + ] + }, + "tags": [ + "email", + "xml", + "email-formatting", + "automation", + "communication", + "integration" + ], + "examples": [ + { + "inputJson": "{\"subject\":\"Monthly Newsletter\",\"recipients\":[\"user1@example.com\",\"user2@example.com\"],\"body\":\"

Welcome!

Enjoy our updates.

\",\"isHtml\":true,\"attachments\":[{\"fileName\":\"newsletter.pdf\",\"content\":\"JVBERi0xLjQKJ...\"}],\"sender\":\"marketing@example.com\"}", + "description": "Create XML for an HTML marketing email with two recipients and one PDF attachment." + }, + { + "inputJson": "{\"subject\":\"Meeting Reminder\",\"recipients\":[\"team@example.com\"],\"body\":\"Don't forget our meeting at 10 AM.\",\"isHtml\":false}", + "description": "Generate XML for plain text meeting reminder to a team email address without attachments." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "XML", + "context": null + } + }, + { + "name": "email-communication.createResume", + "description": "This tool generates a professional resume document based on user-provided personal details, work experience, education, skills, and optional customization parameters. It outputs the resume as a formatted PDF or DOCX file ready for email sending or download.", + "category": "email-communication", + "parameters": [ + { + "name": "fullName", + "type": "string", + "description": "The candidate's full name to appear on the resume header.", + "required": true, + "defaultValue": "" + }, + { + "name": "contactEmail", + "type": "string", + "description": "Email address to include in the contact information section.", + "required": true, + "defaultValue": "" + }, + { + "name": "phone", + "type": "string", + "description": "Phone number to include in the contact details.", + "required": false, + "defaultValue": "" + }, + { + "name": "summary", + "type": "string", + "description": "A brief professional summary or objective statement for the resume.", + "required": false, + "defaultValue": "" + }, + { + "name": "workExperience", + "type": "array", + "description": "List of work experience entries including company name, position, start/end dates, and descriptions.", + "required": true, + "defaultValue": "" + }, + { + "name": "education", + "type": "array", + "description": "List of educational qualifications including institution name, degree, and graduation year.", + "required": true, + "defaultValue": "" + }, + { + "name": "skills", + "type": "array", + "description": "Array of skills to highlight in the skills section of the resume.", + "required": false, + "defaultValue": "" + }, + { + "name": "includePhoto", + "type": "boolean", + "description": "Indicates whether to include a professional photo on the resume.", + "required": false, + "defaultValue": "false" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output file format for the resume, e.g., PDF or DOCX.", + "required": false, + "defaultValue": "PDF" + } + ], + "returns": { + "type": "object", + "description": "An object containing the resume file content encoded as base64 string and the MIME type for download or email attachment." + }, + "aiAgent": { + "useCase": "Use this tool when you need to automatically generate a professional resume document from structured user data, for example, to quickly create personalized resumes for job applications via email automation workflows.", + "limitations": "This tool does not perform content quality assessment or job-specific tailoring beyond user input. It requires well-structured and complete data to create a meaningful resume.", + "examples": [ + "Create a PDF resume with full work history and skills for John Doe.", + "Generate a DOCX resume including a profile photo and a professional summary.", + "Produce a resume with minimum contact info and education details only." + ] + }, + "tags": [ + "email", + "document", + "resume", + "automation", + "PDF", + "DOCX", + "professional", + "job application" + ], + "examples": [ + { + "inputJson": "{\"fullName\":\"Jane Smith\",\"contactEmail\":\"jane.smith@example.com\",\"phone\":\"555-123-4567\",\"summary\":\"Experienced software engineer with a focus on machine learning.\",\"workExperience\":[{\"company\":\"Tech Corp\",\"position\":\"Senior Developer\",\"startDate\":\"2018-01\",\"endDate\":\"2023-03\",\"description\":\"Developed scalable machine learning applications.\"},{\"company\":\"Web Solutions\",\"position\":\"Developer\",\"startDate\":\"2015-06\",\"endDate\":\"2017-12\",\"description\":\"Built front-end web interfaces.\"}],\"education\":[{\"institution\":\"University of Technology\",\"degree\":\"BSc Computer Science\",\"graduationYear\":2015}],\"skills\":[\"Python\",\"Machine Learning\",\"JavaScript\"],\"includePhoto\":false,\"outputFormat\":\"PDF\"}", + "description": "Generate a PDF resume for Jane Smith with detailed work experience and skills." + }, + { + "inputJson": "{\"fullName\":\"Mark Johnson\",\"contactEmail\":\"mark.j@example.com\",\"summary\":\"Product manager with 10+ years in tech industry.\",\"workExperience\":[{\"company\":\"Innovatech\",\"position\":\"Product Manager\",\"startDate\":\"2012-05\",\"endDate\":\"2022-12\",\"description\":\"Led cross-functional teams to deliver software products.\"}],\"education\":[{\"institution\":\"State University\",\"degree\":\"MBA\",\"graduationYear\":2011}],\"skills\":[],\"includePhoto\":true,\"outputFormat\":\"DOCX\"}", + "description": "Create a DOCX resume for Mark Johnson including a professional photo." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Resume", + "context": null + } + }, + { + "name": "infrastructure-management.analyzeThread", + "description": "This tool analyzes communication threads related to infrastructure management, such as message threads from incident reports, support tickets, or operational updates. It accepts raw or structured communication data, processes the content to extract insights on thread activity, sentiment, response times, and key topics, and outputs a detailed analysis report with metrics and summaries.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "threadData", + "type": "array", + "description": "Array of message objects representing the communication thread. Each message includes sender, timestamp, and content.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeZone", + "type": "string", + "description": "Time zone identifier to normalize timestamps within the thread.", + "required": false, + "defaultValue": "UTC" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Whether to perform sentiment analysis on message contents.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum number of sentences to include in the summary report.", + "required": false, + "defaultValue": "5" + }, + { + "name": "keyTopicsCount", + "type": "number", + "description": "Number of key topics to extract and highlight from the thread.", + "required": false, + "defaultValue": "3" + } + ], + "returns": { + "type": "object", + "description": "An analysis report containing thread metrics (e.g., total messages, participants, response times), sentiment overview, key topics extracted, and a concise textual summary." + }, + "aiAgent": { + "useCase": "Use this tool when needing to derive actionable insights and metrics from infrastructure-related communication threads. It is ideal for summarizing long discussion threads in incident response or operational contexts, understanding interaction dynamics, and extracting common themes or sentiment trends.", + "limitations": "This tool does not debug infrastructure or provide direct remediation steps. It relies on textual content and metadata and cannot analyze attachments or non-textual media within threads.", + "examples": [ + "Analyze a week's worth of support ticket thread to determine average response times and sentiment trends.", + "Summarize incident management communication thread to extract key decisions and outstanding action items.", + "Extract main discussion topics from operational update threads and quantify participant engagement." + ] + }, + "tags": [ + "analysis", + "infrastructure", + "communication", + "thread", + "metrics", + "sentiment", + "summary" + ], + "examples": [ + { + "inputJson": "{\"threadData\":[{\"sender\":\"ops_engineer\",\"timestamp\":\"2024-05-01T09:15:00Z\",\"content\":\"Network latency increased at 09:10 AM, investigating.\"},{\"sender\":\"infra_manager\",\"timestamp\":\"2024-05-01T09:20:00Z\",\"content\":\"Please prioritize this issue, impact on production.\"},{\"sender\":\"ops_engineer\",\"timestamp\":\"2024-05-01T09:40:00Z\",\"content\":\"Identified a faulty router; replacement in progress.\"},{\"sender\":\"infra_manager\",\"timestamp\":\"2024-05-01T10:00:00Z\",\"content\":\"Replacement completed, monitoring network performance.\"}]}", + "description": "Thread about a network latency incident showing problem detection, prioritization, and resolution steps." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Thread", + "context": null + } + }, + { + "name": "email-communication.createSpec", + "description": "Generates a detailed specification document for an email communication domain, based on inputs like target audience, campaign objectives, email types, and compliance requirements. It processes given parameters to output a structured spec document that guides email design, content, automation, and legal compliance.", + "category": "email-communication", + "parameters": [ + { + "name": "targetAudience", + "type": "string", + "description": "Description of the audience segment for the email campaigns, e.g., demographics or customer types.", + "required": true, + "defaultValue": "" + }, + { + "name": "campaignGoals", + "type": "string", + "description": "Primary objectives of the email campaigns such as engagement, conversions, or information dissemination.", + "required": true, + "defaultValue": "" + }, + { + "name": "emailTypes", + "type": "array", + "description": "List of email types to include in the spec, e.g., newsletters, promotional, transactional.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "complianceRequirements", + "type": "string", + "description": "Regulatory or legal requirements to consider, such as GDPR or CAN-SPAM.", + "required": false, + "defaultValue": "" + }, + { + "name": "automationFeatures", + "type": "array", + "description": "Desired automation features like scheduling, triggers, or user segmentation rules.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "brandingGuidelines", + "type": "string", + "description": "Branding and style guidelines to be incorporated in the email specification.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated email communication specification as structured text and key sections." + }, + "aiAgent": { + "useCase": "Use this tool when you need to produce a comprehensive specification document that outlines email campaign goals, audience targeting, types of emails, compliance rules, branding, and automation plans. Ideal for planning and briefing email marketing or transactional message systems.", + "limitations": "This tool does not generate the actual email content or handle sending. It focuses on creating the documentation/specification for email communication strategy and technical requirements.", + "examples": [ + "Create a spec document for promotional and transactional emails targeting US customers, following GDPR and branding guidelines.", + "Generate an email communication spec focusing on engagement and newsletters for millennials.", + "Produce a detailed marketing email campaign spec including automation triggers and compliance with CAN-SPAM Act." + ] + }, + "tags": [ + "email", + "specification", + "communication", + "campaign", + "automation", + "compliance", + "marketing" + ], + "examples": [ + { + "inputJson": "{\"targetAudience\":\"US-based millennials interested in tech products\",\"campaignGoals\":\"Increase engagement and sales conversions\",\"emailTypes\":[\"newsletter\",\"promotional\"],\"complianceRequirements\":\"GDPR\",\"automationFeatures\":[\"scheduled sending\",\"abandoned cart trigger\"],\"brandingGuidelines\":\"Use brand colors #2563EB and #FFFFFF; font Arial\"}", + "description": "Generate a spec for targeted newsletters and promotions adhering to GDPR for millennials." + }, + { + "inputJson": "{\"targetAudience\":\"Global customers\",\"campaignGoals\":\"Informational updates\",\"emailTypes\":[\"transactional\"],\"complianceRequirements\":\"CAN-SPAM Act\",\"automationFeatures\":[],\"brandingGuidelines\":\"Corporate style guidelines\"}", + "description": "Create a specification for transactional emails with CAN-SPAM compliance and simple automation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Spec", + "context": null + } + }, + { + "name": "infrastructure-management.analyzeHeading", + "description": "Analyzes heading text from infrastructure documentation or configuration files to extract key information such as section purpose, critical components, or priority indicators. Accepts a string representing the heading content, applies natural language processing to interpret the heading's intent or importance, and outputs a structured analysis highlighting its role within infrastructure management context.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "headingText", + "type": "string", + "description": "The heading or title text to analyze, typically from infrastructure documentation or configuration files.", + "required": true, + "defaultValue": "" + }, + { + "name": "contextType", + "type": "string", + "description": "Optional context to specify the domain, e.g., 'cloud', 'network', or 'hardware' to refine analysis.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Structured analysis output including inferred heading category, summary, detected keywords, and importance level." + }, + "aiAgent": { + "useCase": "Use this tool when analyzing infrastructure-related documents or configurations to interpret section headings and extract meaningful metadata or insights about infrastructure components or priorities indicated by the heading text. Helpful for automated document understanding, indexing, or decision support in infrastructure management.", + "limitations": "Cannot analyze full content beyond the heading text; interpretation is limited by natural language ambiguity and lack of broader document context.", + "examples": [ + "Analyze the heading 'Critical Network Components' to identify its relevance and priority.", + "Interpret the heading 'Cloud Backup Procedures' to summarize its role in the document.", + "Assess the heading 'Hardware Maintenance Schedule' to detect key focus areas." + ] + }, + "tags": [ + "infrastructure-management", + "analysis", + "heading", + "NLP", + "documentation", + "cloud", + "network", + "hardware" + ], + "examples": [ + { + "inputJson": "{\"headingText\":\"Critical Network Components\"}", + "description": "Analyze a network infrastructure heading for critical components." + }, + { + "inputJson": "{\"headingText\":\"Cloud Backup Procedures\",\"contextType\":\"cloud\"}", + "description": "Analyze a cloud-related heading specifying backup procedures." + }, + { + "inputJson": "{\"headingText\":\"Hardware Maintenance Schedule\"}", + "description": "Analyze a heading related to hardware maintenance timeline." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Heading", + "context": null + } + }, + { + "name": "infrastructure-management.analyzeXML", + "description": "Analyzes XML configuration files related to cloud or physical infrastructure. Accepts raw XML content or file paths, parses and validates the structure, extracts key configuration elements (e.g., nodes, services, resources), and reports inconsistencies or optimization recommendations in a structured summary.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "xmlContent", + "type": "string", + "description": "Raw XML data as a string to analyze. Required if filePath is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "filePath", + "type": "string", + "description": "Path to an XML file containing infrastructure configuration. Required if xmlContent is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "validateSchema", + "type": "boolean", + "description": "Whether to validate the XML against a provided schema if available in the system.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractElements", + "type": "array", + "description": "List of XML element names to extract detailed info from. If empty, extracts all relevant infrastructure elements.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "checkConsistency", + "type": "boolean", + "description": "Perform consistency checks among configuration elements, such as dependencies and resource conflicts.", + "required": false, + "defaultValue": "true" + }, + { + "name": "optimizationHints", + "type": "boolean", + "description": "Whether to include recommendations for optimizing the infrastructure configuration based on analysis.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing validation results, extracted elements summary, consistency check outcomes, and optimization hints if requested." + }, + "aiAgent": { + "useCase": "Use this tool when needing to parse and analyze XML files that define or describe infrastructure setups, including cloud resource configurations and physical device setups. It is ideal for detecting configuration errors, understanding system topology from XML data, and recommending improvements to infrastructure definitions. Agents can supply XML content or file paths to gain insight into structure and potential issues.", + "limitations": "This tool cannot modify or apply configuration changes; it only analyzes and reports. It relies on well-formed XML input and may not fully validate custom schemas unless provided externally. It does not support non-XML configuration formats.", + "examples": [ + "Analyze an XML network configuration file for errors and optimization recommendations.", + "Extract all service definitions from an infrastructure XML manifest string.", + "Check consistency and validate a physical device setup XML file with specific element extraction." + ] + }, + "tags": [ + "infrastructure", + "XML", + "analysis", + "configuration", + "validation", + "optimization", + "cloud", + "physical" + ], + "examples": [ + { + "inputJson": "{\"xmlContent\":\"webdb\",\"validateSchema\":true,\"extractElements\":[\"node\",\"service\"],\"checkConsistency\":true,\"optimizationHints\":true}", + "description": "Analyze inline XML defining two nodes with services, validate schema, extract nodes and services, check for configuration consistency, and provide optimization hints." + }, + { + "inputJson": "{\"filePath\":\"/configs/infra_devices.xml\",\"validateSchema\":false,\"extractElements\":[],\"checkConsistency\":true,\"optimizationHints\":false}", + "description": "Analyze an external XML file describing physical device infrastructure without schema validation, extracting all elements, checking consistency but skipping optimization suggestions." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "XML", + "context": null + } + }, + { + "name": "infrastructure-management.analyzeHTML", + "description": "Analyzes HTML content of infrastructure management dashboards or monitoring pages to extract key metrics, configuration data, and status indicators. Accepts raw HTML as input, parses it, and outputs structured data summarizing system health, resource usage, and alerts found in the HTML content.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "htmlContent", + "type": "string", + "description": "Raw HTML string representing the infrastructure dashboard or status page to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "extractMetrics", + "type": "boolean", + "description": "Flag to indicate whether to extract performance and usage metrics from the HTML content.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractAlerts", + "type": "boolean", + "description": "Flag to indicate whether to extract alerts or warning messages embedded in the HTML.", + "required": false, + "defaultValue": "true" + }, + { + "name": "customSelectors", + "type": "object", + "description": "Optional mapping of user-defined CSS selectors to extract specific additional data points from the HTML.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "Structured analysis result including extracted metrics, alerts, configuration summaries, and any custom data points from the HTML." + }, + "aiAgent": { + "useCase": "Use this tool when the AI agent needs to obtain structured status and configuration data from infrastructure web dashboards or HTML reports to inform decisions, trigger alerts, or integrate with logging systems. It is particularly useful when no API is available and only HTML views exist.", + "limitations": "Cannot guarantee accurate extraction if HTML structure is highly dynamic or obfuscated. Complex JavaScript-rendered content not included unless HTML contains static snapshots. Extraction accuracy depends on the quality and consistency of the HTML input.", + "examples": [ + "Analyze the HTML page from a cloud infrastructure monitoring portal to get service status and resource utilization.", + "Extract alerts and warnings from an on-premises hardware status webpage given as raw HTML.", + "Retrieve custom configuration parameters using user-provided CSS selectors from an HTML report." + ] + }, + "tags": [ + "infrastructure", + "html", + "analysis", + "monitoring", + "status", + "metrics", + "alerts" + ], + "examples": [ + { + "inputJson": "{\"htmlContent\":\"
CPU: 35%
Disk space low
\",\"extractMetrics\":true,\"extractAlerts\":true,\"customSelectors\":{}}", + "description": "Extract CPU usage metric and alert from a simple HTML snippet." + }, + { + "inputJson": "{\"htmlContent\":\"
Network throughput: 120Mbps
\",\"extractMetrics\":false,\"extractAlerts\":false,\"customSelectors\":{\"customMetric\":\"#customMetric\"}}", + "description": "Extract a custom metric using a user-defined CSS selector without extracting metrics or alerts by default." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "HTML", + "context": null + } + }, + { + "name": "infrastructure-management.sendComment", + "description": "Sends a comment message to a specified infrastructure resource or service communication channel, such as a ticket, deployment log, or incident report. Accepts the target resource identifier and comment content, processes authentication and delivery, and returns the delivery status and message ID if successful.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "targetResourceId", + "type": "string", + "description": "The unique identifier of the infrastructure resource or service channel to which the comment is sent.", + "required": true, + "defaultValue": "" + }, + { + "name": "commentText", + "type": "string", + "description": "The text content of the comment to be sent.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorId", + "type": "string", + "description": "Identifier of the comment's author; used for tracking and notification purposes.", + "required": false, + "defaultValue": "" + }, + { + "name": "priority", + "type": "string", + "description": "Priority level of the comment (e.g., 'low', 'normal', 'high').", + "required": false, + "defaultValue": "normal" + }, + { + "name": "timestamp", + "type": "string", + "description": "Optional ISO 8601 formatted timestamp for the comment creation time. Defaults to current time if omitted.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the success status, unique comment message ID (if successful), and explanatory message." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to add a textual commentary, note, or update to an infrastructure-related entity such as deployment tickets, incident dashboards, or configuration logs. It enables programmatic communication and documentation within infrastructure management workflows.", + "limitations": "This tool does not analyze or interpret the comment content, nor does it initiate other actions beyond sending the comment message. It assumes valid authentication and existing communication channels for specified resource IDs.", + "examples": [ + "Add a high-priority comment to the deployment ticket about a configuration fix.", + "Send a normal priority note to the incident report indicating monitoring completed.", + "Post a comment as the system bot updating log status." + ] + }, + "tags": [ + "infrastructure", + "comment", + "communication", + "cloud", + "incident-management", + "ticketing" + ], + "examples": [ + { + "inputJson": "{\"targetResourceId\":\"ticket-12345\",\"commentText\":\"Investigated the issue; root cause identified.\",\"authorId\":\"user-789\",\"priority\":\"high\"}", + "description": "Send a high priority comment about issue investigation results to a ticket." + }, + { + "inputJson": "{\"targetResourceId\":\"incident-2023\",\"commentText\":\"Monitoring resumed after brief outage.\",\"authorId\":\"monitoring-bot\",\"priority\":\"normal\"}", + "description": "Add a normal priority monitoring update to an incident report." + }, + { + "inputJson": "{\"targetResourceId\":\"deploy-log-456\",\"commentText\":\"Deployment completed successfully.\",\"authorId\":\"devops-user\"}", + "description": "Post a success note to a deployment log with default normal priority." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Comment", + "context": null + } + }, + { + "name": "infrastructure-management.formatSentence", + "description": "Formats a descriptive sentence about an infrastructure component or event for improved clarity, consistency, and readability. Accepts an input sentence related to infrastructure management and applies formatting options such as capitalization style, terminology standardization, and punctuation adjustments to produce a polished output sentence suitable for reports, logs, or alerts.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "inputSentence", + "type": "string", + "description": "The raw sentence related to infrastructure that needs formatting.", + "required": true, + "defaultValue": "" + }, + { + "name": "capitalizeStyle", + "type": "string", + "description": "Style for capitalization: 'sentence' (capitalize first word only), 'title' (capitalize major words), or 'none' (no capitalization changes).", + "required": false, + "defaultValue": "sentence" + }, + { + "name": "standardizeTerminology", + "type": "boolean", + "description": "Whether to standardize common infrastructure terms to predefined standard forms.", + "required": false, + "defaultValue": "true" + }, + { + "name": "punctuationCorrection", + "type": "boolean", + "description": "Whether to correct punctuation issues such as missing periods or excessive spaces.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length of the output sentence in characters. Longer sentences will be truncated with an ellipsis.", + "required": false, + "defaultValue": "200" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted sentence string and optional metadata about formatting applied." + }, + "aiAgent": { + "useCase": "Use this tool when a raw or unstructured sentence describing a cloud or physical infrastructure component, event, or status needs to be polished for inclusion in human-readable reports, dashboards, alerts, or documentation. It helps convert informal or inconsistent sentences into a standardized, clear format that improves communication clarity among infrastructure engineers or management.", + "limitations": "This tool does not perform semantic corrections or verify factual accuracy; it only formats the sentence's appearance. It cannot translate languages or interpret domain-specific jargon beyond generic terminology standardization.", + "examples": [ + "Format an alert message about a server outage for a logs dashboard.", + "Standardize status update sentences from different cloud providers into a consistent style.", + "Polish sentences describing network configuration changes for a management report." + ] + }, + "tags": [ + "formatting", + "infrastructure", + "sentence", + "text-processing", + "reporting", + "logs", + "alerts" + ], + "examples": [ + { + "inputJson": "{\"inputSentence\":\"the vm instance terminated unexpectedly\",\"capitalizeStyle\":\"sentence\",\"standardizeTerminology\":true,\"punctuationCorrection\":true,\"maxLength\":100}", + "description": "Format a sentence describing a virtual machine instance termination with standardized terminology and correct punctuation." + }, + { + "inputJson": "{\"inputSentence\":\"server rack #12 has power loss \",\"capitalizeStyle\":\"title\",\"standardizeTerminology\":true,\"punctuationCorrection\":true,\"maxLength\":100}", + "description": "Format a raw sentence about a server rack power loss with title capitalization and corrections." + }, + { + "inputJson": "{\"inputSentence\":\"network interface eth0 disabled due to error\",\"capitalizeStyle\":\"none\",\"standardizeTerminology\":false,\"punctuationCorrection\":false,\"maxLength\":50}", + "description": "Return the sentence with no capitalization or punctuation changes but apply max length limit." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Sentence", + "context": null + } + }, + { + "name": "infrastructure-management.renderWord", + "description": "Renders a given word as a stylized image suitable for use in infrastructure management dashboards or documentation. Accepts a text string and rendering options, processes the styling and formatting, and outputs a PNG or SVG image encoding of the rendered word.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "word", + "type": "string", + "description": "The text word to be rendered into an image.", + "required": true, + "defaultValue": "" + }, + { + "name": "fontSize", + "type": "number", + "description": "Font size in pixels for rendering the word.", + "required": false, + "defaultValue": "24" + }, + { + "name": "fontFamily", + "type": "string", + "description": "Font family to use, e.g., Arial, Roboto, monospace.", + "required": false, + "defaultValue": "Arial" + }, + { + "name": "color", + "type": "string", + "description": "Text color as a hex code or named color (e.g., #000000 or red).", + "required": false, + "defaultValue": "#000000" + }, + { + "name": "backgroundColor", + "type": "string", + "description": "Background color of the image, transparent if empty.", + "required": false, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "The output image format, either 'png' or 'svg'.", + "required": false, + "defaultValue": "png" + }, + { + "name": "bold", + "type": "boolean", + "description": "Whether to render the word in bold style.", + "required": false, + "defaultValue": "false" + }, + { + "name": "italic", + "type": "boolean", + "description": "Whether to render the word in italic style.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the image data as a base64-encoded string and the mime type of the image." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate visually styled textual elements for infrastructure management interfaces, reports, or documentation, where embedding rendered text images improves clarity or aesthetics. This is particularly useful when specific fonts or styling are needed that may not be supported natively in certain environments.", + "limitations": "This tool cannot render multiple words as a phrase with complex layout, nor does it support animations or interactive elements. It only renders single words as static images.", + "examples": [ + "Render the word 'Server' in bold red text with transparent background as PNG.", + "Render the word 'Node' in 30px italic font with blue color, output as SVG.", + "Render the word 'LoadBalancer' in default style with white background." + ] + }, + "tags": [ + "rendering", + "infrastructure", + "visualization", + "image-generation", + "text-to-image", + "ui-element" + ], + "examples": [ + { + "inputJson": "{\"word\":\"Server\",\"fontSize\":28,\"color\":\"#ff0000\",\"bold\":true,\"backgroundColor\":\"\",\"format\":\"png\"}", + "description": "Render the word 'Server' in bold red text with default font and transparent background as a PNG image." + }, + { + "inputJson": "{\"word\":\"Node\",\"fontSize\":30,\"fontFamily\":\"Roboto\",\"color\":\"blue\",\"italic\":true,\"format\":\"svg\"}", + "description": "Render the word 'Node' in 30px italic Roboto font, blue color output as SVG." + }, + { + "inputJson": "{\"word\":\"LoadBalancer\",\"fontSize\":24,\"backgroundColor\":\"#ffffff\"}", + "description": "Render the word 'LoadBalancer' with default font size 24px and white background in PNG format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Word", + "context": null + } + }, + { + "name": "infrastructure-management.formatParagraph", + "description": "Formats a paragraph of text typically used in infrastructure change logs, status reports, or documentation. Accepts raw paragraph text and applies consistent indentation, line width wrapping, optional bullet point formatting, and margin spacing. Outputs a well-structured formatted string suitable for display or logging.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The raw paragraph text that needs formatting.", + "required": true, + "defaultValue": "" + }, + { + "name": "lineWidth", + "type": "number", + "description": "Maximum line width before wrapping occurs. Lines longer than this number will be wrapped to next line.", + "required": false, + "defaultValue": "80" + }, + { + "name": "indentSpaces", + "type": "number", + "description": "Number of spaces to indent each line of the paragraph.", + "required": false, + "defaultValue": "4" + }, + { + "name": "bulletPoint", + "type": "string", + "description": "Optional bullet point or marker to prefix the paragraph lines. If empty, no bulleting is applied.", + "required": false, + "defaultValue": "" + }, + { + "name": "marginSpaces", + "type": "number", + "description": "Number of spaces as left margin before indentation begins, to separate from left boundary or UI elements.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted paragraph string as 'formattedText'." + }, + "aiAgent": { + "useCase": "Use this tool when generating or formatting infrastructure-related textual content such as status updates, maintenance logs, or documentation paragraphs where consistent readability and standard layout is required. It helps enforce style guidelines on text blocks before display or storage.", + "limitations": "Does not perform grammar or spell checking, nor does it parse technical content semantically. It focuses solely on whitespace, line wrapping, indentation, and optional bullet formatting.", + "examples": [ + "Format a raw status report paragraph into 80-char wrapped lines with 4-space indentation.", + "Add a bullet point '*' to each line of a maintenance note formatted with 2-space indentation.", + "Wrap and indent a paragraph without bullet points and with a 5-space left margin." + ] + }, + "tags": [ + "formatting", + "text", + "infrastructure", + "documentation", + "reporting", + "indentation", + "wrapping" + ], + "examples": [ + { + "inputJson": "{\"text\":\"The deployment was successful without any errors. All services are running smoothly and responding within acceptable latency thresholds.\",\"lineWidth\":60,\"indentSpaces\":2,\"bulletPoint\":\"-\",\"marginSpaces\":2}", + "description": "Format an update paragraph wrapped to 60 characters, with 2 space indent, prefixed by bullet points, and 2 space left margin." + }, + { + "inputJson": "{\"text\":\"Scheduled maintenance on the database cluster will occur at midnight UTC. Users may experience brief downtime.\",\"lineWidth\":50,\"indentSpaces\":4,\"bulletPoint\":\"\",\"marginSpaces\":0}", + "description": "Format a maintenance note paragraph wrapped to 50 characters with 4 spaces indentation and no bullet points or margin." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Paragraph", + "context": null + } + }, + { + "name": "infrastructure-management.formatCSV", + "description": "Formats CSV data for infrastructure configuration or inventory management by accepting raw CSV text and applying specified delimiters, quote characters, and line endings. Produces a clean, well-formatted CSV string suitable for use in cloud or physical infrastructure tools.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "csvData", + "type": "string", + "description": "The raw CSV data as a string to be formatted properly.", + "required": true, + "defaultValue": "" + }, + { + "name": "delimiter", + "type": "string", + "description": "The character to use as a field delimiter, e.g., comma, semicolon, or tab.", + "required": false, + "defaultValue": "," + }, + { + "name": "quoteChar", + "type": "string", + "description": "Character to wrap fields if they contain delimiters or special characters, e.g., double quote.", + "required": false, + "defaultValue": "\"" + }, + { + "name": "lineEnding", + "type": "string", + "description": "The line ending sequence used in the output CSV, e.g., \\n or \\r\\n.", + "required": false, + "defaultValue": "\n" + }, + { + "name": "headers", + "type": "array", + "description": "Optional ordered array of header names to enforce or reorder columns in output CSV.", + "required": false, + "defaultValue": "" + }, + { + "name": "trimWhitespace", + "type": "boolean", + "description": "Whether to trim leading and trailing whitespace from each field before formatting.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted CSV string under 'formattedCSV' key with consistent delimiters and line endings." + }, + "aiAgent": { + "useCase": "Use this tool when needing to clean, standardize, or reformat CSV data related to infrastructure resources, inventories, or configurations before importing into infrastructure management systems or cloud platforms. Ideal for normalizing varying CSV inputs to a consistent format.", + "limitations": "This tool does not validate CSV content correctness or schema conformity; it only formats the raw CSV text. It does not parse nested structures or convert CSV to other data formats.", + "examples": [ + "Format raw inventory CSV with semicolon delimiters and Windows line endings.", + "Standardize cloud resource CSV with specific headers and quote characters.", + "Clean CSV input by trimming whitespace and enforcing comma delimiters." + ] + }, + "tags": [ + "csv", + "formatting", + "infrastructure", + "data-cleaning", + "configuration", + "inventory" + ], + "examples": [ + { + "inputJson": "{\"csvData\":\"name, ip, role\\nserver1, 192.168.1.5,backup\",\"delimiter\":\",\",\"quoteChar\":\"\\\"\",\"lineEnding\":\"\\n\",\"headers\":[\"name\",\"ip\",\"role\"],\"trimWhitespace\":true}", + "description": "Format simple CSV with standard comma delimiter and header order." + }, + { + "inputJson": "{\"csvData\":\"hostname;ip address;status\\nrouter1;10.0.0.1;active\",\"delimiter\":\";\",\"quoteChar\":\"\\\"\",\"lineEnding\":\"\\r\\n\",\"headers\":[],\"trimWhitespace\":false}", + "description": "Format CSV using semicolon delimiter and Windows style line endings without trimming whitespace." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "CSV", + "context": null + } + }, + { + "name": "infrastructure-management.formatEndpoint", + "description": "Formats infrastructure endpoint definitions into standardized URL strings for use in cloud and on-prem systems. Accepts endpoint objects with properties like protocol, IP, port, path, and query parameters, and returns consistent, validated endpoint URLs suitable for service configuration and integration.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "endpoint", + "type": "object", + "description": "Endpoint definition object including protocol, IP, port, path, and optional query parameters.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeProtocol", + "type": "boolean", + "description": "Whether to include the protocol scheme (http, https) in the formatted output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "encodeQueryParameters", + "type": "boolean", + "description": "Whether to URL-encode query parameter keys and values.", + "required": false, + "defaultValue": "true" + }, + { + "name": "defaultPort", + "type": "number", + "description": "Default port to use if none specified in the endpoint object.", + "required": false, + "defaultValue": "80" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted endpoint URL string and a validation status indicating if the URL is syntactically valid." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert endpoint definitions from configuration objects into standardized URL strings for use in API calls, network monitoring, or infrastructure management tools. It helps ensure endpoints are correctly formatted, protocols included, and query parameters properly serialized and encoded where needed.", + "limitations": "Does not perform DNS resolution or endpoint availability checks. Cannot infer missing protocol unless explicitly set. Does not validate IP address reachability or security compliance.", + "examples": [ + "Format a given endpoint object into a URL string including protocol and encoded queries.", + "Generate a URL string from an endpoint lacking port info, providing a default port.", + "Format an endpoint excluding the protocol prefix for local network usage." + ] + }, + "tags": [ + "infrastructure", + "endpoint", + "url-formatting", + "networking", + "configuration", + "cloud", + "physical-infrastructure" + ], + "examples": [ + { + "inputJson": "{\"endpoint\":{\"protocol\":\"https\",\"ip\":\"192.168.1.100\",\"port\":443,\"path\":\"/api/v1/status\",\"query\":{\"verbose\":\"true\",\"token\":\"abc123\"}},\"includeProtocol\":true,\"encodeQueryParameters\":true,\"defaultPort\":443}", + "description": "Format a secure endpoint with query parameters encoded and protocol included." + }, + { + "inputJson": "{\"endpoint\":{\"ip\":\"10.0.0.5\",\"path\":\"/metrics\"},\"includeProtocol\":false,\"encodeQueryParameters\":true,\"defaultPort\":9100}", + "description": "Format a local endpoint without protocol, using default port 9100." + }, + { + "inputJson": "{\"endpoint\":{\"protocol\":\"http\",\"ip\":\"example.com\",\"port\":80,\"path\":\"/health\"},\"includeProtocol\":true,\"encodeQueryParameters\":false,\"defaultPort\":80}", + "description": "Format an HTTP endpoint with plain query parameters, protocol included." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Endpoint", + "context": null + } + }, + { + "name": "infrastructure-management.composeNotification", + "description": "Composes a structured notification message intended for infrastructure management contexts. Accepts inputs such as event details, severity, target audience, and preferred communication channels, then generates a formatted notification ready for dispatch via email, SMS, or other configured endpoints.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "eventTitle", + "type": "string", + "description": "The title or summary of the event triggering the notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "eventDetails", + "type": "string", + "description": "Detailed description of the event or alert to include in the notification body.", + "required": true, + "defaultValue": "" + }, + { + "name": "severityLevel", + "type": "string", + "description": "Severity of the event, e.g., 'critical', 'warning', 'info', used to adjust notification urgency and formatting.", + "required": false, + "defaultValue": "info" + }, + { + "name": "targetAudience", + "type": "array", + "description": "List of user roles or groups that should receive the notification (e.g., ['oncall', 'engineers']).", + "required": true, + "defaultValue": "" + }, + { + "name": "channel", + "type": "string", + "description": "Preferred communication channel for the notification (e.g., 'email', 'sms', 'slack').", + "required": false, + "defaultValue": "email" + }, + { + "name": "additionalData", + "type": "object", + "description": "Optional key-value pairs for custom fields or metadata to include in the notification.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the composed notification message, ready for sending, with fields for subject, body content, recipients, and channel." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to send alerts or informational messages related to infrastructure events, such as server downtime, deployment updates, or security incidents. It helps format and tailor notifications to the appropriate audience and channels to ensure timely and effective communication.", + "limitations": "This tool composes notification content but does not send or schedule message delivery. It also does not handle localization or translations automatically.", + "examples": [ + "Compose a critical alert notification for on-call engineers via SMS about a server outage.", + "Generate an informational deployment update sent to the engineering team by email.", + "Create a warning message to notify the security group on Slack about suspicious login attempts." + ] + }, + "tags": [ + "infrastructure", + "notification", + "alert", + "communication", + "management", + "automation" + ], + "examples": [ + { + "inputJson": "{\"eventTitle\":\"Server Outage Detected\",\"eventDetails\":\"The primary database server has been unresponsive since 03:15 UTC.\",\"severityLevel\":\"critical\",\"targetAudience\":[\"oncall\",\"dbadmin\"],\"channel\":\"sms\",\"additionalData\":{\"ticketId\":\"INC123456\"}}", + "description": "Compose a critical SMS notification alerting on-call and DB admins about a database outage with incident ticket reference." + }, + { + "inputJson": "{\"eventTitle\":\"Weekly Maintenance Completion\",\"eventDetails\":\"Scheduled maintenance on servers completed successfully.\",\"severityLevel\":\"info\",\"targetAudience\":[\"engineering\"],\"channel\":\"email\"}", + "description": "Create an informational email notification to the engineering team indicating successful completion of maintenance." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Notification", + "context": null + } + }, + { + "name": "infrastructure-management.generateTrend", + "description": "This tool analyzes historical infrastructure monitoring metrics (CPU, memory, network, disk I/O) over a specified time range, detecting trends and anomalies. It accepts time-series metric data and optional filters, processes to identify growth patterns or deviations, and outputs summarized trend insights with confidence scores for informed infrastructure management decisions.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "metrics", + "type": "array", + "description": "List of infrastructure metric names to analyze (e.g., CPUUtilization, NetworkIn).", + "required": true, + "defaultValue": "" + }, + { + "name": "startTime", + "type": "string", + "description": "ISO 8601 timestamp to start trend analysis period.", + "required": true, + "defaultValue": "" + }, + { + "name": "endTime", + "type": "string", + "description": "ISO 8601 timestamp to end trend analysis period.", + "required": true, + "defaultValue": "" + }, + { + "name": "aggregationInterval", + "type": "string", + "description": "Time interval for aggregating data points (e.g., 5m, 1h).", + "required": false, + "defaultValue": "1h" + }, + { + "name": "filters", + "type": "object", + "description": "Optional key-value pairs to filter data (e.g., by region, instance type).", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeAnomalies", + "type": "boolean", + "description": "Whether to detect and include anomaly detection in the trend output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "sensitivity", + "type": "number", + "description": "Sensitivity parameter for anomaly detection from 0 (low) to 1 (high).", + "required": false, + "defaultValue": "0.7" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing trend summaries for each metric, including trend type (upward, downward, stable), anomaly points, and confidence scores." + }, + "aiAgent": { + "useCase": "Use this tool when needing to understand infrastructure performance trends over time from historical metric data to aid capacity planning and issue detection. It helps identify performance degradations or improvements and predict future resource needs. AI agents should invoke it when analyzing monitoring data or automating infrastructure optimization decisions.", + "limitations": "This tool does not collect raw metric data itself and requires pre-collected, normalized time-series data. It does not perform root cause analysis beyond trend detection and anomaly flagging. Extremely sparse or noisy data may reduce accuracy.", + "examples": [ + "Generate trends for CPUUtilization and NetworkIn metrics over the last 7 days aggregated hourly.", + "Analyze memory and disk I/O metrics for a specific availability zone filtering region=us-west-2 between two timestamps.", + "Detect anomalies and trends in latency metrics over a 24-hour window with high sensitivity." + ] + }, + "tags": [ + "infrastructure", + "trend-analysis", + "monitoring", + "metrics", + "anomaly-detection", + "performance", + "capacity-planning" + ], + "examples": [ + { + "inputJson": "{\"metrics\":[\"CPUUtilization\",\"NetworkIn\"],\"startTime\":\"2024-05-01T00:00:00Z\",\"endTime\":\"2024-05-07T23:59:59Z\",\"aggregationInterval\":\"1h\",\"includeAnomalies\":true,\"sensitivity\":0.6}", + "description": "Analyze hourly CPU and Network input metrics for a full week to understand usage trends and detect anomalies." + }, + { + "inputJson": "{\"metrics\":[\"MemoryUsage\",\"DiskReadOps\"],\"startTime\":\"2024-06-01T00:00:00Z\",\"endTime\":\"2024-06-01T23:59:59Z\",\"filters\":{\"region\":\"us-east-1\"},\"includeAnomalies\":false}", + "description": "Generate daily trends of memory and disk read operations for resources in the us-east-1 region without anomaly detection." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Trend", + "context": null + } + }, + { + "name": "infrastructure-management.buildComponent", + "description": "Builds a reusable infrastructure component based on provided specifications. Accepts parameters defining the component's type, configuration, dependencies, and deployment environment. Processes the inputs to generate deployment-ready infrastructure code (e.g., Terraform, CloudFormation templates) and outputs metadata about the component for integration.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "componentType", + "type": "string", + "description": "Type of infrastructure component to build (e.g., virtual machine, database, load balancer).", + "required": true, + "defaultValue": "" + }, + { + "name": "configuration", + "type": "object", + "description": "Configuration details specific to the component type such as size, network settings, and version.", + "required": true, + "defaultValue": "" + }, + { + "name": "dependencies", + "type": "array", + "description": "List of other component IDs this component depends on to manage provisioning order.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "environment", + "type": "string", + "description": "Target deployment environment (e.g., production, staging, development).", + "required": true, + "defaultValue": "production" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output infrastructure as code format, such as 'Terraform' or 'CloudFormation'.", + "required": false, + "defaultValue": "Terraform" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated infrastructure code as a string, metadata about the component (ID, type), and deployment guidance." + }, + "aiAgent": { + "useCase": "Use this tool when you need to automate the creation of cloud or physical infrastructure components by generating standardized and reusable deployment configurations. It is ideal for integrating infrastructure as code generation in larger automation pipelines or infrastructure provisioning workflows.", + "limitations": "Does not handle actual deployment or lifecycle management; generates code artifacts that require separate provisioning tools. It does not verify compatibility with provider-specific constraints beyond general validation.", + "examples": [ + "Build a virtual machine component with a specified CPU and memory configuration for the production environment.", + "Generate an AWS RDS database component in Terraform format with given network settings and backups enabled.", + "Create a load balancer component depending on two existing virtual machine components for staging." + ] + }, + "tags": [ + "infrastructure", + "build", + "component", + "automation", + "IaC", + "cloud", + "deployment" + ], + "examples": [ + { + "inputJson": "{\"componentType\":\"virtualMachine\",\"configuration\":{\"cpuCores\":4,\"memoryGB\":16,\"os\":\"Ubuntu20.04\",\"diskSizeGB\":100},\"dependencies\":[],\"environment\":\"production\",\"outputFormat\":\"Terraform\"}", + "description": "Build a production Linux virtual machine component with 4 CPU cores and 16 GB RAM using Terraform." + }, + { + "inputJson": "{\"componentType\":\"database\",\"configuration\":{\"engine\":\"postgresql\",\"version\":\"13\",\"storageGB\":500,\"multiAz\":true},\"dependencies\":[],\"environment\":\"staging\",\"outputFormat\":\"CloudFormation\"}", + "description": "Build a staging PostgreSQL database component with multi-AZ support in CloudFormation format." + }, + { + "inputJson": "{\"componentType\":\"loadBalancer\",\"configuration\":{\"type\":\"application\",\"listeners\":[{\"port\":80,\"protocol\":\"HTTP\"}]},\"dependencies\":[\"vm-1234\",\"vm-5678\"],\"environment\":\"staging\",\"outputFormat\":\"Terraform\"}", + "description": "Build a staging application load balancer that depends on two virtual machines, output in Terraform." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Component", + "context": null + } + }, + { + "name": "infrastructure-management.generateSchema", + "description": "Generates infrastructure-as-code schemas based on user-defined infrastructure components and configurations. Accepts input describing cloud or physical resources, their properties, and relationships, then processes this input to generate JSON or YAML schema files compliant with formats like Terraform or CloudFormation. Outputs ready-to-use schema code for infrastructure deployment automation.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "infrastructureType", + "type": "string", + "description": "Type of infrastructure to generate schema for, e.g., 'terraform', 'cloudformation', or 'kubernetes'.", + "required": true, + "defaultValue": "" + }, + { + "name": "resources", + "type": "array", + "description": "Array of infrastructure resource objects specifying their type, properties, and relationships.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output file format: 'json' or 'yaml'.", + "required": true, + "defaultValue": "json" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include metadata (e.g., versioning, author info) in the generated schema.", + "required": false, + "defaultValue": "false" + }, + { + "name": "schemaVersion", + "type": "string", + "description": "Version of the schema specification to target, e.g., 'v1.0'.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated schema as a string and metadata about the schema such as format and version." + }, + "aiAgent": { + "useCase": "Use this tool when automating the creation of infrastructure-as-code templates based on specified resources and configurations. It helps translate abstract infrastructure designs into valid schema definitions for deployment tools like Terraform or CloudFormation, streamlining infrastructure provisioning and management.", + "limitations": "This tool cannot validate external dependencies or runtime infrastructure states, nor can it execute deployment. It only generates schema code from given resource definitions, so input must be accurate and complete for successful use.", + "examples": [ + "Generate a Terraform schema for a simple VPC and EC2 instance setup.", + "Produce a CloudFormation JSON schema for an S3 bucket with versioning enabled.", + "Create a Kubernetes YAML schema for deploying a set of containerized applications." + ] + }, + "tags": [ + "infrastructure", + "schema-generation", + "terraform", + "cloudformation", + "kubernetes", + "IaC", + "automation" + ], + "examples": [ + { + "inputJson": "{\"infrastructureType\":\"terraform\",\"resources\":[{\"type\":\"aws_vpc\",\"name\":\"main_vpc\",\"properties\":{\"cidr_block\":\"10.0.0.0/16\"}},{\"type\":\"aws_instance\",\"name\":\"web_server\",\"properties\":{\"ami\":\"ami-0abcdef1234567890\",\"instance_type\":\"t2.micro\",\"subnet_id\":\"${aws_subnet.main_subnet.id}\"}}],\"outputFormat\":\"json\",\"includeMetadata\":true,\"schemaVersion\":\"1.0\"}", + "description": "Generate a Terraform JSON schema with a VPC and an EC2 instance, including metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Schema", + "context": null + } + }, + { + "name": "infrastructure-management.createReply", + "description": "Generates a structured reply message for communication regarding infrastructure management tasks. Accepts inputs such as recipient, message content, context (e.g., issue type, request type), and urgency level, then formats and outputs a clear, polite, and context-aware reply suitable for email, chat, or ticketing systems.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "recipient", + "type": "string", + "description": "The name or identifier of the message recipient (e.g., user, team).", + "required": true, + "defaultValue": "" + }, + { + "name": "messageContent", + "type": "string", + "description": "The main content or details to be included in the reply message.", + "required": true, + "defaultValue": "" + }, + { + "name": "context", + "type": "string", + "description": "Context for the reply such as 'incident', 'request update', or 'general inquiry'.", + "required": false, + "defaultValue": "general inquiry" + }, + { + "name": "urgencyLevel", + "type": "string", + "description": "Urgency of the reply, e.g., 'low', 'medium', 'high'.", + "required": false, + "defaultValue": "medium" + }, + { + "name": "includeTechnicalDetails", + "type": "boolean", + "description": "Whether to include technical details or not in the reply.", + "required": false, + "defaultValue": "true" + }, + { + "name": "replyFormat", + "type": "string", + "description": "Format of the reply like 'email', 'chat', or 'ticket'.", + "required": false, + "defaultValue": "email" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted reply message text and metadata such as recipient and format type." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate polite, contextually appropriate replies related to infrastructure management communications, such as responding to incident reports, change requests, or status inquiries. It ensures replies are clear, appropriately detailed, and formatted for the specified communication channel.", + "limitations": "This tool does not send the reply message to recipients; it only generates the message content. It also cannot interpret highly specialized technical logs deeply, relying on provided context.", + "examples": [ + "Generate a reply to a network outage report to the operations team with high urgency including technical details.", + "Create a follow-up reply to a general infrastructure maintenance request via chat without too much technical jargon.", + "Formulate a polite response acknowledging receipt of a support ticket with medium urgency in an email format." + ] + }, + "tags": [ + "communication", + "infrastructure", + "reply", + "messaging", + "automation" + ], + "examples": [ + { + "inputJson": "{\"recipient\":\"Operations Team\",\"messageContent\":\"The network outage has been identified and a fix is in progress.\",\"context\":\"incident\",\"urgencyLevel\":\"high\",\"includeTechnicalDetails\":true,\"replyFormat\":\"email\"}", + "description": "Reply to an outage incident for the operations team with technical details included in an email format." + }, + { + "inputJson": "{\"recipient\":\"User123\",\"messageContent\":\"Your infrastructure upgrade request has been received and is scheduled.\",\"context\":\"request update\",\"urgencyLevel\":\"medium\",\"includeTechnicalDetails\":false,\"replyFormat\":\"chat\"}", + "description": "Follow-up reply to a user's upgrade request in a chat format without technical details." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Reply", + "context": null + } + }, + { + "name": "infrastructure-management.createAttachment", + "description": "Creates an attachment resource linking files or media to infrastructure entities such as virtual machines, containers, or physical devices. Accepts input including attachment name, type, the target infrastructure ID, and the file content or URL. Processes the file upload or link creation and returns attachment metadata including ID, storage location, and association details.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "attachmentName", + "type": "string", + "description": "A descriptive name for the attachment to identify it within the infrastructure context.", + "required": true, + "defaultValue": "" + }, + { + "name": "attachmentType", + "type": "string", + "description": "The media type or category of the attachment (e.g., 'logfile', 'screenshot', 'configDump').", + "required": true, + "defaultValue": "" + }, + { + "name": "targetResourceId", + "type": "string", + "description": "The unique identifier of the infrastructure resource (e.g., VM ID, container ID) to which the attachment links.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileContentBase64", + "type": "string", + "description": "Base64 encoded content of the file to be attached. Either this or fileUrl must be provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileUrl", + "type": "string", + "description": "Optional URL to a hosted file to link as an attachment. Either this or fileContentBase64 must be provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional additional description or notes about the attachment.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Metadata of the created attachment including its unique ID, associated resource, storage location, attachment name and type." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically add or link files/media (logs, screenshots, config files) to managed infrastructure resources for tracking, auditing or support purposes. It enables systematic management of infrastructure attachments by linking raw data or references to specific infrastructure entities.", + "limitations": "This tool does not handle large file streaming or storage policy enforcement; it only creates metadata and stores small attachments or references. It cannot modify or delete existing attachments.", + "examples": [ + "Create an attachment file containing diagnostic logs for a specific VM.", + "Attach a screenshot URL to a container resource for visual verification.", + "Add a configuration dump file content as an attachment to a physical server entity." + ] + }, + "tags": [ + "infrastructure", + "attachments", + "media", + "file-management", + "infrastructure-resources" + ], + "examples": [ + { + "inputJson": "{\"attachmentName\":\"Server Error Logs\",\"attachmentType\":\"logfile\",\"targetResourceId\":\"vm-12345\",\"fileContentBase64\":\"VGhpcyBpcyBhIHNhbXBsZSBsb2cgY29udGVudC4=\",\"description\":\"Error logs captured at the time of failure.\"}", + "description": "Attach a base64 encoded log file content to a virtual machine identified by vm-12345." + }, + { + "inputJson": "{\"attachmentName\":\"Container Screenshot\",\"attachmentType\":\"screenshot\",\"targetResourceId\":\"container-67890\",\"fileUrl\":\"https://example.com/screenshots/container-67890.png\",\"description\":\"Visual check of container state.\"}", + "description": "Attach a screenshot via URL to a container resource for visual verification." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Attachment", + "context": null + } + }, + { + "name": "infrastructure-management.createThread", + "description": "Creates a communication thread within an infrastructure management system for coordinating tasks, alerts, or incidents. Accepts inputs such as thread title, participants, initial message, and optional tags. Establishes a new thread resource and returns its unique identifier and metadata details.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "threadTitle", + "type": "string", + "description": "The title or subject of the communication thread to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "participants", + "type": "array", + "description": "List of participant identifiers (user IDs or service IDs) who will be part of the thread.", + "required": true, + "defaultValue": "" + }, + { + "name": "initialMessage", + "type": "string", + "description": "The first message content to start the thread conversation.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Optional tags or labels to categorize the thread, such as 'incident', 'deployment', or 'alert'.", + "required": false, + "defaultValue": "" + }, + { + "name": "priority", + "type": "string", + "description": "Optional priority level of the thread, e.g., 'low', 'normal', 'high'.", + "required": false, + "defaultValue": "normal" + } + ], + "returns": { + "type": "object", + "description": "An object containing the unique thread ID, creation timestamp, participants list, and thread metadata." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to initiate a structured communication channel for coordinating infrastructure-related events, such as incidents, deployments, or alerts, involving multiple participants. It facilitates tracking and managing communications tied to infrastructure management tasks.", + "limitations": "This tool does not send notifications to participants; separate notification tools should be used. It also does not handle message threading or replies beyond the initial message creation.", + "examples": [ + "Create a new incident communication thread titled 'Database Outage Alert' with members from the DB team.", + "Establish a thread for deployment coordination with the release engineering group.", + "Start a tagged communication channel for urgent security patch discussion with security and ops teams." + ] + }, + "tags": [ + "infrastructure", + "communication", + "thread", + "collaboration", + "incident-management", + "alerts" + ], + "examples": [ + { + "inputJson": "{\"threadTitle\":\"Server Maintenance Coordination\",\"participants\":[\"user123\",\"user456\"],\"initialMessage\":\"Starting scheduled server maintenance at 10 PM.\",\"tags\":[\"maintenance\",\"schedule\"],\"priority\":\"high\"}", + "description": "Creating a high priority thread for coordinating server maintenance among two users with specified tags." + }, + { + "inputJson": "{\"threadTitle\":\"Network Outage Incident\",\"participants\":[\"netops1\",\"netops2\",\"manager1\"],\"initialMessage\":\"Detected a network outage in zone 3.\",\"tags\":[\"incident\",\"network\"],\"priority\":\"high\"}", + "description": "Initiating a high priority incident thread involving network operations and management for outage handling." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Thread", + "context": null + } + }, + { + "name": "infrastructure-management.createHTML", + "description": "Creates customized HTML files to visualize infrastructure configurations and statuses. Accepts JSON objects describing servers, networks, and services, processes them into interactive HTML dashboards or reports, and outputs the complete HTML content as a string or file ready for deployment or viewing.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "infrastructureData", + "type": "object", + "description": "JSON object containing infrastructure details like servers, networks, and services with their statuses and properties.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeStyles", + "type": "boolean", + "description": "Flag indicating whether to embed default CSS styles directly into the generated HTML file for standalone usage.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputType", + "type": "string", + "description": "Format of the output: 'string' returns HTML content as a string, 'file' triggers saving to a specified path.", + "required": false, + "defaultValue": "string" + }, + { + "name": "filePath", + "type": "string", + "description": "File system path to save the HTML file if outputType is set to 'file'. Ignored if outputType is 'string'.", + "required": false, + "defaultValue": "" + }, + { + "name": "title", + "type": "string", + "description": "Title of the HTML document to be used in the tag and header section.", + "required": false, + "defaultValue": "Infrastructure Overview" + }, + { + "name": "enableInteractivity", + "type": "boolean", + "description": "Enable interactive elements in the HTML report such as collapsible sections and status filters.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated HTML content as a string and optionally the file path if saved to disk." + }, + "aiAgent": { + "useCase": "Use this tool when needing to convert raw infrastructure data described in JSON format into clean, readable, and interactive HTML reports or dashboards for monitoring, sharing, or documentation purposes. It simplifies the representation of complex infrastructure setups for human operators or stakeholders.", + "limitations": "This tool only generates static or lightly interactive HTML based on provided JSON data. It cannot pull live infrastructure data or manage infrastructure resources directly.", + "examples": [ + "Generate a standalone HTML dashboard showing current server statuses from JSON.", + "Create an HTML report saved to disk displaying network devices and their connections.", + "Produce a minimal styled HTML summary for a cloud infrastructure to embed in documentation." + ] + }, + "tags": [ + "infrastructure", + "HTML", + "reporting", + "visualization", + "dashboard", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"infrastructureData\":{\"servers\":[{\"name\":\"web01\",\"status\":\"healthy\"},{\"name\":\"db01\",\"status\":\"degraded\"}],\"networks\":[{\"name\":\"netA\",\"type\":\"private\"}]},\"title\":\"Prod Infra Status\",\"includeStyles\":true,\"enableInteractivity\":true,\"outputType\":\"string\"}", + "description": "Creates an interactive HTML dashboard as a string showing server health and network info with embedded styles." + }, + { + "inputJson": "{\"infrastructureData\":{\"servers\":[{\"name\":\"app01\",\"status\":\"healthy\",\"ip\":\"10.0.0.5\"}]},\"outputType\":\"file\",\"filePath\":\"/tmp/infra_report.html\",\"title\":\"App Server Report\",\"includeStyles\":false,\"enableInteractivity\":false}", + "description": "Generates a plain HTML file saved to disk for a single server infrastructure report without styles or interactivity." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "HTML", + "context": null + } + }, + { + "name": "infrastructure-management.createResume", + "description": "Generates a professional resume document tailored specifically for roles in infrastructure management. Accepts user profile data, including work experience, skills, certifications, education, and preferences, then formats and compiles a structured resume output in PDF or text format to support job applications in the infrastructure domain.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "fullName", + "type": "string", + "description": "The candidate's full name to be displayed on the resume.", + "required": true, + "defaultValue": "" + }, + { + "name": "contactInformation", + "type": "object", + "description": "Contact details including email, phone number, and optionally LinkedIn or GitHub URLs.", + "required": true, + "defaultValue": "" + }, + { + "name": "summary", + "type": "string", + "description": "A brief professional summary or objective statement for the resume.", + "required": false, + "defaultValue": "" + }, + { + "name": "workExperience", + "type": "array", + "description": "An array of work experience entries, each including job title, company name, start/end dates, and description of responsibilities/achievements.", + "required": true, + "defaultValue": "" + }, + { + "name": "education", + "type": "array", + "description": "Array of educational qualifications including degree, institution, and graduation year.", + "required": false, + "defaultValue": "" + }, + { + "name": "skills", + "type": "array", + "description": "List of relevant technical and soft skills related to infrastructure management.", + "required": true, + "defaultValue": "" + }, + { + "name": "certifications", + "type": "array", + "description": "List of relevant certifications with name and issuing organization.", + "required": false, + "defaultValue": "" + }, + { + "name": "resumeFormat", + "type": "string", + "description": "Desired output resume format, e.g., 'PDF' or 'Text'.", + "required": false, + "defaultValue": "PDF" + } + ], + "returns": { + "type": "object", + "description": "Returns a structured object containing the generated resume content as a base64-encoded string or plain text along with the format type." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create a formatted, job-ready resume document for candidates specializing in infrastructure management roles, transforming structured user career data into a professional resume format.", + "limitations": "Cannot verify the accuracy or truthfulness of the input data. Does not provide interview preparation or career counseling. Limited to infrastructure management domain context and may not cover other industries well.", + "examples": [ + "Generate a resume PDF for an infrastructure engineer including 5 years experience, AWS certifications, and cloud deployment skills.", + "Create a plain text resume highlighting network administration skills and recent education for an entry-level candidate.", + "Produce a formatted resume document with detailed work history and a professional summary for a DevOps manager." + ] + }, + "tags": [ + "resume", + "infrastructure", + "document-generation", + "career", + "job-application", + "pdf", + "text", + "infrastructure-management" + ], + "examples": [ + { + "inputJson": "{\"fullName\":\"Alex Morgan\",\"contactInformation\":{\"email\":\"alex.morgan@example.com\",\"phone\":\"+1234567890\",\"linkedin\":\"linkedin.com/in/alexmorgan\"},\"summary\":\"Experienced Infrastructure Engineer specializing in cloud and network solutions.\",\"workExperience\":[{\"jobTitle\":\"Senior Infrastructure Engineer\",\"companyName\":\"TechCorp\",\"startDate\":\"2018-05\",\"endDate\":\"2023-03\",\"description\":\"Designed and maintained cloud infrastructure using AWS and Azure.\"},{\"jobTitle\":\"Infrastructure Engineer\",\"companyName\":\"NetSolutions\",\"startDate\":\"2015-06\",\"endDate\":\"2018-04\",\"description\":\"Managed corporate network security and VPN deployments.\"}],\"education\":[{\"degree\":\"BSc Computer Science\",\"institution\":\"State University\",\"graduationYear\":2015}],\"skills\":[\"AWS\",\"Azure\",\"Docker\",\"Kubernetes\",\"Networking\",\"Linux\"],\"certifications\":[{\"name\":\"AWS Certified Solutions Architect\",\"issuer\":\"Amazon\"}],\"resumeFormat\":\"PDF\"}", + "description": "Generate a PDF resume for a senior infrastructure engineer with AWS certification, work history, and skills." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Resume", + "context": null + } + }, + { + "name": "monitoring.analyzeReference", + "description": "Analyzes system or application performance reference data to identify patterns, trends, or anomalies. Accepts input logs, metrics, or reference configuration snapshots, processes them using time-series and statistical analysis methods, and outputs a detailed report highlighting performance bottlenecks, deviations, or baseline comparisons.", + "category": "monitoring", + "parameters": [ + { + "name": "referenceData", + "type": "object", + "description": "Structured performance reference data including logs, metrics, or snapshot objects to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeRangeStart", + "type": "string", + "description": "ISO 8601 start time for the analysis window. Optional, defaults to the earliest timestamp in the data.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeRangeEnd", + "type": "string", + "description": "ISO 8601 end time for the analysis window. Optional, defaults to the latest timestamp in the data.", + "required": false, + "defaultValue": "" + }, + { + "name": "analysisTypes", + "type": "array", + "description": "List of analysis methods to apply, such as ['trend','anomaly','baselineComparison'].", + "required": false, + "defaultValue": "[\"trend\",\"anomaly\"]" + }, + { + "name": "sensitivityThreshold", + "type": "number", + "description": "Threshold parameter (0-1) controlling sensitivity of anomaly detection, higher means more sensitive.", + "required": false, + "defaultValue": "0.75" + }, + { + "name": "includeRawData", + "type": "boolean", + "description": "Whether to include raw reference data in the output for further inspection.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing summary, detected anomalies, trend analysis results, and possibly raw data if requested." + }, + "aiAgent": { + "useCase": "Use this tool when performance reference data such as logs, metrics, or snapshots need to be analyzed to identify performance issues, unusual deviations from baseline, or trends over time. Useful for root cause analysis, capacity planning, and monitoring baseline shifts.", + "limitations": "This tool does not perform real-time monitoring or alerting. It analyzes static reference data snapshots or logs and does not integrate with live streaming sources.", + "examples": [ + "Analyze performance logs from last week for anomalies and trend analysis.", + "Compare current reference snapshot against historical baseline to detect deviations.", + "Generate a report of performance trends and anomalies in given metric data within a specific time window." + ] + }, + "tags": [ + "monitoring", + "performance", + "analysis", + "reference data", + "anomaly detection", + "trend analysis" + ], + "examples": [ + { + "inputJson": "{\"referenceData\":{\"logs\":[{\"timestamp\":\"2024-05-01T00:00:00Z\",\"cpu\":75,\"memory\":60},{\"timestamp\":\"2024-05-01T01:00:00Z\",\"cpu\":82,\"memory\":63}]},\"timeRangeStart\":\"2024-05-01T00:00:00Z\",\"timeRangeEnd\":\"2024-05-01T02:00:00Z\",\"analysisTypes\":[\"anomaly\",\"trend\"],\"sensitivityThreshold\":0.8,\"includeRawData\":false}", + "description": "Analyze CPU and memory logs over a 2-hour window to detect anomalies and trends with medium-high sensitivity." + }, + { + "inputJson": "{\"referenceData\":{\"snapshot\":{\"cpuBaseline\":70,\"memoryBaseline\":55,\"iopsBaseline\":100}},\"analysisTypes\":[\"baselineComparison\"],\"includeRawData\":true}", + "description": "Compare current snapshot data against baseline reference values to identify deviations, including raw data in the report." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Reference", + "context": null + } + }, + { + "name": "monitoring.analyzeHeading", + "description": "Analyzes the heading elements extracted from application logs or monitoring dashboards to evaluate their structure, frequency, and relevance. Accepts an array of text headings, processes them to detect patterns and inconsistencies, and outputs a summary report including counts, anomalies, and recommendations for optimized monitoring dashboards.", + "category": "monitoring", + "parameters": [ + { + "name": "headings", + "type": "array", + "description": "An array of heading strings extracted from logs or monitoring dashboards to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "minOccurrence", + "type": "number", + "description": "Minimum number of occurrences for a heading to be considered significant in the analysis.", + "required": false, + "defaultValue": "1" + }, + { + "name": "detectAnomalies", + "type": "boolean", + "description": "Flag to enable detection and reporting of heading anomalies or irregular patterns.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "Optional language code (e.g., 'en') for heading text processing and normalization.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "A structured report summarizing heading analysis including total unique headings, frequency distribution, anomalies found, and improvement recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when you need to analyze the heading structure of logs, dashboards, or monitoring reports to identify patterns, inconsistencies, or opportunities to improve monitoring clarity and effectiveness. Useful for monitoring system optimizations and quality checks of generated reports.", + "limitations": "This tool does not analyze the content beyond heading text structure and frequency; it cannot interpret the semantic meaning beyond simple normalization or provide deep content insights.", + "examples": [ + "Analyze headings from log files to find missing or redundant sections.", + "Detect anomalies in monitoring dashboard headings indicating misconfigurations.", + "Summarize frequency of event headings to prioritize monitoring focus." + ] + }, + "tags": [ + "monitoring", + "analysis", + "headings", + "logs", + "dashboards", + "pattern-detection", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"headings\":[\"Error Logs\",\"Warning Alerts\",\"Info Messages\",\"Error Logs\",\"Debug Info\",\"Warning Alerts\"]}", + "description": "Analyze frequency and anomalies of typical monitoring log headings." + }, + { + "inputJson": "{\"headings\":[\"CPU Usage\",\"Memory Usage\",\"Disk I/O\",\"CPU Usage\",\"Network Traffic\", \"Memory Usage\"]}", + "description": "Analyze headings from a system metrics dashboard to determine redundancy and frequency." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Heading", + "context": null + } + }, + { + "name": "monitoring.uploadCSV", + "description": "Uploads a CSV file containing system or application performance metrics to a monitoring platform. Accepts CSV data as a string or file path, parses each row as a metric record, validates the format, and sends the data to the configured monitoring backend. Returns a summary of the upload result including success count and any errors encountered.", + "category": "monitoring", + "parameters": [ + { + "name": "csvData", + "type": "string", + "description": "The raw CSV content as a string containing monitoring metrics data to upload.", + "required": false, + "defaultValue": "" + }, + { + "name": "filePath", + "type": "string", + "description": "Path to the CSV file containing the metrics data to upload. Required if csvData is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "delimiter", + "type": "string", + "description": "The delimiter used in the CSV file (e.g., comma, semicolon).", + "required": false, + "defaultValue": "," + }, + { + "name": "hasHeader", + "type": "boolean", + "description": "Specifies whether the CSV data includes a header row.", + "required": false, + "defaultValue": "true" + }, + { + "name": "monitoringEndpoint", + "type": "string", + "description": "The URL or address of the monitoring service endpoint to which the CSV data will be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Authentication token or API key for authorizing the upload request to the monitoring service.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object summarizing the upload outcome, including total records processed, successful uploads, and details of any errors." + }, + "aiAgent": { + "useCase": "Use this tool when you have system or application performance data in CSV format that needs to be imported into a monitoring platform for analysis or alerting. Ideal for integrating legacy data exports or bulk metric submissions.", + "limitations": "This tool does not parse non-CSV formats or perform deep data validation beyond basic CSV structure integrity. It does not analyze or visualize data.", + "examples": [ + "Upload CSV metrics file located at '/tmp/metrics.csv' to the monitoring server https://monitoring.example.com/api/ingest with API key.", + "Upload raw CSV data string containing performance metrics, specifying semicolon as delimiter and no header row.", + "Retry uploading CSV data with authentication token for access-controlled monitoring endpoint." + ] + }, + "tags": [ + "monitoring", + "upload", + "CSV", + "metrics", + "performance", + "data ingestion" + ], + "examples": [ + { + "inputJson": "{\"filePath\":\"/data/performance_metrics.csv\",\"monitoringEndpoint\":\"https://monitoring.example.com/api/v1/upload\",\"authToken\":\"abcd1234\"}", + "description": "Upload a CSV file located at /data/performance_metrics.csv to a remote monitoring API using an auth token." + }, + { + "inputJson": "{\"csvData\":\"timestamp,cpu_usage,memory_usage\\n2024-05-01T12:00:00Z,55,70\",\"hasHeader\":true,\"monitoringEndpoint\":\"https://metrics.example.org/upload\"}", + "description": "Upload raw CSV string data of CPU and memory usage with headers to the specified monitoring endpoint." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "CSV", + "context": null + } + }, + { + "name": "monitoring.analyzeIncident", + "description": "This tool accepts detailed input about a security incident, such as logs, alerts, incident metadata, and context information. It analyzes the incident data using correlation rules, anomaly detection, and threat intelligence to identify root causes, impacted assets, attack vectors, and severity. It then produces a comprehensive incident analysis report with actionable mitigation steps.", + "category": "monitoring", + "parameters": [ + { + "name": "incidentId", + "type": "string", + "description": "Unique identifier of the incident to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "logData", + "type": "array", + "description": "Array of log entries relevant to the incident analysis. Each entry is an object containing timestamp, source, message, and other fields.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "alerts", + "type": "array", + "description": "List of security alerts associated with the incident, each alert includes type, severity, source, and timestamp.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "incidentMetadata", + "type": "object", + "description": "Additional metadata about the incident such as reported time, reporter, affected systems, current status.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "contextInfo", + "type": "object", + "description": "Contextual information like network topology, asset inventory, known vulnerabilities relevant to this incident.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "correlationRules", + "type": "array", + "description": "Optional set of correlation rules to customize incident analysis behavior. Each rule defines patterns to detect complex incidents.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeMitigationAdvice", + "type": "boolean", + "description": "Flag to include recommended mitigation and remediation steps in the output report.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing summary, identified root causes, impacted assets, attack vectors, severity, timeline, and mitigation recommendations if requested." + }, + "aiAgent": { + "useCase": "Use this tool when a detailed security incident has been detected and relevant data (logs, alerts, metadata) is available for analysis. It helps identify root causes, affected assets, severity, and recommended response actions to assist security teams or automated systems in incident response workflows.", + "limitations": "The tool requires sufficient input data to produce accurate analysis and cannot replace hands-on forensic investigation or manual contextual judgement. It may not detect incidents outside provided data or rule definitions.", + "examples": [ + "Analyze the incident with ID 'INC-12345' using its logs and alert data to produce a root cause analysis report.", + "Given logs and alert metadata from a detected intrusion attempt, analyze the incident for attack vectors and mitigation steps.", + "Generate a detailed incident analysis including timeline and severity assessment for the incident ID '20240601-SEC'" + ] + }, + "tags": [ + "monitoring", + "security", + "incident-analysis", + "root-cause", + "alert-correlation", + "threat-detection", + "remediation" + ], + "examples": [ + { + "inputJson": "{\"incidentId\":\"INC-20240601-A1\",\"logData\":[{\"timestamp\":\"2024-06-01T12:00:00Z\",\"source\":\"firewall\",\"message\":\"Blocked connection from suspicious IP\"}],\"alerts\":[{\"type\":\"intrusion\",\"severity\":\"high\",\"source\":\"IDS\",\"timestamp\":\"2024-06-01T12:01:00Z\"}],\"incidentMetadata\":{\"reportedTime\":\"2024-06-01T12:05:00Z\",\"status\":\"open\",\"affectedSystems\":[\"db-server-1\"]},\"contextInfo\":{\"networkTopology\":\"vpc-12, subnet-34\",\"assetInventory\":[{\"id\":\"db-server-1\",\"os\":\"linux\",\"criticality\":\"high\"}]},\"includeMitigationAdvice\":true}", + "description": "Analyze a security incident reported on June 1, 2024, using logs from a firewall, intrusion detection alerts, incident metadata, and asset context to produce a detailed analysis report including mitigation advice." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Incident", + "context": null + } + }, + { + "name": "monitoring.analyzeThread", + "description": "Analyzes thread activity logs to identify performance bottlenecks and synchronization issues. Accepts thread dump data or runtime thread profiling information as input, processes to detect deadlocks, thread states distribution, CPU usage per thread, and outputs a detailed report highlighting potential threading problems and optimization suggestions.", + "category": "monitoring", + "parameters": [ + { + "name": "threadData", + "type": "string", + "description": "Raw thread dump or profiling data to analyze, in standardized text or JSON format.", + "required": true, + "defaultValue": "" + }, + { + "name": "analysisDepth", + "type": "number", + "description": "Level of detail for analysis; higher values yield more thorough checks but increase processing time.", + "required": false, + "defaultValue": "1" + }, + { + "name": "detectDeadlocks", + "type": "boolean", + "description": "Whether to perform deadlock detection during analysis.", + "required": false, + "defaultValue": "true" + }, + { + "name": "filterThreads", + "type": "array", + "description": "List of thread names or IDs to focus analysis on; if empty, all threads are analyzed.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "timeWindow", + "type": "object", + "description": "Optional time window with 'start' and 'end' ISO8601 timestamps to limit analysis to specific period.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "AnalysisReport object containing summaries of thread states, detected deadlocks, CPU and wait times per thread, and recommended actions for optimization." + }, + "aiAgent": { + "useCase": "Use this tool when diagnosing multi-threading issues in applications, such as detecting thread contention, deadlocks, or CPU hogging threads from thread dumps or profiling outputs. It helps pinpoint threading problems for performance tuning and reliability enhancement.", + "limitations": "Cannot analyze threads without proper thread dump or profiling data input. Does not simulate thread behavior or fix issues automatically; only provides analysis based on supplied data.", + "examples": [ + "Analyze thread dump from production server to find deadlocks.", + "Inspect profiling logs filtered to worker threads to identify CPU bottlenecks.", + "Examine threads active during a specific time window showing slow response times." + ] + }, + "tags": [ + "monitoring", + "thread", + "analysis", + "performance", + "deadlock", + "profiling" + ], + "examples": [ + { + "inputJson": "{\"threadData\":\"{\\\"threads\\\":[{\\\"id\\\":101,\\\"state\\\":\\\"RUNNABLE\\\",\\\"cpuTimeMs\\\":350,\\\"name\\\":\\\"worker-1\\\"},{\\\"id\\\":102,\\\"state\\\":\\\"WAITING\\\",\\\"cpuTimeMs\\\":20,\\\"name\\\":\\\"worker-2\\\"}]}\"}", + "description": "Analyze a simple JSON thread dump for CPU usage and thread states." + }, + { + "inputJson": "{\"threadData\":\"Full thread dump text from JVM\",\"detectDeadlocks\":true,\"filterThreads\":[\"main\",\"worker-1\"]}", + "description": "Analyze a full JVM thread dump focusing on main and worker-1 threads including deadlock detection." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Thread", + "context": null + } + }, + { + "name": "monitoring.analyzeReply", + "description": "Analyzes communication reply data, including content, timing, and metadata, to assess response performance, sentiment, and potential issues. Accepts raw reply text along with optional metadata for context; performs linguistic and temporal analysis; outputs a structured report detailing response quality, sentiment scores, and delay metrics.", + "category": "monitoring", + "parameters": [ + { + "name": "replyText", + "type": "string", + "description": "The raw text content of the reply message to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted timestamp when the reply was sent, used for delay and timing analysis.", + "required": false, + "defaultValue": "" + }, + { + "name": "originalMessageTimestamp", + "type": "string", + "description": "ISO 8601 timestamp of the original message to which this reply corresponds, for calculating response latency.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional metadata about the reply, such as sender ID, channel, or message type.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An analysis report containing response latency, sentiment scores, language insights, and quality indicators for the supplied reply." + }, + "aiAgent": { + "useCase": "Use when needing to analyze reply messages in communication monitoring systems to evaluate responsiveness, sentiment, and message quality. Helpful for customer support quality checks, social media monitoring, or internal team communications analysis.", + "limitations": "Does not generate or modify reply content; analysis accuracy depends on completeness and quality of input data; does not handle multimedia content within replies.", + "examples": [ + "Analyze sentiment and response time for a customer service reply.", + "Evaluate if a support reply was prompt and positive in tone.", + "Monitor communication channels to identify slow or negative replies." + ] + }, + "tags": [ + "monitoring", + "analysis", + "communication", + "reply", + "sentiment", + "performance" + ], + "examples": [ + { + "inputJson": "{\"replyText\":\"Thank you for your quick response, I appreciate the help!\",\"timestamp\":\"2024-04-26T15:24:00Z\",\"originalMessageTimestamp\":\"2024-04-26T15:20:00Z\",\"metadata\":{\"senderId\":\"agent123\",\"channel\":\"email\"}}", + "description": "Analyze a customer support reply sent 4 minutes after the original message to assess sentiment and response delay." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Reply", + "context": null + } + }, + { + "name": "monitoring.analyzeXML", + "description": "Analyzes XML data inputs typically from system or application monitoring logs to extract key performance metrics, identify anomalies, and summarize performance statistics. It accepts raw XML strings or file paths, applies customizable XPath queries or schema validations, and returns structured analysis results highlighting system health indicators.", + "category": "monitoring", + "parameters": [ + { + "name": "xmlInput", + "type": "string", + "description": "The raw XML data string or a filepath to an XML file containing monitoring data to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "xpathQueries", + "type": "array", + "description": "List of XPath query strings applied to extract specific nodes or values from the XML input for focused analysis.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "validateSchema", + "type": "boolean", + "description": "Whether to validate the XML input against a provided XML schema to ensure format correctness before analysis.", + "required": false, + "defaultValue": "false" + }, + { + "name": "schemaPath", + "type": "string", + "description": "File path to the XML Schema Definition (XSD) used for validating the XML input; required if validateSchema is true.", + "required": false, + "defaultValue": "" + }, + { + "name": "anomalyThreshold", + "type": "number", + "description": "Numeric threshold value for detecting anomalies in metric values extracted from XML; used in anomaly detection algorithms.", + "required": false, + "defaultValue": "0.8" + }, + { + "name": "summaryMetrics", + "type": "array", + "description": "List of metric names to include in the summary output; if empty, all extracted metrics are summarized.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing extracted metrics, anomaly detection results, validation status, and summary statistics based on the XML analysis." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to process XML-based monitoring data to extract structured performance metrics, perform anomaly detection on system logs, or validate XML log formats. It is ideal for environments where monitoring outputs are XML formatted and require detailed metric extraction or schema validation before higher-level reasoning.", + "limitations": "Does not parse non-XML formats, cannot correct XML errors beyond reporting validation issues, requires well-formed XML input, and anomaly detection is limited to threshold-based heuristic models rather than advanced ML techniques.", + "examples": [ + "Analyze an XML monitoring log file to extract CPU and memory usage metrics.", + "Validate the XML monitoring data against a standard schema and summarize error rates.", + "Detect anomalies in XML-based system metrics using custom XPath queries and a defined threshold." + ] + }, + "tags": [ + "monitoring", + "XML", + "analysis", + "anomaly detection", + "performance", + "system logs" + ], + "examples": [ + { + "inputJson": "{\"xmlInput\":\"<monitoring><cpu>75</cpu><memory>63</memory></monitoring>\",\"xpathQueries\":[\"/monitoring/cpu\",\"/monitoring/memory\"],\"validateSchema\":false,\"anomalyThreshold\":70,\"summaryMetrics\":[\"cpu\",\"memory\"]}", + "description": "Extract CPU and memory usage from XML string and detect if values exceed anomaly thresholds." + }, + { + "inputJson": "{\"xmlInput\":\"/var/logs/monitoringData.xml\",\"validateSchema\":true,\"schemaPath\":\"/schemas/monitoring.xsd\",\"anomalyThreshold\":85}", + "description": "Validate XML monitoring log file against schema and detect anomalies using threshold 85." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "XML", + "context": null + } + }, + { + "name": "monitoring.downloadCSV", + "description": "Downloads monitoring data as a CSV file based on specified time range and metrics filters. Accepts parameters like start and end timestamps, a list of monitored metrics, and output formatting options. Returns a CSV-formatted string representing the requested monitoring data for further analysis or storage.", + "category": "monitoring", + "parameters": [ + { + "name": "startTime", + "type": "string", + "description": "ISO 8601 formatted start timestamp for the monitoring data range (e.g., '2024-01-01T00:00:00Z').", + "required": true, + "defaultValue": "" + }, + { + "name": "endTime", + "type": "string", + "description": "ISO 8601 formatted end timestamp for the monitoring data range, must be after startTime.", + "required": true, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "List of metric names (strings) to include in the CSV export, e.g., ['cpu_usage','memory_usage']. If empty, all available metrics are downloaded.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "delimiter", + "type": "string", + "description": "Delimiter character used in the CSV output (default is comma ',').", + "required": false, + "defaultValue": "," + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include header row in the CSV output indicating column names.", + "required": false, + "defaultValue": "true" + }, + { + "name": "timezone", + "type": "string", + "description": "IANA timezone name for timestamp formatting in CSV. Defaults to UTC if not specified.", + "required": false, + "defaultValue": "UTC" + } + ], + "returns": { + "type": "object", + "description": "Object containing 'csvData' string with monitoring data formatted as CSV, ready for download or saving." + }, + "aiAgent": { + "useCase": "Use this tool when needing to extract monitoring metrics data over a specific time range for offline analysis, reporting, or system auditing. It supports filtering by metrics and customization of CSV formatting, enabling AI agents to automate data retrieval for diagnostics or trend analysis.", + "limitations": "This tool does not aggregate or analyze data beyond formatting. It requires valid time ranges and existing metric names; it cannot generate new metrics or transform data beyond CSV formatting.", + "examples": [ + "Download CPU and memory usage metrics from last 24 hours as CSV with headers.", + "Export all available metrics data between two dates with semicolon delimiters.", + "Retrieve monitoring data timestamps formatted in a specific time zone without headers." + ] + }, + "tags": [ + "monitoring", + "data-export", + "CSV", + "metrics", + "performance", + "timeseries" + ], + "examples": [ + { + "inputJson": "{\"startTime\":\"2024-05-01T00:00:00Z\",\"endTime\":\"2024-05-01T23:59:59Z\",\"metrics\":[\"cpu_usage\",\"memory_usage\"],\"delimiter\":\",\",\"includeHeaders\":true,\"timezone\":\"UTC\"}", + "description": "Download CPU and memory usage metrics for May 1, 2024, as CSV with default comma delimiter and headers." + }, + { + "inputJson": "{\"startTime\":\"2024-04-25T00:00:00Z\",\"endTime\":\"2024-04-26T00:00:00Z\",\"metrics\":[],\"delimiter\":\";\",\"includeHeaders\":true,\"timezone\":\"America/New_York\"}", + "description": "Download all available metrics for April 25, 2024, using semicolon as delimiter and timestamps converted to US Eastern Time." + }, + { + "inputJson": "{\"startTime\":\"2024-06-10T08:00:00Z\",\"endTime\":\"2024-06-10T12:00:00Z\",\"metrics\":[\"disk_io\"],\"delimiter\":\",\",\"includeHeaders\":false,\"timezone\":\"UTC\"}", + "description": "Download disk IO metric data from morning hours on June 10th, 2024 as CSV without headers." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "CSV", + "context": null + } + }, + { + "name": "monitoring.analyzeHTML", + "description": "This tool accepts raw HTML content as input and performs comprehensive analysis to assess frontend performance-related metrics such as DOM size, number of inline styles, external resource links, script usage, and accessibility issues. It returns a detailed report highlighting potential bottlenecks and optimization suggestions to improve web page load and rendering performance.", + "category": "monitoring", + "parameters": [ + { + "name": "htmlContent", + "type": "string", + "description": "The raw HTML content of the webpage to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "analyzeResources", + "type": "boolean", + "description": "Flag to indicate whether to analyze linked external resources like CSS and JS files.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxDomNodeCount", + "type": "number", + "description": "Threshold number of DOM nodes above which a warning is issued regarding DOM size and complexity.", + "required": false, + "defaultValue": "1500" + }, + { + "name": "checkAccessibility", + "type": "boolean", + "description": "Whether to include basic accessibility checks in the analysis (e.g., alt attributes, ARIA roles).", + "required": false, + "defaultValue": "true" + }, + { + "name": "resourceTimeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait when fetching external resources for analysis.", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "A detailed analysis report object containing metrics such as domNodeCount, inlineStyleCount, externalCssCount, scriptCount, accessibilityIssues, resourceLoadWarnings, and optimizationRecommendations." + }, + "aiAgent": { + "useCase": "This tool is useful when an AI agent needs to evaluate the quality and performance factors of a webpage's HTML content for monitoring, debugging, or optimization purposes. Scenarios include analyzing server-rendered page snapshots, automated frontend performance audits, or integration into real-time monitoring systems to catch performance regressions.", + "limitations": "Cannot execute or simulate JavaScript, so cannot analyze runtime-rendered DOM or dynamic content generated client-side. Accessibility checks are basic and do not replace full audits. External resource analysis depends on network availability and timeouts.", + "examples": [ + "Analyze the HTML source of the homepage to detect performance bottlenecks.", + "Check if the given HTML has too many inline styles or scripts for optimization recommendations.", + "Perform a basic accessibility scan and resource usage summary on the provided HTML content." + ] + }, + "tags": [ + "monitoring", + "performance", + "html", + "frontend", + "accessibility", + "optimization", + "analysis" + ], + "examples": [ + { + "inputJson": "{\"htmlContent\":\"<html><head><title>TestLogo\",\"analyzeResources\":true,\"maxDomNodeCount\":1000,\"checkAccessibility\":true,\"resourceTimeoutSeconds\":3}", + "description": "Analyze a simple HTML page with an inline style, a linked script, and an image with alt text to get DOM counts, resource usage, and accessibility issues." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "HTML", + "context": null + } + }, + { + "name": "monitoring.renderImage", + "description": "This tool accepts time-series monitoring data and configuration parameters for visualization, processes the data to generate performance charts, and outputs a rendered image (PNG or SVG) representing system or application metrics for analysis or reporting.", + "category": "monitoring", + "parameters": [ + { + "name": "metricData", + "type": "array", + "description": "An array of time-series data points to be visualized, where each point includes timestamp and value.", + "required": true, + "defaultValue": "" + }, + { + "name": "chartType", + "type": "string", + "description": "Type of chart to render such as 'line', 'bar', or 'area'.", + "required": true, + "defaultValue": "line" + }, + { + "name": "width", + "type": "number", + "description": "Width of the output image in pixels.", + "required": false, + "defaultValue": "800" + }, + { + "name": "height", + "type": "number", + "description": "Height of the output image in pixels.", + "required": false, + "defaultValue": "600" + }, + { + "name": "title", + "type": "string", + "description": "Title text displayed on the chart.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeRange", + "type": "object", + "description": "The start and end timestamps defining the time range of the data to render, e.g., {\"start\": \"2024-01-01T00:00:00Z\", \"end\": \"2024-01-01T01:00:00Z\"}.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output image, either 'png' or 'svg'.", + "required": false, + "defaultValue": "png" + }, + { + "name": "legendVisible", + "type": "boolean", + "description": "Whether to display a legend on the chart.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the base64 encoded image data and metadata including image format and dimensions." + }, + "aiAgent": { + "useCase": "Use this tool when needing to generate visual image representations of monitoring data for system or application performance directly as image files for dashboards, reports, or alerts that require embedded charts.", + "limitations": "This tool cannot perform data collection or alerting and does not generate interactive or real-time updating charts. It only produces static image snapshots based on the provided input data.", + "examples": [ + "Render a line chart PNG image of CPU usage from monitoring data between specified timestamps.", + "Generate an SVG area chart image showing memory consumption with custom width and height.", + "Create a bar chart image with legend disabled and a chart title for disk IO metrics." + ] + }, + "tags": [ + "monitoring", + "visualization", + "image rendering", + "performance metrics", + "charts", + "time-series", + "system monitoring", + "application monitoring" + ], + "examples": [ + { + "inputJson": "{\"metricData\":[{\"timestamp\":\"2024-04-01T12:00:00Z\",\"value\":45},{\"timestamp\":\"2024-04-01T12:01:00Z\",\"value\":47},{\"timestamp\":\"2024-04-01T12:02:00Z\",\"value\":43}],\"chartType\":\"line\",\"width\":1024,\"height\":768,\"title\":\"CPU Usage Over Time\",\"outputFormat\":\"png\",\"legendVisible\":true}", + "description": "Render a line chart PNG image of CPU usage data with specified size and title." + }, + { + "inputJson": "{\"metricData\":[{\"timestamp\":\"2024-04-01T00:00:00Z\",\"value\":150},{\"timestamp\":\"2024-04-01T01:00:00Z\",\"value\":175}],\"chartType\":\"bar\",\"outputFormat\":\"svg\",\"legendVisible\":false}", + "description": "Generate an SVG bar chart image of arbitrary metric data without legend." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Image", + "context": null + } + }, + { + "name": "monitoring.renderWord", + "description": "Renders a single word as a visual element with customizable styling options such as font size, color, and background, primarily for monitoring dashboards or alert displays. Accepts the word as input along with style parameters and outputs a styled HTML snippet or SVG string for embedding in monitoring interfaces.", + "category": "monitoring", + "parameters": [ + { + "name": "word", + "type": "string", + "description": "The word text to render visually.", + "required": true, + "defaultValue": "" + }, + { + "name": "fontSize", + "type": "number", + "description": "Font size in pixels for rendering the word.", + "required": false, + "defaultValue": "14" + }, + { + "name": "fontColor", + "type": "string", + "description": "Hex or standard color name for the word's font color.", + "required": false, + "defaultValue": "#000000" + }, + { + "name": "backgroundColor", + "type": "string", + "description": "Hex or standard color name for the background behind the word.", + "required": false, + "defaultValue": "transparent" + }, + { + "name": "fontWeight", + "type": "string", + "description": "Font weight style like 'normal', 'bold', or numeric values (e.g. '700').", + "required": false, + "defaultValue": "normal" + }, + { + "name": "renderAsSVG", + "type": "boolean", + "description": "Whether to output the rendered word as an SVG string instead of HTML.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the rendered output string and the format type ('html' or 'svg')." + }, + "aiAgent": { + "useCase": "Use this tool when needing to visually emphasize or style a single monitoring term on a dashboard or alert output dynamically, customizing its visual presentation for clarity or priority indication. It is suitable where rendering styled words dynamically enhances monitoring UI or log display.", + "limitations": "Cannot render multiple words or paragraphs; only supports single words. Complex typographic layouts or animations are not supported.", + "examples": [ + "Render the word 'ERROR' in red, bold font and a yellow background.", + "Render the word 'OK' as SVG with font size 18 and green color.", + "Generate an HTML snippet for the word 'Loading' with default style." + ] + }, + "tags": [ + "monitoring", + "rendering", + "visualization", + "dashboard", + "word", + "style", + "html", + "svg" + ], + "examples": [ + { + "inputJson": "{\"word\":\"ALERT\",\"fontSize\":24,\"fontColor\":\"#ff0000\",\"backgroundColor\":\"#ffff00\",\"fontWeight\":\"bold\",\"renderAsSVG\":false}", + "description": "Render the word ALERT in large red bold font on a yellow background as HTML." + }, + { + "inputJson": "{\"word\":\"OK\",\"fontSize\":18,\"fontColor\":\"green\",\"renderAsSVG\":true}", + "description": "Render the word OK in green as an SVG string with font size 18." + }, + { + "inputJson": "{\"word\":\"Loading\"}", + "description": "Render the word Loading with default styles as HTML." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Word", + "context": null + } + }, + { + "name": "monitoring.formatParagraph", + "description": "Formats a supplied monitoring-related text paragraph by applying consistent styling, such as indentation, line width wrapping, and optional inclusion of timestamps or metric highlights. Accepts raw text input and outputs a neatly formatted paragraph suitable for reports or dashboards.", + "category": "monitoring", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The raw paragraph text related to monitoring data or metrics to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "lineWidth", + "type": "number", + "description": "Maximum number of characters per line in the formatted paragraph to ensure readability.", + "required": false, + "defaultValue": "80" + }, + { + "name": "includeTimestamp", + "type": "boolean", + "description": "Whether to prepend a formatted timestamp to the paragraph if a timestamp is detected or provided.", + "required": false, + "defaultValue": "false" + }, + { + "name": "highlightKeywords", + "type": "array", + "description": "List of keywords or metric names to highlight within the paragraph for emphasis.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "indentationSpaces", + "type": "number", + "description": "Number of spaces used for indenting paragraph lines to improve visual structure.", + "required": false, + "defaultValue": "4" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted paragraph string, ready for display or reporting." + }, + "aiAgent": { + "useCase": "Use this tool when preparing textual monitoring outputs or logs into a human-readable paragraph format that requires consistent line widths, indentation, and keyword emphasis for clarity in dashboards, alerts, or reports. It enhances textual data presentation without altering the underlying content.", + "limitations": "The tool cannot interpret or validate the semantic correctness of monitoring data; it does not parse structured data but only formats existing text. It also cannot add or remove content except applying text styling and wrapping.", + "examples": [ + "Format a raw log message paragraph for presentation in a monitoring report with line width of 100 characters.", + "Highlight metric names such as 'CPU usage' and 'memory' within the monitoring paragraph to emphasize key values.", + "Include timestamps alongside monitoring paragraphs if detected in the input text." + ] + }, + "tags": [ + "formatting", + "monitoring", + "text", + "reporting", + "log", + "dashboard" + ], + "examples": [ + { + "inputJson": "{\"text\":\"CPU usage was high during the last hour, reaching 95%. Memory consumption also increased significantly.\",\"lineWidth\":60,\"includeTimestamp\":false,\"highlightKeywords\":[\"CPU usage\",\"Memory\"],\"indentationSpaces\":2}", + "description": "Format a monitoring paragraph with a line width of 60 characters, indent by 2 spaces and highlight keywords 'CPU usage' and 'Memory'." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Paragraph", + "context": null + } + }, + { + "name": "monitoring.formatSentence", + "description": "Formats a performance monitoring sentence by dynamically injecting metric values, timestamps, and statuses into a customizable template. Accepts input metrics and formatting options, processes placeholders, and outputs a human-readable status sentence suitable for logs or alerts.", + "category": "monitoring", + "parameters": [ + { + "name": "template", + "type": "string", + "description": "Sentence template with placeholders (e.g., '{metric} is {value} at {timestamp}') to format the output sentence.", + "required": true, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "object", + "description": "An object containing key-value pairs of metric names and their corresponding values to replace in the template.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestampFormat", + "type": "string", + "description": "Format string to represent timestamps (e.g., 'YYYY-MM-DD HH:mm:ss'). Used to format any timestamp placeholders.", + "required": false, + "defaultValue": "YYYY-MM-DD HH:mm:ss" + }, + { + "name": "locale", + "type": "string", + "description": "Locale code (e.g., 'en-US') used for formatting numbers and dates in the sentence.", + "required": false, + "defaultValue": "en-US" + }, + { + "name": "capitalizeFirst", + "type": "boolean", + "description": "If true, capitalizes the first letter of the resulting sentence for better readability.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the fully formatted monitoring sentence as a string under the 'formattedSentence' field." + }, + "aiAgent": { + "useCase": "Use when generating clear, readable sentences summarizing monitoring data such as metrics, their current values, timestamps, and statuses for logs, alerts, or reports. It helps convert raw metric data into user-friendly text according to a customizable template, improving comprehension.", + "limitations": "Cannot perform complex natural language generation beyond template replacement; it relies on correct templates and provided metrics. Does not validate metrics semantically or fetch data; input must be preprocessed.", + "examples": [ + "Format a CPU usage sentence with current percentage and timestamp using a specific template.", + "Create a log line describing disk usage status with localized timestamp formatting.", + "Generate a monitoring alert sentence with metric names and values inserted into a custom textual pattern." + ] + }, + "tags": [ + "monitoring", + "formatting", + "metrics", + "logging", + "alerts", + "templating" + ], + "examples": [ + { + "inputJson": "{\"template\":\"CPU usage is at {cpu}% as of {timestamp}\",\"metrics\":{\"cpu\":75,\"timestamp\":\"2024-06-01T15:30:00Z\"},\"timestampFormat\":\"YYYY-MM-DD HH:mm:ss\",\"locale\":\"en-US\",\"capitalizeFirst\":true}", + "description": "Format a CPU usage sentence showing percentage and formatted timestamp." + }, + { + "inputJson": "{\"template\":\"Disk space on {disk} is {usage} GB used at {timestamp}\",\"metrics\":{\"disk\":\"/dev/sda1\",\"usage\":120,\"timestamp\":\"2024-06-01T16:00:00Z\"},\"timestampFormat\":\"MMM D, YYYY h:mm A\",\"locale\":\"en-US\",\"capitalizeFirst\":false}", + "description": "Generate a disk usage status sentence with a human-readable timestamp in US English locale." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Sentence", + "context": null + } + }, + { + "name": "monitoring.formatSummary", + "description": "Formats raw monitoring data and performance metrics into a concise, human-readable summary report. Accepts JSON or object inputs containing system/application performance stats, applies optional filters and formatting styles, and outputs a structured summary text or object suitable for dashboards or alerts.", + "category": "monitoring", + "parameters": [ + { + "name": "monitoringData", + "type": "object", + "description": "Raw monitoring data including performance metrics and logs to be summarized.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeRange", + "type": "string", + "description": "Time period for data summary (e.g., 'last_24_hours', '2024-06-01_to_2024-06-07').", + "required": false, + "defaultValue": "last_24_hours" + }, + { + "name": "includeErrors", + "type": "boolean", + "description": "Flag to include error and anomaly details in the summary.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format: 'text' for plain summary, 'json' for structured summary object.", + "required": false, + "defaultValue": "text" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum length of the text summary in characters; applied only if outputFormat is 'text'.", + "required": false, + "defaultValue": "500" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted summary, either as a plain text string or a structured summary object depending on outputFormat." + }, + "aiAgent": { + "useCase": "Use this tool when needing to convert extensive monitoring and performance data into clear, manageable summaries that are easy to interpret for reporting, alerting, or dashboard displays. It helps transform raw metrics into informative narratives or structured summaries tailored to specified time frames and detail levels.", + "limitations": "Does not perform data collection or advanced anomaly detection itself; relies on provided input data. Summary quality depends on input completeness and proper data structure. It focuses on formatting and summarizing, not on predictive analytics or real-time alerting.", + "examples": [ + "Generate a short textual summary for last 7 days of monitoring data highlighting errors.", + "Produce a JSON-formatted summary report for application performance metrics from the last hour.", + "Create a plain text summary excluding error logs covering the last 24 hours." + ] + }, + "tags": [ + "monitoring", + "formatting", + "reporting", + "performance", + "summary" + ], + "examples": [ + { + "inputJson": "{\"monitoringData\":{\"cpuUsage\":75,\"memoryUsage\":65,\"errorCount\":3,\"errors\":[{\"timestamp\":\"2024-06-10T12:00:00Z\",\"message\":\"Disk error\"}],\"uptimeHours\":168},\"timeRange\":\"last_7_days\",\"includeErrors\":true,\"outputFormat\":\"text\",\"maxSummaryLength\":300}", + "description": "Create a human-readable performance summary for the last 7 days including error details, limited to 300 characters." + }, + { + "inputJson": "{\"monitoringData\":{\"responseTimeAvg\":200,\"throughput\":5000,\"errorRate\":0.01},\"timeRange\":\"last_1_hour\",\"includeErrors\":false,\"outputFormat\":\"json\"}", + "description": "Generate a structured JSON summary of app performance metrics for the last hour, excluding error details." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Summary", + "context": null + } + }, + { + "name": "monitoring.draftWord", + "description": "Generates a concise, contextually relevant summary word or keyword that represents the main focus of a monitoring data set or report. Accepts structured monitoring metrics or textual description inputs, analyzes key themes or metrics, and outputs a single word summarizing the monitoring content for tagging or alert labeling purposes.", + "category": "monitoring", + "parameters": [ + { + "name": "monitoringData", + "type": "object", + "description": "Structured data object containing system or application monitoring metrics (e.g., CPU usage, error rates) or log excerpts to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "textContext", + "type": "string", + "description": "Optional textual context or description about the monitoring scenario to guide word drafting.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en') indicating the language of textual inputs, affecting word generation.", + "required": false, + "defaultValue": "\"en\"" + }, + { + "name": "focusType", + "type": "string", + "description": "Specify focus area for the draft word, e.g., 'performance', 'error', 'availability', to tailor the summary word.", + "required": false, + "defaultValue": "\"\"" + } + ], + "returns": { + "type": "object", + "description": "An object containing the drafted single word summarizing the essential monitoring insight or theme." + }, + "aiAgent": { + "useCase": "Use this tool when you need a succinct label or keyword that encapsulates the main theme or critical insight from complex monitoring data or reports. Helpful for alert management, report tagging, or quick summarization to prompt further investigation or classification.", + "limitations": "Cannot generate detailed multi-word summaries or full reports, only a single summary word. Quality depends on richness and clarity of input data. Not suitable for non-monitoring or very sparse input.", + "examples": [ + "Generate a single word capturing this server error log cluster.", + "Draft a keyword representing current system CPU and memory status from this metric set.", + "Provide a summary label describing the recent application downtime incident notes." + ] + }, + "tags": [ + "monitoring", + "summary", + "keyword", + "alerting", + "data-analysis" + ], + "examples": [ + { + "inputJson": "{\"monitoringData\":{\"cpuUsage\":95,\"errorCount\":20,\"memoryUsage\":80},\"textContext\":\"High CPU usage observed along with multiple errors.\",\"language\":\"en\",\"focusType\":\"performance\"}", + "description": "Draft a single word summarizing high CPU and error condition for alert tagging." + }, + { + "inputJson": "{\"monitoringData\":{\"diskFailureRate\":0.02,\"uptime\":99.9},\"textContext\":\"Disk failure rate slightly elevated.\",\"language\":\"en\",\"focusType\":\"availability\"}", + "description": "Generate a concise keyword representing disk availability monitoring status." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Word", + "context": null + } + }, + { + "name": "monitoring.formatInvoice", + "description": "Formats raw invoice data into a standardized, human-readable invoice document suitable for display or reporting in monitoring dashboards or system logs. Accepts JSON invoice data, applies formatting options like currency and date style, and returns the formatted invoice text or HTML output.", + "category": "monitoring", + "parameters": [ + { + "name": "invoiceData", + "type": "object", + "description": "The raw invoice data including items, prices, taxes, and customer info to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired output format for the invoice: 'text' for plain text or 'html' for HTML output.", + "required": false, + "defaultValue": "text" + }, + { + "name": "currency", + "type": "string", + "description": "Currency symbol or code to use when formatting monetary amounts, e.g., '$' or 'USD'.", + "required": false, + "defaultValue": "$" + }, + { + "name": "dateFormat", + "type": "string", + "description": "Date format string to use when displaying dates on the invoice, e.g., 'MM/DD/YYYY' or 'YYYY-MM-DD'.", + "required": false, + "defaultValue": "MM/DD/YYYY" + }, + { + "name": "includeTaxDetails", + "type": "boolean", + "description": "Whether to include detailed tax line items in the formatted invoice output.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted invoice as a string under 'formattedInvoice'. It may be in plain text or HTML depending on outputFormat." + }, + "aiAgent": { + "useCase": "Use this tool when a system or monitoring agent needs to present invoice data from raw structures in readable or report-friendly formats, for example embedding invoices in monitoring dashboards or sending invoice summaries in system alerts.", + "limitations": "Does not perform invoice data validation or calculations. Assumes input invoiceData is complete and correct. Formatting options are limited to currency, date, basic text or HTML output.", + "examples": [ + "Format a JSON invoice to HTML for a monitoring dashboard display.", + "Generate a plain text invoice summary with specific date and currency formatting.", + "Produce an invoice text with or without tax details based on monitoring alert requirements." + ] + }, + "tags": [ + "monitoring", + "formatting", + "invoice", + "document", + "reporting", + "financial" + ], + "examples": [ + { + "inputJson": "{\"invoiceData\":{\"invoiceNumber\":\"INV-1001\",\"date\":\"2024-05-15\",\"dueDate\":\"2024-06-15\",\"customer\":{\"name\":\"Acme Corp.\",\"address\":\"123 Market St.\"},\"items\":[{\"description\":\"Server hosting\",\"quantity\":3,\"unitPrice\":100}],\"taxes\":[{\"name\":\"VAT\",\"rate\":0.2,\"amount\":60}],\"total\":360},\"outputFormat\":\"html\",\"currency\":\"$\",\"dateFormat\":\"MM/DD/YYYY\",\"includeTaxDetails\":true}", + "description": "Format a complete invoice into HTML with US style date and dollar currency, including tax details." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Invoice", + "context": null + } + }, + { + "name": "monitoring.buildInstance", + "description": "This tool provisions and configures a new monitoring instance tailored to specified infrastructure parameters. It accepts inputs including instance specifications, monitoring agent configurations, and alerting thresholds, then builds a deployable instance with integrated performance metrics collection and alert rules. The output confirms the instance setup and provides the connection details and monitoring dashboard URL.", + "category": "monitoring", + "parameters": [ + { + "name": "instanceType", + "type": "string", + "description": "Type or size of the instance to build (e.g., small, medium, large)", + "required": true, + "defaultValue": "" + }, + { + "name": "region", + "type": "string", + "description": "Cloud region or data center location for the instance deployment", + "required": true, + "defaultValue": "" + }, + { + "name": "monitoringAgents", + "type": "array", + "description": "List of monitoring agents to install (e.g., ['CPU', 'memory', 'disk', 'network'])", + "required": true, + "defaultValue": "[]" + }, + { + "name": "alertThresholds", + "type": "object", + "description": "Key-value pairs defining alert thresholds for metrics, e.g., {\"CPU\": 80, \"memory\": 75} representing percentage usage limits", + "required": false, + "defaultValue": "{}" + }, + { + "name": "enableAutoScaling", + "type": "boolean", + "description": "Flag to enable automatic scaling based on load metrics", + "required": false, + "defaultValue": "false" + }, + { + "name": "instanceName", + "type": "string", + "description": "Optional custom name for the monitoring instance", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing instanceId, status, dashboardUrl, and connectionInfo to use the monitoring instance" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to provision or reconfigure a monitoring environment for infrastructure components. Suitable for setting up tailored monitoring instances with specific agents and alert settings for new or scaled infrastructure deployments.", + "limitations": "Does not handle underlying infrastructure provisioning outside the monitoring instance (e.g., virtual machines or containers). Cannot perform live metric analysis or issue alerts itself, only builds the instance.", + "examples": [ + "Create a medium instance in us-east-1 with CPU and memory monitoring and alerts set at 85%.", + "Build a large instance with all default monitoring agents and auto-scaling enabled.", + "Set up a small monitoring instance named 'backend-monitor' in Europe region with network and disk monitoring." + ] + }, + "tags": [ + "monitoring", + "infrastructure", + "instance", + "build", + "performance", + "alerting", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"instanceType\":\"medium\",\"region\":\"us-east-1\",\"monitoringAgents\":[\"CPU\",\"memory\"],\"alertThresholds\":{\"CPU\":85,\"memory\":80},\"enableAutoScaling\":false,\"instanceName\":\"\"}", + "description": "Build a medium instance in US East with CPU and memory monitoring and defined alert thresholds." + }, + { + "inputJson": "{\"instanceType\":\"large\",\"region\":\"us-west-2\",\"monitoringAgents\":[\"CPU\",\"memory\",\"disk\",\"network\"],\"alertThresholds\":{},\"enableAutoScaling\":true,\"instanceName\":\"\"}", + "description": "Build a large instance with all monitoring agents and enable auto-scaling." + }, + { + "inputJson": "{\"instanceType\":\"small\",\"region\":\"eu-central-1\",\"monitoringAgents\":[\"network\",\"disk\"],\"alertThresholds\":{},\"enableAutoScaling\":false,\"instanceName\":\"backend-monitor\"}", + "description": "Build a small monitoring instance named 'backend-monitor' in Europe with network and disk monitoring." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Instance", + "context": null + } + }, + { + "name": "monitoring.composeNotification", + "description": "This tool composes a structured notification message for system or application monitoring alerts. It accepts inputs including alert details, severity level, affected components, and custom formatting options. It processes the inputs to generate a clear, well-formatted notification text ready to be sent via email, SMS, or other communication channels.", + "category": "monitoring", + "parameters": [ + { + "name": "alertTitle", + "type": "string", + "description": "The title or subject of the notification alert.", + "required": true, + "defaultValue": "" + }, + { + "name": "alertMessage", + "type": "string", + "description": "Detailed message describing the monitoring alert and context.", + "required": true, + "defaultValue": "" + }, + { + "name": "severityLevel", + "type": "string", + "description": "The severity or priority level of the alert (e.g., 'info', 'warning', 'critical').", + "required": true, + "defaultValue": "" + }, + { + "name": "affectedComponents", + "type": "array", + "description": "List of system or application components affected by the alert.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted timestamp indicating when the alert was generated.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeInstructions", + "type": "boolean", + "description": "Whether to include recommended next steps or instructions in the notification.", + "required": false, + "defaultValue": "false" + }, + { + "name": "customFormat", + "type": "string", + "description": "Optional custom formatting template for the notification message using placeholders.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the composed notification string and metadata including formatted message and severity." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to construct a clear and structured notification for monitoring alerts based on variable inputs like severity, affected components, and instructions, suitable for dispatch via communication channels.", + "limitations": "Does not send the notification; only composes the message text. It does not handle localization or multiple language support beyond the provided input. Requires proper formatting templates if customFormat is specified.", + "examples": [ + "Compose a critical alert notification for CPU overload affecting the database server with instructions to restart the service.", + "Generate a warning message notification for high memory usage on multiple components without including instructions.", + "Create an informational alert message including affected services and a timestamp for monitoring dashboard display." + ] + }, + "tags": [ + "monitoring", + "notification", + "alert", + "compose", + "communication", + "system", + "application", + "performance" + ], + "examples": [ + { + "inputJson": "{\"alertTitle\":\"CPU Overload Detected\",\"alertMessage\":\"CPU usage has exceeded 90% on server db01.\",\"severityLevel\":\"critical\",\"affectedComponents\":[\"db01\"],\"timestamp\":\"2024-06-01T14:30:00Z\",\"includeInstructions\":true}", + "description": "Compose a critical alert notification for CPU overload on database server including instructions." + }, + { + "inputJson": "{\"alertTitle\":\"Memory Usage Warning\",\"alertMessage\":\"Memory usage is above 75% on app servers.\",\"severityLevel\":\"warning\",\"affectedComponents\":[\"app01\", \"app02\"],\"includeInstructions\":false}", + "description": "Generate a warning notification for high memory usage on multiple app servers without instructions." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Notification", + "context": null + } + }, + { + "name": "monitoring.buildVariable", + "description": "Constructs a monitoring variable definition used for performance metrics tracking. Accepts inputs defining variable name, type, and optional value source or calculation logic. Produces a structured variable configuration object compatible with monitoring systems, enabling dynamic performance data capture and analysis.", + "category": "monitoring", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The unique identifier for the monitoring variable to be built.", + "required": true, + "defaultValue": "" + }, + { + "name": "variableType", + "type": "string", + "description": "The data type of the variable (e.g., 'gauge', 'counter', 'histogram').", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A human-readable explanation of what this variable monitors.", + "required": false, + "defaultValue": "" + }, + { + "name": "unit", + "type": "string", + "description": "The measurement unit for this variable (e.g., 'ms', 'requests', 'bytes').", + "required": false, + "defaultValue": "" + }, + { + "name": "valueSource", + "type": "string", + "description": "Expression or source from which the variable's value is derived (e.g., metric name, calculation formula).", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "object", + "description": "Key-value pairs to categorize or label the variable for filtering and grouping.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the configured monitoring variable, including its name, type, description, unit, value source, and tags, structured for integration into monitoring workflows." + }, + "aiAgent": { + "useCase": "Use this tool when defining custom or dynamic monitoring variables as part of setting up a performance monitoring framework. It helps create standardized variable configurations for capturing and analyzing system or application metrics, facilitating alerting and reporting.", + "limitations": "This tool does not collect or ingest actual metric data, nor does it perform real-time monitoring or alerting. It only builds descriptive variable definitions for monitoring frameworks.", + "examples": [ + "Create a counter variable named 'httpRequestCount' to track HTTP requests.", + "Build a gauge variable 'cpuUsage' measuring 'percentage' units derived from system metrics.", + "Define a histogram variable 'responseTime' in milliseconds with tags for service and endpoint." + ] + }, + "tags": [ + "monitoring", + "variable", + "metrics", + "performance", + "configuration", + "build", + "observability" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"httpRequestCount\",\"variableType\":\"counter\",\"description\":\"Total number of HTTP requests received\",\"unit\":\"requests\",\"valueSource\":\"http_request_total\",\"tags\":{\"service\":\"web\",\"endpoint\":\"*\"}}", + "description": "Defines a counter variable to track total HTTP requests with relevant tags." + }, + { + "inputJson": "{\"variableName\":\"cpuUsage\",\"variableType\":\"gauge\",\"description\":\"CPU utilization percentage\",\"unit\":\"%\",\"valueSource\":\"system.cpu.percent\",\"tags\":{\"host\":\"server01\"}}", + "description": "Creates a gauge variable for CPU usage percentage from system metrics." + }, + { + "inputJson": "{\"variableName\":\"responseTime\",\"variableType\":\"histogram\",\"description\":\"API response times in milliseconds\",\"unit\":\"ms\",\"valueSource\":\"api_response_time\",\"tags\":{\"service\":\"api\",\"method\":\"GET\"}}", + "description": "Builds a histogram variable to capture API GET response times with labels." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Variable", + "context": null + } + }, + { + "name": "monitoring.createQueue", + "description": "Creates a monitoring message queue infrastructure component for system and application performance data ingestion. Accepts configuration parameters such as queue name, type, retention policies, and access controls, then sets up the queue accordingly and returns the queue ID and status confirmation.", + "category": "monitoring", + "parameters": [ + { + "name": "queueName", + "type": "string", + "description": "The unique name identifier for the queue to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "queueType", + "type": "string", + "description": "Type of the queue, e.g., 'fifo' for first-in-first-out or 'standard' for general use.", + "required": true, + "defaultValue": "standard" + }, + { + "name": "retentionPeriodMinutes", + "type": "number", + "description": "Number of minutes messages should be retained in the queue before automatic deletion.", + "required": false, + "defaultValue": "1440" + }, + { + "name": "maxMessageSizeKB", + "type": "number", + "description": "Maximum size of a single message in kilobytes.", + "required": false, + "defaultValue": "256" + }, + { + "name": "accessControlList", + "type": "array", + "description": "List of access control entries defining who can send or receive messages from the queue.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "visibilityTimeoutSeconds", + "type": "number", + "description": "Time in seconds that a message received from the queue is invisible to other consumers.", + "required": false, + "defaultValue": "30" + }, + { + "name": "enableDeadLetterQueue", + "type": "boolean", + "description": "Flag indicating whether to enable a dead-letter queue for handling failed message processing.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns details of the created queue including its unique ID, creation timestamp, and configuration summary." + }, + "aiAgent": { + "useCase": "Use this tool when needing to provision a messaging queue dedicated to monitoring data streams, enabling efficient data buffering and asynchronous processing for performance metrics and system alerts. Ideal for setting up infrastructure that collects telemetry or log data with controlled retention and access.", + "limitations": "This tool only creates the queue infrastructure; it does not transmit or process message contents nor manage downstream consumers beyond access restrictions. Queue operational behaviors depend on external services or infrastructure.", + "examples": [ + "Create a high-throughput standard queue for monitoring logs with default retention.", + "Create a FIFO queue with a dead-letter queue enabled for performance alerting streams.", + "Create a queue with restricted access to certain monitoring services only." + ] + }, + "tags": [ + "monitoring", + "queue", + "infrastructure", + "performanceData", + "messaging", + "create", + "infrastructureManagement" + ], + "examples": [ + { + "inputJson": "{\"queueName\":\"appPerformanceMetrics\",\"queueType\":\"standard\",\"retentionPeriodMinutes\":720,\"maxMessageSizeKB\":128,\"accessControlList\":[{\"entity\":\"serviceA\",\"permissions\":[\"send\"]},{\"entity\":\"serviceB\",\"permissions\":[\"receive\"]}],\"visibilityTimeoutSeconds\":45,\"enableDeadLetterQueue\":true}", + "description": "Create a standard monitoring queue named 'appPerformanceMetrics' with a 12-hour retention, 128KB message size limit, specified access permissions, 45s visibility timeout, and dead-letter queue enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Queue", + "context": null + } + }, + { + "name": "monitoring.createPackage", + "description": "Creates a deployable monitoring package containing configuration files, scripts, and dependencies to set up system and application performance monitoring. Accepts monitoring targets, metrics definitions, alert rules, and output package format; processes these inputs to generate a ready-to-deploy archive or installer package for monitoring deployment.", + "category": "monitoring", + "parameters": [ + { + "name": "packageName", + "type": "string", + "description": "Name of the monitoring package to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "monitoringTargets", + "type": "array", + "description": "List of system or application targets (e.g., IPs, hostnames, service names) to monitor.", + "required": true, + "defaultValue": "" + }, + { + "name": "metricsDefinitions", + "type": "object", + "description": "Definitions of metrics to collect from each monitoring target including metric names and collection intervals.", + "required": true, + "defaultValue": "" + }, + { + "name": "alertRules", + "type": "array", + "description": "Array of alerting rules specifying conditions when alerts should be triggered.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output package (e.g., 'zip', 'tar.gz', 'installer').", + "required": false, + "defaultValue": "zip" + }, + { + "name": "includeDependencies", + "type": "boolean", + "description": "Whether to include required monitoring agents and dependencies in the package.", + "required": false, + "defaultValue": "true" + }, + { + "name": "description", + "type": "string", + "description": "Optional description of the monitoring package.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the package file name, download URL or storage path, size in bytes, and a summary of included monitoring targets and alert rules." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to automate the creation of consistent and portable monitoring setups by packaging the necessary configurations and dependencies into a deployable unit. Ideal for setting up monitoring in multiple environments or scaling deployments.", + "limitations": "This tool does not perform deployment or installation of the created package; it only builds the package artifact. It assumes valid input configurations. Validation of complex metric definitions or alert syntax is minimal.", + "examples": [ + "Create a monitoring package for servers 'web01' and 'db01' with CPU and memory metrics, including alerts for high CPU usage.", + "Generate a tar.gz package for monitoring a set of microservices with customized metrics definitions and no alert rules.", + "Build a zip package including all dependencies to monitor specified host IPs with default alert rules." + ] + }, + "tags": [ + "monitoring", + "package", + "configuration", + "deployment", + "automation", + "performance", + "alerts" + ], + "examples": [ + { + "inputJson": "{\"packageName\":\"ProdMonitoring\",\"monitoringTargets\":[\"web01.example.com\",\"db01.example.com\"],\"metricsDefinitions\":{\"cpuUsage\":{\"interval\":60},\"memoryUsage\":{\"interval\":60}},\"alertRules\":[{\"metric\":\"cpuUsage\",\"threshold\":85,\"duration\":300,\"severity\":\"high\"}],\"outputFormat\":\"zip\",\"includeDependencies\":true,\"description\":\"Production environment monitoring package.\"}", + "description": "Create a monitoring zip package for production web and database servers with CPU and memory metrics and high CPU alert." + }, + { + "inputJson": "{\"packageName\":\"MicroservicesMonitoring\",\"monitoringTargets\":[\"serviceA\",\"serviceB\"],\"metricsDefinitions\":{\"requestLatency\":{\"interval\":30},\"errorRate\":{\"interval\":30}},\"alertRules\":[],\"outputFormat\":\"tar.gz\",\"includeDependencies\":false}", + "description": "Generate a tar.gz monitoring package for microservices with specified metrics and no alerts, excluding dependencies." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Package", + "context": null + } + }, + { + "name": "compliance-management.analyzeOpportunity", + "description": "Analyzes business opportunities through the lens of regulatory and policy compliance. Accepts details about the opportunity including industry, jurisdiction, regulatory frameworks involved, and relevant documents. Processes risk factors and compliance requirements, then outputs a detailed report highlighting potential compliance risks, applicable laws, necessary mitigations, and strategic recommendations.", + "category": "compliance-management", + "parameters": [ + { + "name": "opportunityDescription", + "type": "string", + "description": "A detailed textual description of the business opportunity under consideration.", + "required": true, + "defaultValue": "" + }, + { + "name": "industrySector", + "type": "string", + "description": "The primary industry sector where the opportunity is situated (e.g., finance, healthcare, manufacturing).", + "required": true, + "defaultValue": "" + }, + { + "name": "jurisdictions", + "type": "array", + "description": "List of countries, states, or regulatory zones impacting this opportunity.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "regulatoryFrameworks", + "type": "array", + "description": "Applicable compliance frameworks or regulations to consider (e.g., GDPR, HIPAA, SOX).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "relatedDocuments", + "type": "array", + "description": "Supporting documents for compliance analysis, such as contracts, policies, or licenses in text format.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "riskToleranceLevel", + "type": "string", + "description": "Defines the acceptable level of compliance risk. Options: low, medium, high.", + "required": false, + "defaultValue": "medium" + } + ], + "returns": { + "type": "object", + "description": "An object containing a compliance risk assessment score, detailed risk summary, identified applicable regulations, recommended mitigation steps, and strategic next steps to ensure compliance." + }, + "aiAgent": { + "useCase": "This tool is ideal when assessing new business opportunities to understand the compliance risks and requirements before proceeding. AI agents should invoke it to evaluate whether a proposed venture aligns with industry regulations and jurisdictional laws, supplying mitigation recommendations to reduce compliance exposure.", + "limitations": "Does not replace legal counsel; may not capture rapidly changing regulations; limited if critical data is missing or improperly formatted.", + "examples": [ + "Analyze a business expansion opportunity in the healthcare sector within the EU complying with GDPR.", + "Evaluate a financial product launch in multiple US states considering relevant state financial regulations.", + "Assess compliance risks for a manufacturing partnership involving cross-border trade requiring export controls." + ] + }, + "tags": [ + "compliance", + "risk-analysis", + "business-opportunity", + "regulatory", + "policy", + "assessment" + ], + "examples": [ + { + "inputJson": "{\"opportunityDescription\": \"Launching a telehealth platform offering services across the EU.\", \"industrySector\": \"healthcare\", \"jurisdictions\": [\"EU\"], \"regulatoryFrameworks\": [\"GDPR\", \"Medical Device Regulation\"], \"relatedDocuments\": [\"Privacy policy text\", \"Terms of service document\"], \"riskToleranceLevel\": \"low\"}", + "description": "Analyzing telehealth platform opportunity in EU healthcare sector focusing on GDPR and MDR compliance with low risk tolerance." + }, + { + "inputJson": "{\"opportunityDescription\": \"Introduction of a new fintech app for payments in the US.\", \"industrySector\": \"finance\", \"jurisdictions\": [\"US\"], \"regulatoryFrameworks\": [\"SOX\", \"PCI DSS\"], \"relatedDocuments\": [\"App user agreement\", \"Compliance certificate\"], \"riskToleranceLevel\": \"medium\"}", + "description": "Compliance analysis for fintech app launch in US considering Sarbanes-Oxley and payment security standards." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Opportunity", + "context": null + } + }, + { + "name": "compliance-management.analyzeRisk", + "description": "This tool analyzes compliance risks by evaluating input data such as regulatory context, organizational policies, asset inventories, and threat information. It processes these inputs to identify, assess, and prioritize potential compliance risks, returning a structured risk report with risk levels, affected controls, and recommended mitigation steps.", + "category": "compliance-management", + "parameters": [ + { + "name": "regulations", + "type": "array", + "description": "List of applicable regulation identifiers or documents to consider during risk analysis.", + "required": true, + "defaultValue": "" + }, + { + "name": "organizationalPolicies", + "type": "array", + "description": "Array of organizational policy documents or summaries relevant to compliance scope.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "assetInventory", + "type": "array", + "description": "Detailed list of organizational assets including type, importance, and control mappings.", + "required": true, + "defaultValue": "" + }, + { + "name": "threatIntelligence", + "type": "array", + "description": "Current and historical threat data relevant to the organizational environment and regulations.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "riskToleranceLevel", + "type": "string", + "description": "Defined organizational risk tolerance level to categorize risk severity (e.g., low, medium, high).", + "required": false, + "defaultValue": "medium" + }, + { + "name": "analysisDate", + "type": "string", + "description": "Date for which the risk analysis is conducted, affecting data relevance and context.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A comprehensive risk assessment report including identified risks, their severity, impacted compliance areas, and recommended actions to mitigate each risk." + }, + "aiAgent": { + "useCase": "Use this tool when you need to evaluate organizational compliance risks based on current regulations, policies, assets, and threats to effectively prioritize risk mitigation efforts and ensure regulatory adherence. It suits situations requiring detailed risk prioritization aligned with organizational context.", + "limitations": "This tool does not perform real-time monitoring, cannot substitute legal advice, and depends on quality of provided input data. It does not auto-update regulations or threats; external updates are needed.", + "examples": [ + "Analyze compliance risks for GDPR and HIPAA regulations considering current organizational policies and assets.", + "Provide a prioritized risk report based on the asset inventory and recent threat intelligence for PCI DSS compliance.", + "Generate risk assessment highlighting critical compliance areas given company risk tolerance and selected regulatory frameworks." + ] + }, + "tags": [ + "compliance", + "risk analysis", + "regulations", + "security", + "policy", + "assessment", + "mitigation" + ], + "examples": [ + { + "inputJson": "{\"regulations\":[\"GDPR\",\"HIPAA\"],\"organizationalPolicies\":[\"Data Privacy Policy\",\"Access Control Policy\"],\"assetInventory\":[{\"id\":\"asset1\",\"type\":\"database\",\"importance\":\"high\",\"controls\":[\"encryption\",\"accessLogging\"]},{\"id\":\"asset2\",\"type\":\"webServer\",\"importance\":\"medium\",\"controls\":[\"firewall\",\"patchManagement\"]}],\"threatIntelligence\":[{\"threat\":\"ransomware\",\"likelihood\":\"medium\"}],\"riskToleranceLevel\":\"medium\",\"analysisDate\":\"2024-05-01\"}", + "description": "Analyze compliance risks for GDPR and HIPAA using current policies, asset inventory, and threat data on specified date." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Risk", + "context": null + } + }, + { + "name": "compliance-management.uploadJSON", + "description": "Uploads JSON-formatted compliance data to a specified compliance management system endpoint. The tool accepts raw JSON compliance data or a JSON file path, validates the JSON format and essential compliance fields, and uploads it via HTTP POST to the given API endpoint URL with optional authentication. It returns a detailed upload status report including success indicators and any error messages.", + "category": "compliance-management", + "parameters": [ + { + "name": "jsonData", + "type": "string", + "description": "Raw JSON compliance data as a string to be uploaded", + "required": false, + "defaultValue": "" + }, + { + "name": "jsonFilePath", + "type": "string", + "description": "File path to a JSON file containing compliance data (used if jsonData is not provided)", + "required": false, + "defaultValue": "" + }, + { + "name": "apiEndpoint", + "type": "string", + "description": "URL of the compliance management system's API endpoint for uploading JSON data", + "required": true, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Optional authentication token for API access (e.g., Bearer token)", + "required": false, + "defaultValue": "" + }, + { + "name": "validateSchema", + "type": "boolean", + "description": "Flag to validate JSON data against a known compliance schema before upload", + "required": false, + "defaultValue": "true" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "Flag to allow overwriting existing compliance records identified in the JSON data", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Upload status object including success flag, HTTP status code, message string, and details of any errors encountered" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to upload up-to-date compliance data in JSON format to a centralized compliance management system or regulatory platform. It is suitable when input compliance info is available either as a JSON string or file. The tool manages authentication, validation, and error reporting to ensure compliance data integrity during upload.", + "limitations": "This tool does not generate or edit compliance JSON data, nor does it perform in-depth compliance validation other than schema checks. It cannot handle other data formats or protocols besides JSON over HTTP POST.", + "examples": [ + "Upload a JSON compliance report string to the compliance system with auth token and schema validation.", + "Upload JSON data from a local file path without authentication to a public API endpoint, allowing existing records to be overwritten.", + "Attempt to upload invalid JSON data and receive detailed validation error messages before upload attempt." + ] + }, + "tags": [ + "compliance", + "upload", + "json", + "api", + "validation", + "authentication" + ], + "examples": [ + { + "inputJson": "{\"jsonData\":\"{\\\"policyId\\\": \\\"1234\\\", \\\"complianceStatus\\\": \\\"passed\\\"}\",\"apiEndpoint\":\"https://api.compliance.example.com/upload\",\"authToken\":\"Bearer abcdef123456\",\"validateSchema\":true}", + "description": "Upload a small compliance JSON report string with authentication and schema validation enabled." + }, + { + "inputJson": "{\"jsonFilePath\":\"/data/compliance/report.json\",\"apiEndpoint\":\"https://api.compliance.example.com/upload\",\"overwriteExisting\":true}", + "description": "Upload compliance data from a JSON file path to the API endpoint allowing existing records overwrite and no authentication." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "JSON", + "context": null + } + }, + { + "name": "compliance-management.downloadDataset", + "description": "Downloads a compliance-related dataset from a specified regulatory source, filtering by compliance standard and date range. Accepts inputs for dataset identifier, compliance standard code, optional date range, and format preference. Outputs the filtered dataset in the chosen file format (CSV or JSON) ready for analysis or archiving.", + "category": "compliance-management", + "parameters": [ + { + "name": "datasetId", + "type": "string", + "description": "Identifier of the dataset to download from the compliance repository.", + "required": true, + "defaultValue": "" + }, + { + "name": "complianceStandard", + "type": "string", + "description": "Code or name of the compliance standard to filter data (e.g., GDPR, HIPAA).", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Optional start date (YYYY-MM-DD) for filtering dataset records.", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "Optional end date (YYYY-MM-DD) for filtering dataset records.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileFormat", + "type": "string", + "description": "Preferred output file format, either 'CSV' or 'JSON'.", + "required": false, + "defaultValue": "CSV" + } + ], + "returns": { + "type": "object", + "description": "An object containing the downloaded dataset data in the specified file format along with metadata such as compliance standard, datasetId, date range, and total records." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to obtain relevant compliance datasets filtered by specific standards and optional date ranges from official regulatory repositories for audit, analysis, reporting, or decision-making purposes.", + "limitations": "This tool cannot perform data validation or compliance risk assessment; it only downloads filtered datasets. It depends on the availability of the dataset with the given identifiers and standard codes at the source.", + "examples": [ + "Download the GDPR compliance dataset for Q1 2024 in JSON format.", + "Retrieve HIPAA audit datasets from January to March 2023 as CSV files.", + "Fetch the latest financial compliance dataset without date filtering." + ] + }, + "tags": [ + "compliance", + "dataset", + "download", + "regulation", + "filtering", + "audit", + "data-management" + ], + "examples": [ + { + "inputJson": "{\"datasetId\":\"regulatory-2023\",\"complianceStandard\":\"GDPR\",\"startDate\":\"2023-01-01\",\"endDate\":\"2023-03-31\",\"fileFormat\":\"JSON\"}", + "description": "Download GDPR dataset for Q1 2023 in JSON format." + }, + { + "inputJson": "{\"datasetId\":\"healthcare-audit\",\"complianceStandard\":\"HIPAA\",\"fileFormat\":\"CSV\"}", + "description": "Download the full HIPAA healthcare audit dataset in CSV without date filters." + }, + { + "inputJson": "{\"datasetId\":\"financial-compliance\",\"complianceStandard\":\"SOX\",\"startDate\":\"2024-01-01\",\"endDate\":\"2024-06-30\"}", + "description": "Download financial compliance dataset filtered by SOX for first half of 2024 in default CSV format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Dataset", + "context": null + } + }, + { + "name": "compliance-management.uploadImage", + "description": "Uploads compliance-related image files (e.g., scanned documents, photos of safety checks) to a secure storage system, validates file type and size, and associates images with specified compliance records or cases. Returns an upload result with image ID, status, and URL for further processing.", + "category": "compliance-management", + "parameters": [ + { + "name": "imageBase64", + "type": "string", + "description": "Base64-encoded string of the image file content to upload, supporting standard formats like PNG, JPEG, GIF.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileName", + "type": "string", + "description": "Original file name of the image, used for metadata and storage purposes.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileType", + "type": "string", + "description": "MIME type of the image file (e.g., image/png, image/jpeg).", + "required": true, + "defaultValue": "" + }, + { + "name": "maxFileSizeMB", + "type": "number", + "description": "Maximum allowed file size for upload in megabytes to enforce compliance storage policies.", + "required": false, + "defaultValue": "10" + }, + { + "name": "associatedComplianceId", + "type": "string", + "description": "Identifier of the compliance record or case to associate the uploaded image with.", + "required": true, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Optional list of tags describing the image context (e.g., 'fire-safety', 'inspection').", + "required": false, + "defaultValue": "[]" + }, + { + "name": "notifyOnUpload", + "type": "boolean", + "description": "Whether to send notification to compliance officers upon successful upload.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Result of the upload operation including success status, the unique image ID, accessible URL, and error messages if any." + }, + "aiAgent": { + "useCase": "Use this tool when needing to store and link image evidence or documentation relevant to compliance audits and reports, ensuring images are validated, correctly tagged, and associated with compliance cases for easy retrieval and review.", + "limitations": "This tool does not perform OCR or content analysis on the uploaded images; it only uploads and stores images with metadata. It cannot modify or redact images after upload.", + "examples": [ + "Upload a JPEG photo of a safety inspection to a fire safety compliance record.", + "Upload a scanned PNG document as evidence for OSHA regulatory compliance.", + "Upload multiple tagged images related to environmental compliance for a specific audit." + ] + }, + "tags": [ + "compliance", + "upload", + "image", + "document management", + "audit", + "security", + "regulatory" + ], + "examples": [ + { + "inputJson": "{\"imageBase64\":\"iVBORw0KGgoAAAANSUhEUgAAAAUA...\",\"fileName\":\"inspection_photo.jpg\",\"fileType\":\"image/jpeg\",\"maxFileSizeMB\":5,\"associatedComplianceId\":\"COMP-2024-12345\",\"tags\":[\"fire-safety\",\"inspection\"],\"notifyOnUpload\":true}", + "description": "Uploading a fire safety inspection photo JPEG under 5MB linked with compliance record COMP-2024-12345, and notifying officers." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Image", + "context": null + } + }, + { + "name": "compliance-management.uploadDataset", + "description": "Uploads a dataset relevant to regulatory or internal compliance processes. Accepts dataset files in CSV, JSON, or XML formats along with metadata describing the dataset's compliance scope. Validates format and compliance policy tags, stores securely, and returns confirmation and dataset ID.", + "category": "compliance-management", + "parameters": [ + { + "name": "datasetFile", + "type": "string", + "description": "Base64 encoded string of the dataset file content in CSV, JSON, or XML format.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileFormat", + "type": "string", + "description": "Format of the dataset file: 'csv', 'json', or 'xml'.", + "required": true, + "defaultValue": "" + }, + { + "name": "datasetName", + "type": "string", + "description": "A descriptive name for the dataset being uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "complianceCategory", + "type": "string", + "description": "Compliance category applicable to the dataset, e.g., GDPR, HIPAA, SOX.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional description providing additional details about the dataset.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Array of tags associated with the dataset to support search and classification.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with upload confirmation and dataset metadata including a unique dataset ID, upload timestamp, and compliance category." + }, + "aiAgent": { + "useCase": "Use this tool when you need to securely upload datasets for compliance auditing, reporting, or regulatory review. It ensures data integrity, proper classification, and storage with compliance-specific metadata to support later retrieval and verification.", + "limitations": "Does not perform deep content validation beyond format and metadata compliance categorization. It cannot amend or analyze the dataset content for compliance violations.", + "examples": [ + "Upload a GDPR-related customer data CSV file to the compliance repository.", + "Submit a HIPAA dataset in JSON format with tags for sensitive health information.", + "Upload an XML dataset pertaining to financial SOX compliance reporting." + ] + }, + "tags": [ + "upload", + "dataset", + "compliance", + "regulatory", + "data-management", + "security" + ], + "examples": [ + { + "inputJson": "{\"datasetFile\":\"VGhpcyBpcyBhIHRlc3QgZGF0YSBjc3Y=\",\"fileFormat\":\"csv\",\"datasetName\":\"Customer GDPR Dataset Q1\",\"complianceCategory\":\"GDPR\",\"description\":\"Contains personal data of EU customers for Q1 reporting.\",\"tags\":[\"personal-data\",\"EU\",\"Q1\"]}", + "description": "Uploading a CSV file encoding customer personal data governed by GDPR for the first quarter." + }, + { + "inputJson": "{\"datasetFile\":\"eyJkYXRhIjogW3siaWQiOiAxLCAibmFtZSI6ICJKb2huIERvZSJ9XSwgImNhdGVnb3J5IjogIkhJUEEifQ==\",\"fileFormat\":\"json\",\"datasetName\":\"Patient Records HIPAA\",\"complianceCategory\":\"HIPAA\",\"description\":\"Patient health info dataset in JSON format.\",\"tags\":[\"health\",\"patient\",\"private\"]}", + "description": "Uploading a JSON dataset of patient health records related to HIPAA compliance." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Dataset", + "context": null + } + }, + { + "name": "compliance-management.downloadImage", + "description": "Downloads an image file from a specified secure URL for compliance documentation. Accepts a URL string and optional authorization headers, validates access permissions to ensure regulatory compliance, retrieves the image, and returns image metadata along with binary data suitable for storage or analysis.", + "category": "compliance-management", + "parameters": [ + { + "name": "imageUrl", + "type": "string", + "description": "Secure URL of the image to download. Required to locate the image file on a protected server.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorizationToken", + "type": "string", + "description": "Bearer token or API key for authentication to access restricted image resources. Optional if URL is public.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait when downloading the image before aborting. Helps ensure timely compliance processing.", + "required": false, + "defaultValue": "30" + }, + { + "name": "validateComplianceHeaders", + "type": "boolean", + "description": "If true, checks the HTTP response headers for compliance-related metadata such as content-type and retention policies.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing image metadata (format, size in bytes, timestamp) and the binary image data encoded as a base64 string for downstream compliance storage or auditing." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to retrieve images that must be stored or audited under compliance regulations, verifying proper access rights and metadata to ensure adherence to data governance policies. Suitable for downloading images from secure or regulated repositories.", + "limitations": "Cannot interpret or modify image content. Does not perform image analysis, only retrieval and basic metadata validation. Relies on provided authentication tokens being valid and permissions being correctly configured on the source server.", + "examples": [ + "Download the compliance required image from a secure URL with a given API token.", + "Fetch an image for audit documentation ensuring the download respects retention policy headers.", + "Retrieve an image from a protected endpoint within a configurable timeout to avoid delays in compliance workflows." + ] + }, + "tags": [ + "download", + "image", + "compliance", + "authentication", + "secure-access", + "media" + ], + "examples": [ + { + "inputJson": "{\"imageUrl\":\"https://securecompliance.example.com/images/audit-photo-123.png\",\"authorizationToken\":\"Bearer abcdef123456\",\"timeoutSeconds\":20,\"validateComplianceHeaders\":true}", + "description": "Download a compliance audit image from a secure server using a bearer token with a 20-second timeout and header validation." + }, + { + "inputJson": "{\"imageUrl\":\"https://publicimages.example.com/compliance/logo.png\"}", + "description": "Download a publicly accessible compliance-related image without authentication, using default timeout and header validation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Image", + "context": null + } + }, + { + "name": "compliance-management.formatText", + "description": "Formats compliance-related text documents according to specified regulatory style guides and formatting rules. Accepts raw text input and applies formatting rules such as header styles, bullet points, numbering, indentation, and font styles specific to compliance documentation. Outputs well-structured, standardized text ready for regulatory submission or internal policy review.", + "category": "compliance-management", + "parameters": [ + { + "name": "inputText", + "type": "string", + "description": "The raw text content that requires formatting according to compliance guidelines.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatStyle", + "type": "string", + "description": "The specific compliance style guide or format to apply (e.g., 'HIPAA', 'GDPR', 'SOX').", + "required": true, + "defaultValue": "" + }, + { + "name": "includeNumbering", + "type": "boolean", + "description": "Whether to enable automatic numbering for lists and sections in the text.", + "required": false, + "defaultValue": "true" + }, + { + "name": "indentationSpaces", + "type": "number", + "description": "Number of spaces to use for indentation for nested bullet points or paragraphs.", + "required": false, + "defaultValue": "4" + }, + { + "name": "capitalizeHeaders", + "type": "boolean", + "description": "If true, converts all headers to uppercase formatting to comply with style guide.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxLineLength", + "type": "number", + "description": "Maximum number of characters allowed per line to ensure readability and format consistency.", + "required": false, + "defaultValue": "80" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted text and metadata on formatting applied." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to prepare or clean up compliance documents by enforcing specific regulatory formatting rules, ensuring consistent presentation that meets legal or policy requirements. Ideal for automated compliance report generation or standardizing internal policy documents.", + "limitations": "Does not validate the legal accuracy of the content; only formats text. May not support highly customized or proprietary formatting rules outside standard style guides.", + "examples": [ + "Format a HIPAA compliance report text applying all standard formatting and numbering.", + "Apply GDPR style formatting to a collection of textual policy statements.", + "Standardize indentation and line length in a SOX audit documentation excerpt." + ] + }, + "tags": [ + "compliance", + "text-formatting", + "regulatory", + "documentation", + "style-guide", + "automation" + ], + "examples": [ + { + "inputJson": "{\"inputText\":\"section 1 introduction\\nthis document describes our gdpr compliance approach...\",\"formatStyle\":\"GDPR\",\"includeNumbering\":true,\"indentationSpaces\":4,\"capitalizeHeaders\":true,\"maxLineLength\":80}", + "description": "Format GDPR compliance text with headers capitalized and numbered sections." + }, + { + "inputJson": "{\"inputText\":\"hipaa overview\\n- patient data protection\\n- secure storage\",\"formatStyle\":\"HIPAA\",\"includeNumbering\":true,\"indentationSpaces\":2,\"capitalizeHeaders\":true,\"maxLineLength\":100}", + "description": "Format a short HIPAA compliance overview with bullet points and proper indentation." + }, + { + "inputJson": "{\"inputText\":\"sox controls audit report\\ninternal controls findings and recommendations\",\"formatStyle\":\"SOX\",\"includeNumbering\":false,\"indentationSpaces\":4,\"capitalizeHeaders\":false,\"maxLineLength\":72}", + "description": "Format a SOX audit report excerpt with no numbering and set max line length." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Text", + "context": null + } + }, + { + "name": "compliance-management.renderReport", + "description": "Renders a comprehensive compliance report based on provided compliance data and configuration. Accepts detailed compliance findings, organizational metadata, and formatting preferences, then processes these inputs to produce a structured, exportable compliance report in formats like PDF or HTML, suitable for audits and stakeholder review.", + "category": "compliance-management", + "parameters": [ + { + "name": "complianceData", + "type": "object", + "description": "Detailed structured data containing compliance findings, checklists, and status indicators to be included in the report.", + "required": true, + "defaultValue": "" + }, + { + "name": "organizationInfo", + "type": "object", + "description": "Metadata about the organization such as name, department, contact info, used to personalize the report header.", + "required": true, + "defaultValue": "" + }, + { + "name": "reportFormat", + "type": "string", + "description": "The desired output format of the report, e.g., 'PDF' or 'HTML'.", + "required": true, + "defaultValue": "PDF" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Whether to include a summary section in the report highlighting key compliance metrics.", + "required": false, + "defaultValue": "true" + }, + { + "name": "dateRange", + "type": "object", + "description": "An object specifying the start and end dates to filter compliance data to be included in the report, format: {startDate:'YYYY-MM-DD', endDate:'YYYY-MM-DD'}.", + "required": false, + "defaultValue": "" + }, + { + "name": "customSections", + "type": "array", + "description": "An array of custom section objects to include additional info or notes in the report, each with title and content fields.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing the rendered report file as a base64 string along with metadata including format, generation timestamp, and summary statistics." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to generate a formal compliance report document from raw compliance data and organizational info, producing a professional and regulatory-ready report in various export formats.", + "limitations": "Cannot independently validate accuracy of compliance data; it only formats and structures given data into a report. Complex styling beyond standard templates is not supported.", + "examples": [ + "Generate a compliance report in PDF for Q1 2024 including summary", + "Render compliance findings for the IT department as an HTML report", + "Create a compliance report with additional custom notes for auditors" + ] + }, + "tags": [ + "compliance", + "reporting", + "document-generation", + "regulatory", + "audit" + ], + "examples": [ + { + "inputJson": "{\"complianceData\":{\"checks\":[{\"id\":\"chk1\",\"description\":\"Data encryption enabled\",\"status\":\"passed\"},{\"id\":\"chk2\",\"description\":\"User access reviewed\",\"status\":\"failed\"}],\"metrics\":{\"totalChecks\":2,\"passed\":1,\"failed\":1}},\"organizationInfo\":{\"name\":\"Acme Corp\",\"department\":\"IT\",\"contactEmail\":\"it-acme@acme.com\"},\"reportFormat\":\"PDF\",\"includeSummary\":true,\"dateRange\":{\"startDate\":\"2024-01-01\",\"endDate\":\"2024-03-31\"},\"customSections\":[{\"title\":\"Auditor Notes\",\"content\":\"Needs improvement on access reviews.\"}]}", + "description": "Generate a PDF compliance report for Acme Corp's IT department for Q1 2024 including summary and auditor notes." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Report", + "context": null + } + }, + { + "name": "compliance-management.formatJSON", + "description": "Formats JSON data for compliance-related documents according to specified indentation and property ordering. Accepts raw JSON strings or objects, applies indentation, optional property sorting, and outputs standardized, human-readable JSON suitable for regulatory submissions or internal audits.", + "category": "compliance-management", + "parameters": [ + { + "name": "jsonData", + "type": "string", + "description": "The raw JSON data as a string to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "indentation", + "type": "number", + "description": "Number of spaces to use for indentation in the output JSON. Defaults to 2.", + "required": false, + "defaultValue": "2" + }, + { + "name": "sortProperties", + "type": "boolean", + "description": "Whether to sort object properties alphabetically at each level. Defaults to false.", + "required": false, + "defaultValue": "false" + }, + { + "name": "removeNullValues", + "type": "boolean", + "description": "Option to remove properties with null values to reduce noise. Defaults to false.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "string", + "description": "A formatted JSON string that is human-readable and complies with the specified formatting rules, ready for compliance use." + }, + "aiAgent": { + "useCase": "Use this tool when you need to ensure compliance documentation in JSON format is well formatted with consistent indentation, optional sorting of properties, and removal of null values to meet organizational or regulatory style guides. It is ideal for preparing JSON data for audits, regulatory submissions, or internal compliance reviews.", + "limitations": "This tool does not validate the JSON against compliance-specific schemas or regulatory content requirements; it strictly formats the JSON structure and content presentation. It may not preserve property order if sorting is enabled, potentially affecting semantic meaning if order is significant.", + "examples": [ + "Format raw JSON data with 4-space indentation and sort all properties alphabetically.", + "Prepare JSON data for compliance submission by removing null values and formatting with default indentation.", + "Standardize JSON logs for compliance review without sorting or removing nulls, using 2-space indentation." + ] + }, + "tags": [ + "formatting", + "json", + "compliance", + "data-cleaning", + "regulatory", + "audit" + ], + "examples": [ + { + "inputJson": "{\"jsonData\":\"{\\\"id\\\":123,\\\"name\\\":\\\"Sample\\\",\\\"details\\\":null}\",\"indentation\":4,\"sortProperties\":true,\"removeNullValues\":true}", + "description": "Format JSON data with 4 spaces indentation, sort properties, and remove null values." + }, + { + "inputJson": "{\"jsonData\":\"{\\\"b\\\":2,\\\"a\\\":1}\",\"indentation\":2,\"sortProperties\":false,\"removeNullValues\":false}", + "description": "Format JSON without sorting and with default 2 spaces indentation." + }, + { + "inputJson": "{\"jsonData\":\"{\\\"key\\\":null,\\\"value\\\":\\\"test\\\"}\",\"removeNullValues\":true}", + "description": "Remove null values from JSON and format with default settings." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "JSON", + "context": null + } + }, + { + "name": "compliance-management.formatWord", + "description": "Formats a given word or phrase according to specified compliance-related style rules such as uppercase for acronyms, lowercasing for specific terms, or applying legal formatting conventions. Accepts a string input word, formatting style type, and optional parameters, and returns the formatted compliant word string.", + "category": "compliance-management", + "parameters": [ + { + "name": "inputWord", + "type": "string", + "description": "The single word or phrase to format for compliance.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatStyle", + "type": "string", + "description": "The compliance style to apply, such as 'uppercase', 'lowercase', 'titlecase', or 'legalStyle'.", + "required": true, + "defaultValue": "" + }, + { + "name": "forceFormat", + "type": "boolean", + "description": "If true, enforces formatting even if input already seems compliant.", + "required": false, + "defaultValue": "false" + }, + { + "name": "customRules", + "type": "object", + "description": "Optional custom rules as key-value pairs to override default formatting behaviors (e.g., acronyms, exceptions).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted compliant word or phrase, including applied style details." + }, + "aiAgent": { + "useCase": "Use this tool when needing to ensure that key compliance-related terms or words are formatted consistently and according to regulatory or internal style guides prior to documentation or automated compliance checks. Useful for normalizing terminology in contracts, policies, or reports to avoid ambiguity.", + "limitations": "This tool formats single words or short phrases only; it does not process or validate entire documents or large text blocks. It also does not interpret context beyond specified style rules and custom overrides.", + "examples": [ + "Format the word 'gdpr' to uppercase compliance style.", + "Ensure the term 'non-disclosure agreement' is in legalStyle format.", + "Apply titlecase formatting to the term 'compliance manager'." + ] + }, + "tags": [ + "compliance", + "formatting", + "word-processing", + "regulatory", + "style-guide" + ], + "examples": [ + { + "inputJson": "{\"inputWord\":\"gdpr\",\"formatStyle\":\"uppercase\",\"forceFormat\":true}", + "description": "Formatting 'gdpr' acronym into uppercase compliance style." + }, + { + "inputJson": "{\"inputWord\":\"non-disclosure agreement\",\"formatStyle\":\"legalStyle\"}", + "description": "Applying legal style formatting to a common compliance phrase." + }, + { + "inputJson": "{\"inputWord\":\"compliance manager\",\"formatStyle\":\"titlecase\"}", + "description": "Capitalizing the term as a job title per compliance document style." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Word", + "context": null + } + }, + { + "name": "compliance-management.formatAPI", + "description": "Formats API definitions to ensure compliance with specific regulatory and internal policy requirements. Accepts raw API definitions in OpenAPI or Swagger format, applies formatting rules like field order, naming conventions, mandatory compliance annotations, and outputs a standardized, policy-compliant API specification.", + "category": "compliance-management", + "parameters": [ + { + "name": "apiDefinition", + "type": "string", + "description": "Raw API definition document in JSON or YAML format to be formatted for compliance.", + "required": true, + "defaultValue": "" + }, + { + "name": "inputFormat", + "type": "string", + "description": "Format of the input API definition, e.g., 'OpenAPI', 'Swagger'.", + "required": true, + "defaultValue": "OpenAPI" + }, + { + "name": "complianceProfile", + "type": "string", + "description": "Compliance profile to apply, e.g., 'GDPR', 'HIPAA', 'InternalPolicyX'.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output API definition format, e.g., 'OpenAPI', 'Swagger'.", + "required": false, + "defaultValue": "OpenAPI" + }, + { + "name": "includeAnnotations", + "type": "boolean", + "description": "Whether to include compliance annotations or metadata in the formatted API.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted API definition as a string and a summary of compliance checks performed." + }, + "aiAgent": { + "useCase": "Use this tool when you need to ensure that API definitions conform to specific regulatory or corporate compliance standards before deployment or audit. It standardizes API specs to avoid compliance violations and enforces required annotations or data privacy constraints automatically.", + "limitations": "Does not validate runtime API behavior or enforce compliance beyond formatting and annotation of the API spec. Cannot fix underlying logical compliance issues in API implementation.", + "examples": [ + "Format an OpenAPI definition to comply with GDPR, outputting a standardized OpenAPI document with compliance metadata.", + "Convert a Swagger API definition into a HIPAA-compliant format, ensuring required security schemas and annotations are present.", + "Apply an internal company compliance profile to an API spec and produce a formatted, audited API definition file." + ] + }, + "tags": [ + "compliance", + "API", + "formatting", + "regulatory", + "policy", + "OpenAPI", + "Swagger" + ], + "examples": [ + { + "inputJson": "{\"apiDefinition\":\"{\\\"openapi\\\":\\\"3.0.0\\\",\\\"info\\\":{\\\"title\\\":\\\"Sample API\\\",\\\"version\\\":\\\"1.0\\\"},\\\"paths\\\":{}}\",\"inputFormat\":\"OpenAPI\",\"complianceProfile\":\"GDPR\",\"outputFormat\":\"OpenAPI\",\"includeAnnotations\":true}", + "description": "Format an OpenAPI spec ensuring GDPR compliance and include compliance annotations." + }, + { + "inputJson": "{\"apiDefinition\":\"swagger: '2.0', info: {title: 'Test API', version: '1.0'}, paths: {}\",\"inputFormat\":\"Swagger\",\"complianceProfile\":\"HIPAA\",\"outputFormat\":\"Swagger\",\"includeAnnotations\":false}", + "description": "Format a Swagger API definition to meet HIPAA compliance without extra annotations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "API", + "context": null + } + }, + { + "name": "compliance-management.buildBranch", + "description": "Builds a compliance-focused code branch by accepting a compliance policy object and source code repository details. It processes the compliance requirements and generates a new repository branch with necessary changes, document templates, and audit logs to ensure adherence to specified regulations. Outputs branch metadata including branch name, commit ID, and summary of compliance tasks applied.", + "category": "compliance-management", + "parameters": [ + { + "name": "repositoryUrl", + "type": "string", + "description": "URL of the source code repository where the branch will be created", + "required": true, + "defaultValue": "" + }, + { + "name": "baseBranch", + "type": "string", + "description": "The base branch name to create the new compliance branch from", + "required": true, + "defaultValue": "main" + }, + { + "name": "compliancePolicy", + "type": "object", + "description": "An object defining compliance policies, rules, or frameworks to integrate into the branch (e.g., GDPR, HIPAA)", + "required": true, + "defaultValue": "" + }, + { + "name": "branchNamePrefix", + "type": "string", + "description": "Prefix to use for naming the new compliance branch", + "required": false, + "defaultValue": "compliance/" + }, + { + "name": "includeAuditTemplates", + "type": "boolean", + "description": "Flag indicating whether to add audit documentation templates to the new branch", + "required": false, + "defaultValue": "true" + }, + { + "name": "commitMessage", + "type": "string", + "description": "Commit message to use for the initial compliance changes commit", + "required": false, + "defaultValue": "Add compliance-enforcing changes and documentation" + } + ], + "returns": { + "type": "object", + "description": "An object containing metadata about the created compliance branch, including branchName, commitId, and a summary of applied compliance modifications." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically create a new branch in a code repository that embeds or enforces specific compliance requirements based on regulations or internal policies. It automates integrating compliance rules, documentation, and audit trail templates into the codebase for audit readiness and regulatory adherence.", + "limitations": "This tool does not perform static code analysis or guarantee full legal compliance. It creates branch scaffolding and templates but human review and custom implementation are necessary.", + "examples": [ + "Create a new compliance branch for GDPR in our backend repo.", + "Build a HIPAA compliance branch including audit templates for the healthcare app.", + "Generate a compliance branch from 'develop' with PCI DSS requirements integrated." + ] + }, + "tags": [ + "compliance", + "code-branch", + "branching", + "policy-integration", + "audit", + "repository" + ], + "examples": [ + { + "inputJson": "{\"repositoryUrl\":\"https://github.com/acme/backend\",\"baseBranch\":\"main\",\"compliancePolicy\":{\"regulation\":\"GDPR\",\"requirements\":[\"dataEncryption\",\"accessControl\"]},\"branchNamePrefix\":\"compliance/\",\"includeAuditTemplates\":true,\"commitMessage\":\"Add GDPR compliance features\"}", + "description": "Build a GDPR compliance branch from main with encryption and access control enforcement, including audit templates." + }, + { + "inputJson": "{\"repositoryUrl\":\"https://gitlab.com/medsys/app\",\"baseBranch\":\"develop\",\"compliancePolicy\":{\"regulation\":\"HIPAA\",\"requirements\":[\"logging\",\"dataMasking\"]},\"branchNamePrefix\":\"compliance/hipaa-\",\"includeAuditTemplates\":false,\"commitMessage\":\"Integrate HIPAA compliance changes\"}", + "description": "Create a HIPAA compliance branch from develop with logging and data masking features but without audit templates." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Branch", + "context": null + } + }, + { + "name": "compliance-management.buildContainer", + "description": "This tool assists in constructing a compliance-focused container environment according to regulatory and policy requirements. It accepts configuration parameters such as container image, compliance standards to enforce, resource limits, and security settings. It processes these inputs to build a container that integrates compliance controls and outputs a deployment-ready container specification detailing the environment and compliance measures.", + "category": "compliance-management", + "parameters": [ + { + "name": "containerImage", + "type": "string", + "description": "The base container image to use for building the compliance container (e.g., 'ubuntu:20.04').", + "required": true, + "defaultValue": "" + }, + { + "name": "complianceStandards", + "type": "array", + "description": "List of compliance standards to enforce inside the container (e.g., ['PCI-DSS','HIPAA']).", + "required": true, + "defaultValue": "" + }, + { + "name": "resourceLimits", + "type": "object", + "description": "CPU and memory resource limits to apply to the container, e.g., {'cpu':'2','memory':'4G'}.", + "required": false, + "defaultValue": "" + }, + { + "name": "enableSecurityModules", + "type": "boolean", + "description": "Flag to enable additional container security modules (e.g., SELinux, AppArmor) for compliance.", + "required": false, + "defaultValue": "false" + }, + { + "name": "auditLogging", + "type": "boolean", + "description": "Whether to include audit logging capabilities inside the container environment.", + "required": false, + "defaultValue": "true" + }, + { + "name": "networkPolicies", + "type": "array", + "description": "List of network policy rules to restrict container network traffic for compliance.", + "required": false, + "defaultValue": "" + }, + { + "name": "runtimeUser", + "type": "string", + "description": "User or role that the container runtime should use to enforce least privilege principle.", + "required": false, + "defaultValue": "root" + } + ], + "returns": { + "type": "object", + "description": "An object that includes the final container specification JSON with compliance controls embedded, security configurations, resource limits, and deployment details." + }, + "aiAgent": { + "useCase": "Use this tool when creating containerized infrastructure that must adhere to specific compliance frameworks. It helps automate embedding compliance controls, security policies, and audit mechanisms into container builds to meet regulatory requirements in environments such as finance, healthcare, or government.", + "limitations": "This tool does not perform runtime compliance monitoring or audit log analysis; it focuses only on building and configuring the container for compliance. It also requires validated compliance standard definitions to be effective.", + "examples": [ + "Build a PCI-DSS compliant container using the official Ubuntu image with resource limits and audit logging enabled.", + "Construct a HIPAA-compliant container that restricts network access and enforces AppArmor security.", + "Generate a container specification for GDPR compliance, enabling audit logging and limiting CPU and memory usage." + ] + }, + "tags": [ + "compliance", + "container", + "build", + "security", + "infrastructure", + "policy enforcement" + ], + "examples": [ + { + "inputJson": "{\"containerImage\":\"ubuntu:20.04\",\"complianceStandards\":[\"PCI-DSS\"],\"resourceLimits\":{\"cpu\":\"2\",\"memory\":\"4G\"},\"enableSecurityModules\":true,\"auditLogging\":true,\"networkPolicies\":[\"deny all inbound\"],\"runtimeUser\":\"nonroot\"}", + "description": "Build a PCI-DSS compliant Ubuntu container with enforced resource limits, SELinux enabled, audit logging, and restricted network traffic." + }, + { + "inputJson": "{\"containerImage\":\"alpine:3.14\",\"complianceStandards\":[\"HIPAA\",\"NIST\"],\"enableSecurityModules\":false,\"auditLogging\":true}", + "description": "Construct a lightweight Alpine container compliant with HIPAA and NIST standards, focusing on audit logging." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Container", + "context": null + } + }, + { + "name": "compliance-management.buildEndpoint", + "description": "This tool generates a compliant API endpoint specification and template code to ensure adherence to relevant regulatory frameworks (e.g., GDPR, HIPAA). It accepts legal compliance requirements, endpoint functionality details, and preferred technology stack, then produces a ready-to-integrate API endpoint definition with embedded compliance checks and documentation.", + "category": "compliance-management", + "parameters": [ + { + "name": "complianceFrameworks", + "type": "array", + "description": "List of compliance frameworks to apply (e.g., GDPR, HIPAA). Each as a string identifier.", + "required": true, + "defaultValue": "" + }, + { + "name": "endpointName", + "type": "string", + "description": "Name of the API endpoint to be created, following naming conventions.", + "required": true, + "defaultValue": "" + }, + { + "name": "httpMethod", + "type": "string", + "description": "HTTP method for the endpoint (GET, POST, PUT, DELETE, etc.).", + "required": true, + "defaultValue": "" + }, + { + "name": "inputSchema", + "type": "object", + "description": "JSON schema object defining expected input data structure and validation rules.", + "required": true, + "defaultValue": "" + }, + { + "name": "responseSchema", + "type": "object", + "description": "JSON schema object describing the API's successful response data structure.", + "required": true, + "defaultValue": "" + }, + { + "name": "techStack", + "type": "string", + "description": "Primary programming language or framework (e.g., Node.js, Python Flask) for code generation.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeAuditLogging", + "type": "boolean", + "description": "Whether to include built-in audit logging compliant with data regulations.", + "required": false, + "defaultValue": "true" + }, + { + "name": "authenticationRequired", + "type": "boolean", + "description": "Flag specifying if the endpoint requires authenticated access.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated endpoint code as a string, compliance summary detailing applied rules, and documentation snippet." + }, + "aiAgent": { + "useCase": "Use this tool when needing to create API endpoints that must comply with data protection and industry regulations. It helps automate embedding compliance controls such as input validation, logging, and access restrictions, simplifying development for regulated environments.", + "limitations": "Does not deploy endpoints or run security audits beyond embedded compliance rules. Does not replace legal consulting and may require developer customization for complex scenarios.", + "examples": [ + "Generate a GDPR-compliant POST endpoint named 'createUser' in Node.js to accept user registration data.", + "Build a HIPAA-compliant GET endpoint 'fetchPatientRecord' requiring authentication and audit logging.", + "Create a RESTful PUT endpoint for updating orders with input and output JSON schemas, using Python Flask." + ] + }, + "tags": [ + "compliance", + "api", + "endpoint", + "code-generation", + "regulation", + "automation" + ], + "examples": [ + { + "inputJson": "{\"complianceFrameworks\":[\"GDPR\"],\"endpointName\":\"createUser\",\"httpMethod\":\"POST\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"email\":{\"type\":\"string\",\"format\":\"email\"},\"password\":{\"type\":\"string\",\"minLength\":8}},\"required\":[\"email\",\"password\"]},\"responseSchema\":{\"type\":\"object\",\"properties\":{\"userId\":{\"type\":\"string\"}},\"required\":[\"userId\"]},\"techStack\":\"Node.js\",\"includeAuditLogging\":true,\"authenticationRequired\":true}", + "description": "Generate a GDPR-compliant POST /createUser endpoint in Node.js with audit logging and authentication, validating email and password input." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Endpoint", + "context": null + } + }, + { + "name": "compliance-management.buildModule", + "description": "This tool generates a compliance module based on specified regulatory requirements and organizational policies. It accepts a list of compliance standards, policy documents, and user preferences, then processes them to produce a structured, configurable code module that helps enforce and monitor compliance across systems.", + "category": "compliance-management", + "parameters": [ + { + "name": "complianceStandards", + "type": "array", + "description": "A list of compliance standards (e.g., GDPR, HIPAA) to be incorporated into the module.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "policyDocuments", + "type": "array", + "description": "An array of policy document texts or structured objects outlining internal compliance rules.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "targetPlatform", + "type": "string", + "description": "The software platform or environment (e.g., web, mobile, backend) for which the compliance module is intended.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired format of the output module (e.g., JavaScript, Python, JSON configuration).", + "required": true, + "defaultValue": "JavaScript" + }, + { + "name": "enableMonitoring", + "type": "boolean", + "description": "Flag to include runtime compliance monitoring features in the module.", + "required": false, + "defaultValue": "false" + }, + { + "name": "moduleName", + "type": "string", + "description": "Optional name for the generated compliance module for identification and documentation purposes.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated compliance module code or configuration, associated metadata, and any warnings about potential compliance gaps." + }, + "aiAgent": { + "useCase": "Agents should use this tool when they need to programmatically generate a compliance enforcement or monitoring module tailored to specific regulatory requirements and organizational policies, especially to automate compliance tasks in software environments.", + "limitations": "This tool cannot guarantee legal compliance or interpret ambiguous policy language. It requires precise input and cannot adapt to changes in regulations without updated input data.", + "examples": [ + "Generate a GDPR and HIPAA compliance module for a web backend in JavaScript with monitoring enabled.", + "Build a compliance module for internal data privacy policies targeting a mobile app, output in Python.", + "Create a JSON configuration module for SOX compliance based on provided policy documents." + ] + }, + "tags": [ + "compliance", + "module", + "code-generation", + "regulations", + "policy-enforcement", + "automation", + "monitoring" + ], + "examples": [ + { + "inputJson": "{\"complianceStandards\":[\"GDPR\",\"HIPAA\"],\"policyDocuments\":[\"Data must be encrypted at rest and in transit.\",\"Access logs must be maintained for 6 months.\"],\"targetPlatform\":\"backend\",\"outputFormat\":\"JavaScript\",\"enableMonitoring\":true,\"moduleName\":\"ComplianceModuleV1\"}", + "description": "Build a JavaScript backend compliance module enforcing GDPR and HIPAA policies with monitoring enabled." + }, + { + "inputJson": "{\"complianceStandards\":[\"SOX\"],\"policyDocuments\":[\"All financial transactions must be logged.\",\"User roles must be segregated based on access levels.\"],\"targetPlatform\":\"web\",\"outputFormat\":\"JSON\",\"enableMonitoring\":false,\"moduleName\":\"SOXConfig\"}", + "description": "Generate a JSON configuration module for SOX compliance focused on financial logs and role segregation without monitoring." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Module", + "context": null + } + }, + { + "name": "compliance-management.generateDashboard", + "description": "Generates an interactive compliance dashboard by aggregating regulatory data, audit reports, and policy adherence metrics. Accepts filters such as date ranges, compliance standards, and departments to tailor the data. Outputs visual analytics and key compliance indicators to support risk management and decision-making.", + "category": "compliance-management", + "parameters": [ + { + "name": "startDate", + "type": "string", + "description": "The start date for compliance data filtering in ISO 8601 format (e.g., 2024-01-01).", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "The end date for compliance data filtering in ISO 8601 format (e.g., 2024-01-31).", + "required": true, + "defaultValue": "" + }, + { + "name": "complianceStandards", + "type": "array", + "description": "List of compliance standards to include (e.g., ['GDPR','HIPAA']). If empty, all standards are included.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "departments", + "type": "array", + "description": "List of department names to filter data (e.g., ['Finance','IT']). If empty, includes all departments.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeAuditFindings", + "type": "boolean", + "description": "Whether to include audit findings summary in the dashboard.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format of the dashboard (e.g., 'interactive', 'pdf', 'html'). Defaults to 'interactive'.", + "required": false, + "defaultValue": "interactive" + } + ], + "returns": { + "type": "object", + "description": "A structured dashboard object containing compliance metrics, visual charts, key risk indicators, and audit summaries as specified. Suitable for display or export in requested format." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to provide a comprehensive compliance overview that aggregates multiple data sources filtered by dates, standards, and departments. Ideal for generating reports that help compliance officers and managers monitor adherence and risks easily.", + "limitations": "Cannot perform real-time data fetching; relies on pre-aggregated or accessible compliance data. Does not replace legal advice or interpret standards beyond provided data.", + "examples": [ + "Generate a GDPR and HIPAA compliance dashboard for Q1 2024 focusing on IT and HR departments.", + "Create a PDF report summarizing audit findings and compliance status of the Finance department for 2023.", + "Produce an interactive dashboard covering all compliance standards for the last fiscal year with key risk indicators." + ] + }, + "tags": [ + "compliance", + "dashboard", + "analytics", + "reporting", + "regulatory", + "audit", + "risk-management" + ], + "examples": [ + { + "inputJson": "{\"startDate\":\"2024-01-01\",\"endDate\":\"2024-03-31\",\"complianceStandards\":[\"GDPR\",\"HIPAA\"],\"departments\":[\"IT\",\"HR\"],\"includeAuditFindings\":true,\"outputFormat\":\"interactive\"}", + "description": "Generate an interactive compliance dashboard for GDPR and HIPAA standards for IT and HR departments for Q1 2024 including audit findings." + }, + { + "inputJson": "{\"startDate\":\"2023-01-01\",\"endDate\":\"2023-12-31\",\"complianceStandards\":[],\"departments\":[\"Finance\"],\"includeAuditFindings\":true,\"outputFormat\":\"pdf\"}", + "description": "Create a PDF compliance report covering all standards with audit findings for the Finance department in 2023." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Dashboard", + "context": null + } + }, + { + "name": "compliance-management.createDashboard", + "description": "Creates a customizable compliance dashboard by accepting compliance domain, selected regulations, and data sources. It processes compliance data to aggregate key metrics and visualizes compliance status, trends, and alerts in an interactive dashboard output.", + "category": "compliance-management", + "parameters": [ + { + "name": "complianceDomain", + "type": "string", + "description": "The specific compliance domain such as GDPR, HIPAA, or SOX to focus the dashboard on.", + "required": true, + "defaultValue": "" + }, + { + "name": "selectedRegulations", + "type": "array", + "description": "List of regulations or policies to include in compliance analysis and reporting.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "dataSources", + "type": "array", + "description": "A list of identifiers or endpoints for data sources to be integrated for compliance metric extraction.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "dashboardTitle", + "type": "string", + "description": "Title to display at the top of the dashboard.", + "required": false, + "defaultValue": "\"Compliance Dashboard\"" + }, + { + "name": "refreshIntervalMinutes", + "type": "number", + "description": "Number of minutes between automatic data refreshes on the dashboard.", + "required": false, + "defaultValue": "60" + }, + { + "name": "includeAlerts", + "type": "boolean", + "description": "Whether to include real-time compliance alerts and notifications on the dashboard.", + "required": false, + "defaultValue": "true" + }, + { + "name": "visualizationTypes", + "type": "array", + "description": "Preferred visualization types to use in the dashboard e.g. charts, tables, gauges.", + "required": false, + "defaultValue": "[\"charts\",\"tables\"]" + } + ], + "returns": { + "type": "object", + "description": "An object representing the rendered compliance dashboard including data summaries, visual components, and configuration metadata." + }, + "aiAgent": { + "useCase": "This tool is used when an agent needs to generate a real-time or periodic summary compliance dashboard tailored to specific regulations and data sources. It is useful for monitoring compliance status, identifying issues, and providing stakeholders a consolidated view for governance or audit purposes.", + "limitations": "Does not collect raw data itself; requires pre-integrated data sources. Does not automate remediation, only visualization and alerting. Visualization customization is limited to predefined types.", + "examples": [ + "Create a GDPR compliance dashboard showing data privacy status with alerts.", + "Generate a dashboard for HIPAA and SOX regulations combining audit logs and incident reports.", + "Set up a compliance dashboard with hourly refresh for ongoing PCI DSS monitoring." + ] + }, + "tags": [ + "compliance", + "dashboard", + "monitoring", + "analytics", + "regulation", + "visualization", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"complianceDomain\":\"GDPR\",\"selectedRegulations\":[\"GDPR Article 5\",\"GDPR Article 32\"],\"dataSources\":[\"database1\",\"logSystemA\"],\"dashboardTitle\":\"GDPR Compliance Overview\",\"refreshIntervalMinutes\":30,\"includeAlerts\":true,\"visualizationTypes\":[\"charts\",\"tables\"]}", + "description": "Create a GDPR-focused compliance dashboard with data from two sources, refreshing every 30 minutes, including alerts, using charts and tables visualizations." + }, + { + "inputJson": "{\"complianceDomain\":\"HIPAA\",\"selectedRegulations\":[\"HIPAA Privacy Rule\"],\"dataSources\":[\"healthRecordsDB\"],\"dashboardTitle\":\"HIPAA Privacy Compliance\",\"refreshIntervalMinutes\":60,\"includeAlerts\":false,\"visualizationTypes\":[\"gauges\"]}", + "description": "Generate a HIPAA Privacy Rule compliance dashboard from health records DB with gauges only, no alerts, updating hourly." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dashboard", + "context": null + } + }, + { + "name": "compliance-management.generateArticle", + "description": "Generates a compliance-related article based on regulatory topics, jurisdiction, and industry. Accepts inputs specifying the article topic, target regulations, jurisdiction, desired length, and industry focus. Produces a coherent, well-structured article draft suitable for compliance documentation or informational resources.", + "category": "compliance-management", + "parameters": [ + { + "name": "topic", + "type": "string", + "description": "The main compliance topic or regulation to cover in the article (e.g., GDPR data privacy).", + "required": true, + "defaultValue": "" + }, + { + "name": "jurisdiction", + "type": "string", + "description": "The legal jurisdiction or geographic region relevant to the article (e.g., EU, US, California).", + "required": true, + "defaultValue": "" + }, + { + "name": "industry", + "type": "string", + "description": "The industry sector the article should target (e.g., finance, healthcare).", + "required": false, + "defaultValue": "" + }, + { + "name": "articleLength", + "type": "number", + "description": "Desired approximate length of the article in words.", + "required": false, + "defaultValue": "1000" + }, + { + "name": "includeLatestUpdates", + "type": "boolean", + "description": "Whether to include the latest regulatory updates or amendments in the article.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "The language code for the article output (e.g., en, fr).", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated article text and metadata like the topic, jurisdiction, and length." + }, + "aiAgent": { + "useCase": "Use this tool when needing to create informative compliance articles tailored to specific regulations, jurisdictions, or industries. Ideal for compliance teams, legal advisors, or content creators who require preliminary drafts of regulatory content for education, training, or documentation purposes. It helps automate initial writing based on structured input parameters.", + "limitations": "Cannot replace expert legal advice or ensure full legal compliance. Articles are drafts and may require review by qualified personnel for accuracy and completeness. May not capture the very latest legal changes if the data source is outdated.", + "examples": [ + "Generate an article on GDPR compliance requirements in the EU for the healthcare industry.", + "Create a 1500-word article summarizing recent updates to US financial compliance regulations.", + "Draft a basic overview article on California privacy laws for technology companies." + ] + }, + "tags": [ + "compliance", + "article-generation", + "regulations", + "legal", + "documentation", + "content-creation", + "automated-writing" + ], + "examples": [ + { + "inputJson": "{\"topic\":\"GDPR data privacy\",\"jurisdiction\":\"EU\",\"industry\":\"healthcare\",\"articleLength\":1200,\"includeLatestUpdates\":true,\"language\":\"en\"}", + "description": "Generate a 1200-word article about GDPR compliance for the healthcare sector in the EU including the latest updates." + }, + { + "inputJson": "{\"topic\":\"US financial compliance\",\"jurisdiction\":\"US\",\"industry\":\"finance\",\"articleLength\":1500,\"includeLatestUpdates\":false,\"language\":\"en\"}", + "description": "Create a 1500-word article summarizing US financial compliance regulations without the latest amendments." + }, + { + "inputJson": "{\"topic\":\"California privacy laws\",\"jurisdiction\":\"California\",\"industry\":\"technology\",\"articleLength\":800,\"includeLatestUpdates\":true,\"language\":\"en\"}", + "description": "Draft an 800-word overview article on California privacy laws tailored for tech companies including recent changes." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Article", + "context": null + } + }, + { + "name": "compliance-management.createComment", + "description": "Creates a compliance-related comment within a specific regulatory case or audit record. Accepts inputs including case ID, user ID, comment text, and optional tags or attachments. Processes and stores the comment linked to the compliance case, returning confirmation and comment metadata.", + "category": "compliance-management", + "parameters": [ + { + "name": "caseId", + "type": "string", + "description": "Unique identifier of the compliance case or audit record to which the comment belongs.", + "required": true, + "defaultValue": "" + }, + { + "name": "userId", + "type": "string", + "description": "Identifier of the user or system creating the comment, for audit trails.", + "required": true, + "defaultValue": "" + }, + { + "name": "commentText", + "type": "string", + "description": "Text content of the compliance comment to add.", + "required": true, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Optional list of tags categorizing the comment (e.g., 'risk', 'note', 'follow-up').", + "required": false, + "defaultValue": "[]" + }, + { + "name": "attachments", + "type": "array", + "description": "Optional list of attachment references (e.g., URLs or file IDs) associated with the comment.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted datetime string representing when the comment was created. Defaults to current time if empty.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object confirming comment creation with the comment ID, linked case ID, timestamp, and status message." + }, + "aiAgent": { + "useCase": "Use this tool when the AI needs to document observations, concerns, or updates within a compliance or regulatory case system. It is suitable for creating audit trail comments, clarifications, or follow-up notes to ensure traceability and accountability in compliance workflows.", + "limitations": "This tool only creates comments; it cannot modify or delete existing comments, nor can it analyze or validate the content of compliance cases themselves.", + "examples": [ + "Create a comment with a note about an identified risk in case CA12345.", + "Add a follow-up comment linked to an audit case for user ID U456.", + "Submit a comment tagging it as 'urgent' with an attached evidence file reference." + ] + }, + "tags": [ + "compliance", + "comment", + "audit", + "documentation", + "case-management" + ], + "examples": [ + { + "inputJson": "{\"caseId\":\"CA12345\",\"userId\":\"U789\",\"commentText\":\"Identified potential conflict of interest in vendor selection.\",\"tags\":[\"risk\",\"vendor\"],\"attachments\":[],\"timestamp\":\"2024-06-01T10:15:30Z\"}", + "description": "Adding a risk-related comment about vendor conflict in a compliance case." + }, + { + "inputJson": "{\"caseId\":\"AUD202406\",\"userId\":\"AUD001\",\"commentText\":\"Requesting further documents from finance department.\",\"tags\":[\"follow-up\"],\"attachments\":[\"file123.pdf\"],\"timestamp\":\"\"}", + "description": "Creating a follow-up comment with an attachment, timestamp defaults to current time." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Comment", + "context": null + } + }, + { + "name": "compliance-management.createCredential", + "description": "Creates a compliance credential representing verified adherence to specific regulatory requirements or internal policies. Accepts inputs detailing the credential type, issuer, recipient, scope, expiration, and related metadata. Processes and validates input parameters to generate a secure credential object output, which can be stored or shared for compliance verification.", + "category": "compliance-management", + "parameters": [ + { + "name": "credentialType", + "type": "string", + "description": "Specifies the type of compliance credential to create (e.g., GDPR, HIPAA, ISO27001).", + "required": true, + "defaultValue": "" + }, + { + "name": "issuer", + "type": "string", + "description": "The entity issuing this credential, typically an organization or compliance officer's identifier.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipient", + "type": "string", + "description": "Identifier of the individual or organization receiving the credential.", + "required": true, + "defaultValue": "" + }, + { + "name": "scope", + "type": "string", + "description": "Defines the scope or domain of compliance covered by this credential.", + "required": true, + "defaultValue": "" + }, + { + "name": "issueDate", + "type": "string", + "description": "Date the credential is issued, in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "expirationDate", + "type": "string", + "description": "Date when the credential expires, in ISO 8601 format (YYYY-MM-DD), if applicable.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Additional optional metadata as key-value pairs related to the credential.", + "required": false, + "defaultValue": "" + }, + { + "name": "isRevocable", + "type": "boolean", + "description": "Indicates if the credential can be revoked before expiration.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created compliance credential, including a unique credentialId, full details provided, issued status, and timestamps." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically generate and issue compliance credentials to demonstrate an entity's adherence to required regulations or company policies. Ideal for automated compliance workflows that require verifiable credentials for audits, reporting, or access control.", + "limitations": "This tool does not verify the compliance status itself; it only creates the credential representation. Verification of underlying compliance conditions must be conducted externally. It does not handle credential storage or distribution.", + "examples": [ + "Create a GDPR compliance credential for a staff member issued by the company.", + "Generate an ISO27001 certification credential with specific metadata and expiry date.", + "Issue a HIPAA compliance credential to a healthcare provider with revocable status." + ] + }, + "tags": [ + "compliance", + "credential", + "security", + "regulation", + "issuer", + "recipient", + "verification" + ], + "examples": [ + { + "inputJson": "{\"credentialType\":\"GDPR\",\"issuer\":\"CompanyX-ComplianceDept\",\"recipient\":\"user123\",\"scope\":\"PersonalDataHandling\",\"issueDate\":\"2024-06-01\",\"expirationDate\":\"2025-06-01\",\"metadata\":{\"department\":\"Legal\",\"level\":\"Level1\"},\"isRevocable\":true}", + "description": "Create a GDPR compliance credential for an individual with specified metadata and expiration." + }, + { + "inputJson": "{\"credentialType\":\"ISO27001\",\"issuer\":\"AcmeCorp-ComplianceTeam\",\"recipient\":\"partner456\",\"scope\":\"InformationSecurityManagement\",\"issueDate\":\"2024-06-01\",\"metadata\":{\"certificationLevel\":\"Full\",\"auditPeriod\":\"2023-2024\"},\"isRevocable\":false}", + "description": "Create a non-revocable ISO27001 credential for a business partner with audit metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Credential", + "context": null + } + }, + { + "name": "compliance-management.createInstance", + "description": "Creates a new compliance management instance in the infrastructure domain by configuring required regulatory standards, compliance rules, and environment settings. Accepts input parameters for instance name, compliance standards (e.g., GDPR, HIPAA), and optional descriptions. Returns details including instance ID, status, and configured standards.", + "category": "compliance-management", + "parameters": [ + { + "name": "instanceName", + "type": "string", + "description": "Unique name to identify the compliance management instance", + "required": true, + "defaultValue": "" + }, + { + "name": "complianceStandards", + "type": "array", + "description": "List of compliance standards to apply, e.g., ['GDPR','HIPAA']", + "required": true, + "defaultValue": "" + }, + { + "name": "environment", + "type": "string", + "description": "Target environment for the instance, e.g., 'production', 'staging'", + "required": false, + "defaultValue": "production" + }, + { + "name": "description", + "type": "string", + "description": "Optional human-readable description for the instance", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Details of the created compliance instance including ID, name, environment, standards applied, creation timestamp, and status" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to provision and configure a new compliance management instance in an infrastructure environment, specifying applicable regulatory standards and environment context to ensure automated compliance workflows are established.", + "limitations": "This tool does not perform compliance audits or monitor compliance status beyond initial instance creation. It assumes valid compliance standards are provided.", + "examples": [ + "Create a compliance instance named 'EU GDPR Compliance' applying GDPR standard in production.", + "Set up a staging compliance environment applying HIPAA and PCI DSS standards.", + "Create a new compliance instance with description for internal audit purposes." + ] + }, + "tags": [ + "compliance", + "infrastructure", + "instance-creation", + "regulatory", + "automation" + ], + "examples": [ + { + "inputJson": "{\"instanceName\":\"EU GDPR Compliance\",\"complianceStandards\":[\"GDPR\"],\"environment\":\"production\",\"description\":\"Compliance instance for GDPR requirements in EU region\"}", + "description": "Create a production compliance instance applying GDPR standard with descriptive metadata." + }, + { + "inputJson": "{\"instanceName\":\"Health Data Compliance\",\"complianceStandards\":[\"HIPAA\",\"PCI DSS\"],\"environment\":\"staging\"}", + "description": "Set up staging environment compliance instance for healthcare-related regulations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Instance", + "context": null + } + }, + { + "name": "compliance-management.createRisk", + "description": "Creates a detailed risk record for compliance management by accepting inputs such as risk title, description, category, likelihood and impact ratings, and controls. It processes these inputs to compute a risk score and returns a structured risk object that can be stored or used for further compliance analysis.", + "category": "compliance-management", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The short, descriptive name of the risk to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Detailed explanation of the nature of the risk and its potential impact.", + "required": true, + "defaultValue": "" + }, + { + "name": "category", + "type": "string", + "description": "The compliance-related category of the risk, e.g. Data Privacy, Regulatory, Operational.", + "required": true, + "defaultValue": "" + }, + { + "name": "likelihood", + "type": "number", + "description": "Numeric likelihood rating of the risk occurring, typically on a scale from 1 (low) to 5 (high).", + "required": true, + "defaultValue": "" + }, + { + "name": "impact", + "type": "number", + "description": "Numeric impact rating if the risk materializes, typically on a scale from 1 (low) to 5 (high).", + "required": true, + "defaultValue": "" + }, + { + "name": "existingControls", + "type": "array", + "description": "List of existing controls or mitigations addressing this risk.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "riskOwner", + "type": "string", + "description": "Name or identifier of the individual responsible for managing this risk.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created risk, including computed risk score, and all input fields for tracking and further assessment." + }, + "aiAgent": { + "useCase": "Use this tool when needing to formalize and document a compliance-related risk by capturing essential details such as likelihood, impact, and controls to generate a risk profile useful in compliance programs and risk registers.", + "limitations": "This tool does not perform automated risk identification or dynamic risk analysis; it requires manual input of risk parameters.", + "examples": [ + "Create a risk for potential GDPR violation due to insufficient data encryption, likelihood 4, impact 5.", + "Log a regulatory compliance risk related to delayed reporting, likelihood 3, impact 4, with existing controls noted.", + "Document an operational risk category regarding supplier failure with moderate likelihood and impact ratings." + ] + }, + "tags": [ + "compliance", + "risk management", + "risk creation", + "security", + "governance", + "policy" + ], + "examples": [ + { + "inputJson": "{\"title\":\"GDPR Violation Risk\",\"description\":\"Risk of non-compliance with GDPR due to insufficient data encryption\",\"category\":\"Data Privacy\",\"likelihood\":4,\"impact\":5,\"existingControls\":[\"Encryption policy\",\"Regular audits\"],\"riskOwner\":\"John Doe\"}", + "description": "Create a data privacy risk for GDPR non-compliance with high likelihood and impact." + }, + { + "inputJson": "{\"title\":\"Regulatory Reporting Delay\",\"description\":\"Risk of delayed submission of mandatory reports to regulators\",\"category\":\"Regulatory\",\"likelihood\":3,\"impact\":4,\"existingControls\":[\"Automated alerts\"],\"riskOwner\":\"Jane Smith\"}", + "description": "Log a regulatory compliance risk with moderate likelihood and impact including controls." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Risk", + "context": null + } + }, + { + "name": "compliance-management.createPayment", + "description": "Creates a payment record compliant with relevant regulatory and internal policy frameworks. Accepts payment details including payer info, amount, currency, and compliance metadata, validates input against compliance rules, and outputs a payment record with compliance status and audit trail references.", + "category": "compliance-management", + "parameters": [ + { + "name": "payerId", + "type": "string", + "description": "Unique identifier of the payer initiating the payment, required for compliance tracking.", + "required": true, + "defaultValue": "" + }, + { + "name": "amount", + "type": "number", + "description": "The monetary amount of the payment in specified currency, must be positive.", + "required": true, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "ISO currency code for the payment (e.g., USD, EUR).", + "required": true, + "defaultValue": "" + }, + { + "name": "paymentMethod", + "type": "string", + "description": "Method used for payment such as credit card, bank transfer, or digital wallet.", + "required": true, + "defaultValue": "" + }, + { + "name": "transactionDate", + "type": "string", + "description": "ISO 8601 date-time string representing when the payment occurs.", + "required": true, + "defaultValue": "" + }, + { + "name": "complianceChecklist", + "type": "array", + "description": "Array of compliance rule identifiers to validate the payment against (e.g., AML, KYC).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional data related to the payment for compliance auditing and tracking.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "An object containing the created payment record ID, compliance validation status, detailed compliance results, and references to audit logs." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to initiate or record a payment transaction that must adhere to regulatory and internal compliance requirements. This includes verifying payment details against AML/KYC rules and generating a compliance report as part of the payment record. It ensures that any payment processed is accompanied by audit evidence and compliance validation.", + "limitations": "This tool does not execute the actual monetary transfer or handle payment settlement. It only creates and validates payment records for compliance purposes. Real-time interaction with payment gateways or financial institutions is outside its scope.", + "examples": [ + "Create a payment record for a client including KYC and AML compliance check.", + "Log a completed payment with audit metadata for regulatory reporting.", + "Generate a payment entry validating payment method and amount within compliance constraints." + ] + }, + "tags": [ + "compliance", + "payment", + "recordCreation", + "aml", + "kyc", + "audit", + "finance" + ], + "examples": [ + { + "inputJson": "{\"payerId\":\"user123\",\"amount\":250.75,\"currency\":\"USD\",\"paymentMethod\":\"creditCard\",\"transactionDate\":\"2024-06-01T12:30:00Z\",\"complianceChecklist\":[\"AML\",\"KYC\"],\"metadata\":{\"invoiceId\":\"inv789\",\"department\":\"sales\"}}", + "description": "Creating a payment record for a customer, verifying AML and KYC compliance, including invoice reference metadata." + }, + { + "inputJson": "{\"payerId\":\"corporate456\",\"amount\":10000,\"currency\":\"EUR\",\"paymentMethod\":\"bankTransfer\",\"transactionDate\":\"2024-06-01T15:45:00Z\",\"complianceChecklist\":[\"AML\"]}", + "description": "Creating a high-value payment record with AML compliance check via bank transfer method." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Payment", + "context": null + } + }, + { + "name": "compliance-management.createTable", + "description": "Creates a structured compliance data table to organize and track regulatory or policy requirements, statuses, and associated documents. Accepts a list of compliance items with attributes like requirement ID, description, status, priority, and owner. Outputs a formatted table data structure suitable for reporting and management systems.", + "category": "compliance-management", + "parameters": [ + { + "name": "tableName", + "type": "string", + "description": "Name of the compliance table being created, identifying its purpose or scope.", + "required": true, + "defaultValue": "" + }, + { + "name": "columns", + "type": "array", + "description": "An array of column definitions specifying the columns in the table; each column includes name, type (string, number, boolean, date), and optional description.", + "required": true, + "defaultValue": "" + }, + { + "name": "rows", + "type": "array", + "description": "Array of row objects, each representing a compliance item with keys corresponding to the defined columns.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include column headers as part of the output table representation.", + "required": false, + "defaultValue": "true" + }, + { + "name": "sortByColumn", + "type": "string", + "description": "Optional column name by which to sort the table rows for easier review.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured object representing the compliance table with metadata, columns, and rows formatted for downstream processing or display." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically generate a structured compliance tracking table from raw compliance data inputs, such as requirement lists or audit findings, to enable systematic monitoring and reporting of regulatory adherence.", + "limitations": "This tool does not perform compliance auditing, validation, or generate policy content; it only structures provided data into a standardized table format.", + "examples": [ + "Create a table of GDPR compliance requirements with status and owners.", + "Generate a compliance tracking table sorted by risk priority.", + "Build a table including custom columns for a new regulatory framework." + ] + }, + "tags": [ + "compliance", + "table", + "data-organization", + "reporting", + "regulatory", + "tracking", + "management" + ], + "examples": [ + { + "inputJson": "{\"tableName\":\"GDPR Compliance Tracker\",\"columns\":[{\"name\":\"requirementId\",\"type\":\"string\",\"description\":\"Unique ID of the compliance requirement\"},{\"name\":\"description\",\"type\":\"string\",\"description\":\"Description of the compliance requirement\"},{\"name\":\"status\",\"type\":\"string\",\"description\":\"Current status such as Compliant, Non-Compliant, or Pending\"},{\"name\":\"priority\",\"type\":\"string\",\"description\":\"Priority level such as High, Medium, Low\"},{\"name\":\"owner\",\"type\":\"string\",\"description\":\"Responsible person or team\"}],\"rows\":[{\"requirementId\":\"R1\",\"description\":\"Data encryption at rest\",\"status\":\"Compliant\",\"priority\":\"High\",\"owner\":\"IT Security\"},{\"requirementId\":\"R2\",\"description\":\"Data retention policy\",\"status\":\"Pending\",\"priority\":\"Medium\",\"owner\":\"Legal\"}],\"includeHeaders\":true,\"sortByColumn\":\"priority\"}", + "description": "Create a GDPR compliance tracking table including columns for requirement ID, description, status, priority level, and owner, sorting the rows by priority." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Table", + "context": null + } + }, + { + "name": "compliance-management.createVideo", + "description": "Creates a compliance training video based on provided regulatory content, policies, and branding guidelines. Accepts text scripts or documents, processes the content to generate a structured video storyboard, and outputs a finalized video file suitable for employee training and audit purposes.", + "category": "compliance-management", + "parameters": [ + { + "name": "scriptText", + "type": "string", + "description": "The main text or script content for the compliance training video.", + "required": true, + "defaultValue": "" + }, + { + "name": "policyDocuments", + "type": "array", + "description": "List of URLs or file paths to policy documents to incorporate or reference in the video.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "videoLengthLimitMinutes", + "type": "number", + "description": "Maximum length of the video in minutes. The tool will adjust content length accordingly.", + "required": false, + "defaultValue": "10" + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en', 'es') for narration and captions.", + "required": true, + "defaultValue": "en" + }, + { + "name": "includeCaptions", + "type": "boolean", + "description": "Whether to generate closed captions for the video.", + "required": false, + "defaultValue": "true" + }, + { + "name": "brandingTemplateId", + "type": "string", + "description": "Identifier for the corporate branding template to style the video (colors, logos, fonts).", + "required": false, + "defaultValue": "" + }, + { + "name": "voiceoverStyle", + "type": "string", + "description": "Preferred style of voiceover narration, e.g., 'formal', 'friendly', 'neutral'.", + "required": false, + "defaultValue": "neutral" + } + ], + "returns": { + "type": "object", + "description": "An object containing the video URL, duration in seconds, video format, and a summary of included content." + }, + "aiAgent": { + "useCase": "This tool should be used when compliance officers or training coordinators need to produce standardized, clear, and engaging video content to educate employees on regulatory requirements, internal policies, or procedures, helping organizations meet audit and training mandates efficiently.", + "limitations": "The tool cannot create highly customized or interactive videos; it relies on provided text/scripts and templates, and does not handle live filming or real-person actor integration.", + "examples": [ + "Create a 7-minute compliance video in English using provided privacy policy documents and a friendly voiceover style.", + "Generate a video with captions for workplace safety regulations, using the company’s branding template ID 'corp123'.", + "Produce a Spanish-language video summarizing anti-harassment policies with a formal narration tone." + ] + }, + "tags": [ + "compliance", + "video", + "training", + "regulation", + "employee-education", + "automation", + "policy" + ], + "examples": [ + { + "inputJson": "{\"scriptText\":\"Welcome to the data privacy compliance training. This video explains core GDPR requirements employees must follow.\",\"policyDocuments\":[\"https://company.com/docs/gdpr_policy.pdf\"],\"videoLengthLimitMinutes\":5,\"language\":\"en\",\"includeCaptions\":true,\"brandingTemplateId\":\"brand001\",\"voiceoverStyle\":\"formal\"}", + "description": "Creates a 5-minute GDPR compliance training video in English with captions and formal voiceover using the company branding." + }, + { + "inputJson": "{\"scriptText\":\"Este video explica las políticas contra el acoso laboral.\",\"policyDocuments\":[],\"videoLengthLimitMinutes\":6,\"language\":\"es\",\"includeCaptions\":true,\"brandingTemplateId\":\"\",\"voiceoverStyle\":\"neutral\"}", + "description": "Produces a 6-minute Spanish compliance video on anti-harassment policies with captions and neutral narration, without branding template." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Video", + "context": null + } + }, + { + "name": "compliance-management.createVariable", + "description": "Creates a compliance variable used in regulatory and policy compliance workflows. Accepts details like variable name, data type, description, default value, and applicable regulations. Processes inputs to define a tracked variable for compliance checks and outputs a confirmation with the variable's metadata and a unique ID.", + "category": "compliance-management", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The unique name identifier for the compliance variable.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataType", + "type": "string", + "description": "The data type of the variable (e.g., string, number, boolean).", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A detailed explanation of what the variable represents and its usage.", + "required": false, + "defaultValue": "" + }, + { + "name": "defaultValue", + "type": "string", + "description": "The initial or default value assigned to this variable if applicable.", + "required": false, + "defaultValue": "" + }, + { + "name": "applicableRegulations", + "type": "array", + "description": "List of regulatory frameworks (e.g., GDPR, HIPAA) that this variable relates to.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "isMandatory", + "type": "boolean", + "description": "Indicates whether this variable is mandatory to be filled during compliance checks.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the newly created variable's unique ID, name, data type, description, default value, mandatory status, and related regulations." + }, + "aiAgent": { + "useCase": "Use this tool when you need to define new variables that represent compliance-related data points in your organization's regulatory management system. This helps in structuring and tracking compliance parameters for audits and policy enforcement.", + "limitations": "This tool does not validate the correctness of data types beyond basic string formats and does not enforce regulatory compliance rules autonomously. It only defines variables for compliance tracking.", + "examples": [ + "Create a boolean variable named 'dataRetentionConsent' related to GDPR that is mandatory.", + "Define a variable 'accessLevel' as a string with a default value 'user' applicable to internal compliance policies.", + "Add a numeric variable 'auditFrequency' for HIPAA compliance with no default value." + ] + }, + "tags": [ + "compliance", + "variable", + "create", + "regulatory", + "policy", + "data management" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"dataRetentionConsent\",\"dataType\":\"boolean\",\"description\":\"Indicates if user consent for data retention is given.\",\"defaultValue\":\"false\",\"applicableRegulations\":[\"GDPR\"],\"isMandatory\":true}", + "description": "Creates a mandatory boolean compliance variable to track user consent under GDPR." + }, + { + "inputJson": "{\"variableName\":\"accessLevel\",\"dataType\":\"string\",\"description\":\"Defines access privileges for internal resources.\",\"defaultValue\":\"user\",\"applicableRegulations\":[\"InternalPolicy\"]}", + "description": "Defines an access level variable with a default string value for internal compliance." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Variable", + "context": null + } + }, + { + "name": "compliance-management.createComponent", + "description": "This tool creates a compliance management component based on given regulatory or policy requirements. It accepts regulatory framework details, component type, and optional configuration metadata. The tool processes inputs to generate a standardized compliance component definition, including metadata and compliance controls, outputted as a JSON object suitable for integration into compliance systems.", + "category": "compliance-management", + "parameters": [ + { + "name": "componentName", + "type": "string", + "description": "The name identifier for the compliance component to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "regulatoryFramework", + "type": "string", + "description": "The regulatory or policy framework that the compliance component must adhere to, e.g., GDPR, HIPAA.", + "required": true, + "defaultValue": "" + }, + { + "name": "componentType", + "type": "string", + "description": "The type of compliance component to create, such as Policy, Control, Procedure, or Checklist.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A detailed description of the compliance component.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional metadata related to the component such as version, owner, applicable departments, or tags.", + "required": false, + "defaultValue": "" + }, + { + "name": "effectiveDate", + "type": "string", + "description": "The effective date when the compliance component becomes applicable (ISO 8601 format).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured JSON object representing the created compliance component, including component ID, name, type, framework, description, metadata, and creation timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate compliance-related code components reflecting specific regulatory frameworks or internal policies, to automate compliance system setups or facilitate tracking and auditing. It helps bridge policy text to executable or definitional compliance artifacts.", + "limitations": "This tool does not validate regulatory requirements for legal accuracy or completeness; it assumes valid input frameworks and does not connect to live regulatory databases or compliance validation engines.", + "examples": [ + "Create a policy component for GDPR data processing compliance.", + "Generate a security control component aligned with HIPAA.", + "Create a checklist component for SOC 2 audit readiness." + ] + }, + "tags": [ + "compliance", + "component", + "policy", + "control", + "automation", + "regulation", + "framework" + ], + "examples": [ + { + "inputJson": "{\"componentName\":\"DataRetentionPolicy\",\"regulatoryFramework\":\"GDPR\",\"componentType\":\"Policy\",\"description\":\"Policy defining data retention periods per GDPR requirements.\",\"metadata\":{\"version\":\"1.0\",\"owner\":\"ComplianceTeam\"},\"effectiveDate\":\"2024-07-01\"}", + "description": "Create a GDPR data retention policy component with metadata and effective date." + }, + { + "inputJson": "{\"componentName\":\"AccessControlProcedure\",\"regulatoryFramework\":\"HIPAA\",\"componentType\":\"Procedure\",\"description\":\"Procedure to control access to patient records.\",\"metadata\":{\"version\":\"2.1\",\"owner\":\"SecurityTeam\",\"tags\":[\"access\",\"security\"]}}", + "description": "Create a HIPAA procedure component for access control with versioning and tags." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Component", + "context": null + } + }, + { + "name": "security-tools.analyzeConversion", + "description": "Analyzes security conversion metrics by processing event logs or analytics data to identify conversion rates of security-related actions such as successful authentications, multi-factor enrollment, or security alert responses. Accepts structured input like event arrays or URLs to fetch data, computes conversion statistics, and returns detailed analytics including conversion rates, drop-off points, and recommendations to improve security engagement.", + "category": "security-tools", + "parameters": [ + { + "name": "inputData", + "type": "array", + "description": "An array of structured event objects representing user security actions (e.g., login attempts, MFA enrollments). Each event should include timestamps, event types, and user identifiers.", + "required": false, + "defaultValue": "" + }, + { + "name": "dataUrl", + "type": "string", + "description": "URL to fetch event log data in JSON format if inputData is not directly provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "conversionEventType", + "type": "string", + "description": "The specific security event to analyze for conversion, such as 'MFA Enrollment' or 'Password Reset Completion'.", + "required": true, + "defaultValue": "MFA Enrollment" + }, + { + "name": "startTime", + "type": "string", + "description": "ISO 8601 formatted string representing the start time for the analysis window.", + "required": false, + "defaultValue": "" + }, + { + "name": "endTime", + "type": "string", + "description": "ISO 8601 formatted string representing the end time for the analysis window.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeDropOffAnalysis", + "type": "boolean", + "description": "Whether to include detailed drop-off or funnel analysis between steps leading to the conversion event.", + "required": false, + "defaultValue": "true" + }, + { + "name": "minimumEventCount", + "type": "number", + "description": "Minimum count of events per user/session to be included in the analysis for data reliability.", + "required": false, + "defaultValue": "1" + } + ], + "returns": { + "type": "object", + "description": "An object containing the conversion rate percentage, total number of users/events analyzed, drop-off stage details if requested, and actionable recommendations to improve security-related conversion rates." + }, + "aiAgent": { + "useCase": "Use this tool when tasked with measuring and improving user engagement in security processes such as MFA enrollment, password reset completions, or security alert acknowledgments. It helps identify where users drop off in security workflows and quantifies the effectiveness of security feature adoption.", + "limitations": "This tool cannot perform raw event data extraction from proprietary systems nor can it implement security changes; it only analyzes provided or accessible event data and provides insights based on that data.", + "examples": [ + "Analyze MFA enrollment conversion rates from event logs between two given dates.", + "Evaluate user drop-off during the password reset security flow to improve completion rates.", + "Calculate conversion metrics for security alert acknowledgments to assess responsiveness." + ] + }, + "tags": [ + "security", + "analytics", + "conversion", + "user-behavior", + "MFA", + "authentication", + "funnel-analysis" + ], + "examples": [ + { + "inputJson": "{\"inputData\":[{\"timestamp\":\"2024-05-01T10:00:00Z\",\"eventType\":\"Login\",\"userId\":\"user123\"},{\"timestamp\":\"2024-05-02T12:00:00Z\",\"eventType\":\"MFA Enrollment\",\"userId\":\"user123\"},{\"timestamp\":\"2024-05-01T11:00:00Z\",\"eventType\":\"Login\",\"userId\":\"user456\"}],\"conversionEventType\":\"MFA Enrollment\",\"startTime\":\"2024-05-01T00:00:00Z\",\"endTime\":\"2024-05-07T00:00:00Z\"}", + "description": "Analyze MFA enrollment conversion rates from a set of user event logs within a date range." + }, + { + "inputJson": "{\"dataUrl\":\"https://example.com/securityEvents.json\",\"conversionEventType\":\"Password Reset Completion\",\"includeDropOffAnalysis\":true}", + "description": "Evaluate password reset completion conversion from events fetched from an external URL, with drop-off analysis enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Conversion", + "context": null + } + }, + { + "name": "security-tools.analyzeChannel", + "description": "Analyzes communication channels such as messaging streams, network tunnels, or API gateways to detect potential security threats, data leaks, or misconfigurations. It accepts channel identifiers and relevant metadata as input, processes logs and traffic data, and outputs a detailed security assessment report highlighting vulnerabilities and anomalies.", + "category": "security-tools", + "parameters": [ + { + "name": "channelId", + "type": "string", + "description": "Unique identifier or name of the communication channel to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "channelType", + "type": "string", + "description": "Type of the channel (e.g., 'websocket', 'REST API', 'message queue').", + "required": true, + "defaultValue": "" + }, + { + "name": "timeRangeStart", + "type": "string", + "description": "ISO 8601 timestamp indicating the start of the analysis period.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeRangeEnd", + "type": "string", + "description": "ISO 8601 timestamp indicating the end of the analysis period.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeTrafficSamples", + "type": "boolean", + "description": "Whether to include sample traffic data excerpt in the report for detailed inspection.", + "required": false, + "defaultValue": "false" + }, + { + "name": "sensitivityLevel", + "type": "string", + "description": "Security sensitivity level for threat detection, e.g., 'low', 'medium', 'high'.", + "required": false, + "defaultValue": "medium" + }, + { + "name": "authToken", + "type": "string", + "description": "Authentication token or credentials to access channel data securely.", + "required": true, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns a structured security assessment report including detected vulnerabilities, anomaly summaries, risk scores, and recommendations for remediation." + }, + "aiAgent": { + "useCase": "Use this tool when needing to assess the security status of communication channels within an application or infrastructure, such as analyzing API gateways, messaging services, or network tunnels, to proactively identify threats or misconfigurations before attackers exploit them.", + "limitations": "This tool cannot modify channels or fix issues automatically. It requires valid authentication and access permissions to the channel data. It cannot guarantee detection of zero-day vulnerabilities or encrypted malicious payload content without decryption keys.", + "examples": [ + "Analyze the WebSocket channel 'chat-service-ws' for the past 24 hours to detect any unusual activity.", + "Perform a security analysis of the REST API channel 'payment-api-v2' between specified timestamps for data leaks.", + "Check the message queue channel 'order-queue' for vulnerabilities and provide a summary report with sample traffic." + ] + }, + "tags": [ + "security", + "analysis", + "communication", + "channel", + "threat-detection", + "vulnerability-assessment" + ], + "examples": [ + { + "inputJson": "{\"channelId\":\"chat-service-ws\",\"channelType\":\"websocket\",\"timeRangeStart\":\"2024-06-01T00:00:00Z\",\"timeRangeEnd\":\"2024-06-01T23:59:59Z\",\"includeTrafficSamples\":true,\"sensitivityLevel\":\"high\",\"authToken\":\"abcdef12345\"}", + "description": "Analyzing the 'chat-service-ws' WebSocket channel for one day with high sensitivity and including traffic samples." + }, + { + "inputJson": "{\"channelId\":\"payment-api-v2\",\"channelType\":\"REST API\",\"authToken\":\"token_xyz\",\"sensitivityLevel\":\"medium\"}", + "description": "Perform a default range analysis on the 'payment-api-v2' REST API channel with medium sensitivity." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Channel", + "context": null + } + }, + { + "name": "security-tools.analyzeQuote", + "description": "Analyzes textual quotes for potential security risks such as phishing indicators, social engineering cues, or malicious content. Accepts a string containing the quote, evaluates security threat levels based on content patterns, and returns a structured risk assessment report with severity and suggested actions.", + "category": "security-tools", + "parameters": [ + { + "name": "quoteText", + "type": "string", + "description": "The textual content of the quote to be analyzed for security threats.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The language code (e.g., 'en') of the quote to tailor analysis for linguistic nuances.", + "required": false, + "defaultValue": "\"en\"" + }, + { + "name": "detailedAnalysis", + "type": "boolean", + "description": "Whether to include a detailed explanation of detected security risks in the output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the risk level (e.g., 'low', 'medium', 'high'), detected threat types, and recommended security actions or warnings." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to evaluate textual quotes or statements for potential security threats, such as phishing attempts, social engineering, or malicious intent embedded in communication content. It helps identify suspicious or harmful quotes in messages, logs, or communications to alert users or trigger mitigations.", + "limitations": "Cannot guarantee detection of all security threats as it relies on patterns and heuristics; may produce false positives or miss novel attack vectors. Not a replacement for comprehensive security audits or live threat analysis.", + "examples": [ + "Analyze this quote for potential security risks: 'Please provide your password immediately to update your account.'", + "Check the following quote for phishing content: 'Dear user, your bank account will be locked unless you verify your details now.'", + "Evaluate if this quote contains social engineering attempts: 'I am from IT, please share your login details to solve the issue.'" + ] + }, + "tags": [ + "security", + "analysis", + "quote", + "phishing", + "socialEngineering", + "riskAssessment" + ], + "examples": [ + { + "inputJson": "{\"quoteText\":\"Please provide your password immediately to update your account.\",\"language\":\"en\",\"detailedAnalysis\":true}", + "description": "Analyzing a suspicious quote likely to be phishing or social engineering attempt." + }, + { + "inputJson": "{\"quoteText\":\"Our server maintenance starts tomorrow at 2 AM.\",\"language\":\"en\",\"detailedAnalysis\":false}", + "description": "Analyzing a normal, benign quote to confirm low security risk." + }, + { + "inputJson": "{\"quoteText\":\"Click this link to verify your bank information now!\",\"language\":\"en\",\"detailedAnalysis\":true}", + "description": "Analyzing a quote containing a possible malicious call to action." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Quote", + "context": null + } + }, + { + "name": "security-tools.analyzeExpense", + "description": "Analyzes business expense data to identify potential security risks and anomalies such as fraud, unusual spending patterns, or policy violations. Accepts expense records including amounts, categories, vendors, and dates, then processes them to produce a risk assessment report highlighting suspicious transactions and compliance issues.", + "category": "security-tools", + "parameters": [ + { + "name": "expenses", + "type": "array", + "description": "List of expense records, each containing details like amount, date, category, vendor, and employee ID. Required for analysis.", + "required": true, + "defaultValue": "" + }, + { + "name": "companyPolicyRules", + "type": "object", + "description": "An object defining the company's expense policies and rules (e.g., max allowed amounts per category, prohibited vendors) to check compliance against.", + "required": true, + "defaultValue": "" + }, + { + "name": "dateRange", + "type": "object", + "description": "Optional date range to filter which expenses to analyze, with 'startDate' and 'endDate' as ISO strings.", + "required": false, + "defaultValue": "" + }, + { + "name": "suspiciousThreshold", + "type": "number", + "description": "Threshold score above which an expense is flagged as suspicious (0 to 1).", + "required": false, + "defaultValue": "0.7" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output report, e.g., 'json' or 'text'.", + "required": false, + "defaultValue": "json" + } + ], + "returns": { + "type": "object", + "description": "A report object containing summary statistics, list of suspicious expenses flagged with reasons and risk scores, and compliance violations found." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to assess business expense data for security risks such as fraud detection, policy compliance checking, or unusual spending alerts. It helps automate review of large expense datasets to flag problematic entries.", + "limitations": "This tool does not perform audits or confirm fraud; it only flags potential anomalies based on supplied rules and heuristic scoring. It requires accurate policy rules and expense data to be effective and does not connect to external financial systems automatically.", + "examples": [ + "Analyze last quarter's expenses to find non-compliant transactions.", + "Check a batch of expenses for fraud indicators using company policy.", + "Generate a report of suspicious expenses between two dates." + ] + }, + "tags": [ + "security", + "expense", + "fraud-detection", + "compliance", + "risk-analysis", + "business" + ], + "examples": [ + { + "inputJson": "{\"expenses\":[{\"amount\":1500,\"date\":\"2024-05-10\",\"category\":\"Travel\",\"vendor\":\"XYZ Airlines\",\"employeeId\":\"E123\"},{\"amount\":5000,\"date\":\"2024-05-12\",\"category\":\"Office Supplies\",\"vendor\":\"ABC Supplies\",\"employeeId\":\"E456\"}],\"companyPolicyRules\":{\"maxAmountPerCategory\":{\"Travel\":1000,\"Office Supplies\":2000},\"prohibitedVendors\":[\"XYZ Airlines\"]},\"dateRange\":{\"startDate\":\"2024-05-01\",\"endDate\":\"2024-05-31\"},\"suspiciousThreshold\":0.7,\"outputFormat\":\"json\"}", + "description": "Analyzes May 2024 expenses against company policies to flag over-limit amounts and prohibited vendors." + }, + { + "inputJson": "{\"expenses\":[{\"amount\":300,\"date\":\"2024-04-15\",\"category\":\"Entertainment\",\"vendor\":\"Fun Events\",\"employeeId\":\"E789\"}],\"companyPolicyRules\":{\"maxAmountPerCategory\":{\"Entertainment\":500},\"prohibitedVendors\":[]},\"suspiciousThreshold\":0.5}", + "description": "Checks April 2024 entertainment expenses for anomalies with a low suspicion threshold and no prohibited vendors defined." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Expense", + "context": null + } + }, + { + "name": "security-tools.analyzeVulnerability", + "description": "Analyzes a specified software vulnerability by processing its identifier or details to assess risk level, affected systems, potential exploits, and mitigation strategies. Accepts vulnerability identifiers or descriptions and returns a comprehensive risk analysis report.", + "category": "security-tools", + "parameters": [ + { + "name": "vulnerabilityId", + "type": "string", + "description": "The unique identifier of the vulnerability, such as a CVE ID (e.g., CVE-2023-12345).", + "required": false, + "defaultValue": "" + }, + { + "name": "vulnerabilityDescription", + "type": "string", + "description": "A textual description of the vulnerability details if an ID is not available.", + "required": false, + "defaultValue": "" + }, + { + "name": "targetPlatform", + "type": "string", + "description": "The platform or system the vulnerability affects (e.g., Windows, Linux, Android).", + "required": false, + "defaultValue": "" + }, + { + "name": "severityThreshold", + "type": "string", + "description": "The minimum severity level to report (e.g., LOW, MEDIUM, HIGH, CRITICAL).", + "required": false, + "defaultValue": "MEDIUM" + }, + { + "name": "includeMitigation", + "type": "boolean", + "description": "Whether to include recommended mitigation steps in the analysis report.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing vulnerability id, severity score, affected components, exploitability details, and recommended mitigations if requested." + }, + "aiAgent": { + "useCase": "Use this tool when needing to assess the security impact of known or newly discovered vulnerabilities by their identifiers or descriptions, to inform risk management and mitigation planning. Ideal for automated security audits and vulnerability management pipelines.", + "limitations": "Cannot detect unknown vulnerabilities or produce zero-day exploit details; depends on public or integrated vulnerability databases and may not have real-time exploit information.", + "examples": [ + "Analyze the vulnerability CVE-2023-12345 for Linux systems and get mitigation advice.", + "Assess a custom vulnerability description with severity threshold set to HIGH.", + "Provide a risk analysis excluding mitigation recommendations for a known vulnerability ID." + ] + }, + "tags": [ + "security", + "vulnerability", + "risk-analysis", + "mitigation", + "assessment", + "CVE" + ], + "examples": [ + { + "inputJson": "{\"vulnerabilityId\":\"CVE-2023-12345\",\"targetPlatform\":\"Linux\",\"includeMitigation\":true}", + "description": "Analyze a known CVE for Linux platform with mitigation steps included." + }, + { + "inputJson": "{\"vulnerabilityDescription\":\"Buffer overflow in XYZ software allows remote code execution.\",\"severityThreshold\":\"HIGH\",\"includeMitigation\":false}", + "description": "Analyze a custom vulnerability description with severity threshold set to HIGH and exclude mitigation details." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Vulnerability", + "context": null + } + }, + { + "name": "security-tools.uploadVideo", + "description": "Uploads a video file securely to a cloud-based video storage and streaming service. Accepts video file data or URL input, validates video format and size, encrypts the video during transfer and storage, and returns a secure streaming URL and video metadata for integration in secure applications.", + "category": "security-tools", + "parameters": [ + { + "name": "videoFile", + "type": "string", + "description": "Base64-encoded video file content to upload. Required if videoUrl is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "videoUrl", + "type": "string", + "description": "URL of the video to fetch and upload. Required if videoFile is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileName", + "type": "string", + "description": "Original or desired file name of the video including extension (e.g., video.mp4).", + "required": true, + "defaultValue": "" + }, + { + "name": "maxFileSizeMb", + "type": "number", + "description": "Maximum allowed video file size in megabytes.", + "required": false, + "defaultValue": "500" + }, + { + "name": "allowedFormats", + "type": "array", + "description": "List of allowed video file extensions/formats for upload validation (e.g., [\"mp4\",\"webm\",\"mov\"]).", + "required": false, + "defaultValue": "[\"mp4\",\"webm\",\"mov\"]" + }, + { + "name": "encryptionKey", + "type": "string", + "description": "Encryption key or token used to encrypt the video file for secure storage (must meet security requirements).", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional JSON object with custom metadata tags (e.g., title, description, tags) to associate with the uploaded video.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the secure streaming URL of the uploaded video, video metadata including file size, format, duration (if available), and an upload status field indicating success or failure with error details." + }, + "aiAgent": { + "useCase": "Use this tool when you need to securely upload user or system-generated video content to a protected cloud environment for applications like secure video streaming, privacy-conscious video sharing, or integrating videos in security-focused platforms. It ensures encryption in transit and at rest, validates file formats and sizes, and returns ready-to-use secure URLs.", + "limitations": "This tool does not perform video content analysis such as moderation, transcription, or editing. It also requires a valid encryption key and does not support live streaming video uploads directly.", + "examples": [ + "Upload a confidential training video file for secure internal distribution.", + "Fetch a remote video from a trusted URL and securely upload it with encryption and access restrictions.", + "Upload a video file with custom metadata tags like title and description for cataloging in a secure media library." + ] + }, + "tags": [ + "upload", + "video", + "security", + "encryption", + "cloud-storage", + "streaming", + "media", + "secure-upload" + ], + "examples": [ + { + "inputJson": "{\"videoFile\":\"\",\"fileName\":\"training_session.mp4\",\"encryptionKey\":\"s3cur3K3y123\",\"maxFileSizeMb\":200}", + "description": "Uploading a base64 encoded training video file securely with a file size limit and encryption key." + }, + { + "inputJson": "{\"videoUrl\":\"https://trustedsource.com/sample.mov\",\"fileName\":\"sample.mov\",\"encryptionKey\":\"s3cur3K3y123\",\"metadata\":{\"title\":\"Sample Video\",\"description\":\"Secure video upload example\"}}", + "description": "Fetching a video from an external URL and uploading it securely with metadata tags." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Video", + "context": null + } + }, + { + "name": "security-tools.analyzeYAML", + "description": "Analyzes YAML files for security best practices and vulnerabilities by parsing the input YAML content, detecting insecure configurations, unsafe patterns, or common misconfigurations, and producing a detailed security analysis report highlighting issues and recommendations.", + "category": "security-tools", + "parameters": [ + { + "name": "yamlContent", + "type": "string", + "description": "The YAML content as a string to be analyzed for security issues.", + "required": true, + "defaultValue": "" + }, + { + "name": "checkSchemaCompliance", + "type": "boolean", + "description": "Whether to validate the YAML content against a defined security schema to check compliance.", + "required": false, + "defaultValue": "false" + }, + { + "name": "allowedRiskLevels", + "type": "array", + "description": "An array of risk levels to report on, e.g., ['low', 'medium', 'high']. If empty, report all levels.", + "required": false, + "defaultValue": "[\"low\",\"medium\",\"high\"]" + }, + { + "name": "maxIssues", + "type": "number", + "description": "Maximum number of issues to return in the report. Zero means no limit.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "Returns a security analysis report object containing issues found, categorized by severity, with descriptions and remediation suggestions." + }, + "aiAgent": { + "useCase": "Use this tool when you need to automatically assess the security posture of YAML configuration files in applications, infrastructure-as-code, or CI/CD pipelines, to detect insecure settings, vulnerabilities, or standards non-compliance before deployment.", + "limitations": "Does not automatically fix detected issues; limited to static security patterns and known misconfigurations; may not cover all YAML schema specifics; does not perform dynamic runtime security testing.", + "examples": [ + "Analyze this Kubernetes deployment YAML for security risks.", + "Check this Helm values YAML for unsafe configurations.", + "Scan a CI/CD pipeline YAML file for potential security policy violations." + ] + }, + "tags": [ + "security", + "yaml", + "analysis", + "configuration", + "vulnerability", + "compliance" + ], + "examples": [ + { + "inputJson": "{\"yamlContent\":\"apiVersion: v1\\nkind: Pod\\nmetadata:\\n name: insecure-pod\\nspec:\\n containers:\\n - name: busybox\\n image: busybox\\n securityContext:\\n privileged: true\"}", + "description": "Scan a Kubernetes Pod YAML with a privileged container flag set to true, which is a security risk." + }, + { + "inputJson": "{\"yamlContent\":\"version: 1\\nsteps:\\n- script: echo Hello\\n allowPrivilegeEscalation: true\"}", + "description": "Analyze a CI/CD pipeline YAML that allows privilege escalation in a script step." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "YAML", + "context": null + } + }, + { + "name": "security-tools.buildQueue", + "description": "This tool configures and deploys a secure message queue system to facilitate reliable and protected communication between microservices or distributed components. It accepts parameters defining queue type, encryption settings, access controls, and retry policies, then outputs deployment configurations and status reports for integration.", + "category": "security-tools", + "parameters": [ + { + "name": "queueType", + "type": "string", + "description": "The type of queue to build, e.g., 'RabbitMQ', 'AWS SQS', 'Kafka'", + "required": true, + "defaultValue": "" + }, + { + "name": "encryptionEnabled", + "type": "boolean", + "description": "Whether to enable encryption for messages in transit and at rest", + "required": true, + "defaultValue": "true" + }, + { + "name": "accessControlList", + "type": "array", + "description": "List of user or service identifiers with access permissions", + "required": false, + "defaultValue": "[]" + }, + { + "name": "maxRetries", + "type": "number", + "description": "Maximum number of retry attempts for failed message deliveries", + "required": false, + "defaultValue": "5" + }, + { + "name": "retryDelaySeconds", + "type": "number", + "description": "Delay between retry attempts in seconds", + "required": false, + "defaultValue": "30" + }, + { + "name": "deadLetterQueueEnabled", + "type": "boolean", + "description": "Whether to enable a dead-letter queue for handling undeliverable messages", + "required": false, + "defaultValue": "true" + }, + { + "name": "region", + "type": "string", + "description": "Deployment region or data center location for the queue infrastructure", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the queue deployment configuration details, including connection endpoints, security settings, access policies, and deployment status." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically set up secure, reliable messaging infrastructure for distributed systems or microservices, ensuring encrypted communication and controlled access. Ideal for automating secure messaging queue deployment as part of CI/CD or infrastructure orchestration.", + "limitations": "This tool does not manage message content or application-level message processing. It does not provide monitoring or analytics of queue usage beyond initial deployment status.", + "examples": [ + "Build a RabbitMQ queue with encryption enabled, access restricted to specific services, and retry policies for message delivery.", + "Deploy an AWS SQS queue with a dead-letter queue enabled and retries set to 3 attempts with 15 seconds delay.", + "Create a Kafka queue in a specified region, enabling encryption and an ACL for authorized users only." + ] + }, + "tags": [ + "security", + "queue", + "messaging", + "deployment", + "infrastructure", + "encryption", + "access-control" + ], + "examples": [ + { + "inputJson": "{\"queueType\":\"RabbitMQ\",\"encryptionEnabled\":true,\"accessControlList\":[\"serviceA\",\"serviceB\"],\"maxRetries\":3,\"retryDelaySeconds\":20,\"deadLetterQueueEnabled\":true,\"region\":\"us-east-1\"}", + "description": "Configure a RabbitMQ queue with encryption, ACL for two services, limited retries, dead-letter queue enabled, deployed in US East." + }, + { + "inputJson": "{\"queueType\":\"AWS SQS\",\"encryptionEnabled\":true,\"accessControlList\":[],\"maxRetries\":5,\"retryDelaySeconds\":30,\"deadLetterQueueEnabled\":true,\"region\":\"eu-west-2\"}", + "description": "Deploy an AWS SQS queue with encryption and dead-letter queue enabled, default retry policies, no ACL restrictions, in EU West." + }, + { + "inputJson": "{\"queueType\":\"Kafka\",\"encryptionEnabled\":false,\"accessControlList\":[\"user1\",\"user2\"],\"maxRetries\":10,\"retryDelaySeconds\":60,\"deadLetterQueueEnabled\":false,\"region\":\"ap-southeast-1\"}", + "description": "Set up a Kafka queue without encryption but with ACL and customized retry parameters in Asia Pacific Southeast." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Queue", + "context": null + } + }, + { + "name": "security-tools.sendReply", + "description": "Sends a secure, encrypted reply message to a specified recipient as part of an incident response or communication workflow. Accepts input including recipient identifier, message content, encryption preferences, and optional metadata; processes by encrypting the message and sending it over secure channels; outputs a confirmation with delivery status and message ID.", + "category": "security-tools", + "parameters": [ + { + "name": "recipientId", + "type": "string", + "description": "Unique identifier of the recipient to whom the reply will be sent, e.g., user ID or service endpoint.", + "required": true, + "defaultValue": "" + }, + { + "name": "messageContent", + "type": "string", + "description": "The plaintext content of the reply message to be sent.", + "required": true, + "defaultValue": "" + }, + { + "name": "encryptionType", + "type": "string", + "description": "Specifies the encryption algorithm to use for securing the message, such as AES-256 or RSA.", + "required": false, + "defaultValue": "AES-256" + }, + { + "name": "includeSignature", + "type": "boolean", + "description": "If true, the message will be signed with the sender's private key to ensure authenticity.", + "required": false, + "defaultValue": "true" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional metadata related to the reply, such as correlation IDs, timestamps, or incident references.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "priorityLevel", + "type": "string", + "description": "Indicates the priority of the message (e.g., low, normal, high) which may influence delivery handling.", + "required": false, + "defaultValue": "normal" + } + ], + "returns": { + "type": "object", + "description": "An object containing deliveryStatus (e.g., sent, failed), messageId as unique reply identifier, and timestamp of sending." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent must securely respond to alerts, incident communications, or sensitive inquiries, ensuring data confidentiality and integrity through encryption and digital signatures. It is suitable for workflows requiring authenticated and encrypted message exchanges within security operations or compliance systems.", + "limitations": "This tool does not handle message delivery guarantees beyond basic status reporting, nor does it perform recipient validation beyond identifier acceptance. It cannot decrypt incoming messages or manage communication initiation flows.", + "examples": [ + "Send a secure reply to a security team member acknowledging receipt of an incident report.", + "Respond with an encrypted message confirming schedule for a security audit.", + "Send a digitally signed message to a compliance officer including investigation results." + ] + }, + "tags": [ + "security", + "communication", + "encryption", + "incident-response", + "message-sending", + "secure-reply" + ], + "examples": [ + { + "inputJson": "{\"recipientId\":\"user-12345\",\"messageContent\":\"Acknowledged your incident report, initiating analysis.\",\"encryptionType\":\"AES-256\",\"includeSignature\":true,\"metadata\":{\"incidentId\":\"INC-20240601\",\"correlationId\":\"abc123\"},\"priorityLevel\":\"high\"}", + "description": "Send a high-priority encrypted reply acknowledging an incident report with relevant metadata." + }, + { + "inputJson": "{\"recipientId\":\"compliance_officer_01\",\"messageContent\":\"Attached are the finalized compliance audit results.\",\"includeSignature\":true}", + "description": "Send a digitally signed message to a compliance officer without specifying encryptionType explicitly, defaults to AES-256." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Reply", + "context": null + } + }, + { + "name": "security-tools.sendThread", + "description": "Sends a secure communication thread containing encrypted messages to specified recipients. Accepts a thread object with messages and recipient identifiers, encrypts the content using provided encryption keys or algorithms, and outputs a transmission status indicating success or failure along with message metadata.", + "category": "security-tools", + "parameters": [ + { + "name": "threadId", + "type": "string", + "description": "Unique identifier of the communication thread to send", + "required": true, + "defaultValue": "" + }, + { + "name": "messages", + "type": "array", + "description": "Array of message objects containing text and metadata to be sent", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientIds", + "type": "array", + "description": "List of recipient user or device identifiers to whom the thread will be sent", + "required": true, + "defaultValue": "" + }, + { + "name": "encryptionKey", + "type": "string", + "description": "Encryption key or token used to securely encrypt messages before sending", + "required": true, + "defaultValue": "" + }, + { + "name": "encryptionAlgorithm", + "type": "string", + "description": "Optional encryption algorithm name (e.g., AES-256) to use for message encryption", + "required": false, + "defaultValue": "AES-256" + }, + { + "name": "priorityLevel", + "type": "string", + "description": "Optional priority level for sending the thread (e.g., low, normal, high)", + "required": false, + "defaultValue": "normal" + }, + { + "name": "sendTimestamp", + "type": "number", + "description": "Optional UNIX timestamp to schedule the send time; if not provided, send immediately", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Result object containing status of the send operation, message IDs, and any error details" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to securely transmit a set of related messages (a communication thread) to multiple recipients, ensuring encryption and privacy. It is ideal for secure messaging applications, collaboration platforms, or any system requiring protected threaded communication.", + "limitations": "This tool does not handle recipient authentication or delivery confirmation beyond transmission status. It requires valid encryption keys and does not provide message decryption or archival capabilities.", + "examples": [ + "Send a secure support conversation thread to multiple agents.", + "Transmit a confidential project update thread encrypted with company keys.", + "Schedule a thread with high priority for immediate delivery to device recipients." + ] + }, + "tags": [ + "security", + "communication", + "thread", + "encryption", + "messaging", + "transmission", + "privacy" + ], + "examples": [ + { + "inputJson": "{\"threadId\":\"thread123\",\"messages\":[{\"text\":\"Hello team, update attached.\",\"timestamp\":1687958400}],\"recipientIds\":[\"userA\",\"userB\"],\"encryptionKey\":\"abc123key\",\"encryptionAlgorithm\":\"AES-256\",\"priorityLevel\":\"high\"}", + "description": "Sending an encrypted thread with one message to two recipients with high priority." + }, + { + "inputJson": "{\"threadId\":\"projectChat\",\"messages\":[{\"text\":\"Please review the design.\",\"timestamp\":1687958500},{\"text\":\"Looks good to me!\",\"timestamp\":1687958600}],\"recipientIds\":[\"userC\"],\"encryptionKey\":\"secureKey987\"}", + "description": "Sending a two-message thread to a single user with default encryption algorithm." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Thread", + "context": null + } + }, + { + "name": "security-tools.formatQuery", + "description": "Formats and sanitizes raw query strings (e.g., SQL, NoSQL) to improve readability and reduce risks of injection attacks by normalizing whitespace, escaping special characters, and enforcing coding style conventions. Accepts query string inputs and outputs a well-structured, secure query string.", + "category": "security-tools", + "parameters": [ + { + "name": "queryString", + "type": "string", + "description": "The raw query string that needs to be formatted and sanitized.", + "required": true, + "defaultValue": "" + }, + { + "name": "queryLanguage", + "type": "string", + "description": "The type of query language, e.g., 'sql', 'mongo', or 'graphql' to apply appropriate formatting rules.", + "required": true, + "defaultValue": "sql" + }, + { + "name": "escapeCharacters", + "type": "boolean", + "description": "Whether to escape potentially dangerous characters to prevent injection attacks.", + "required": false, + "defaultValue": "true" + }, + { + "name": "indentationSpaces", + "type": "number", + "description": "Number of spaces to use for indentation when formatting the query.", + "required": false, + "defaultValue": "2" + }, + { + "name": "uppercaseKeywords", + "type": "boolean", + "description": "Whether to convert query language keywords to uppercase for better readability.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted and sanitized query string and a boolean indicating if sanitization applied." + }, + "aiAgent": { + "useCase": "Use this tool when preparing raw query strings for secure inclusion in applications or logs, ensuring they follow consistent formatting and reducing security risks like injection by sanitizing inputs based on the query language.", + "limitations": "This tool cannot validate semantic correctness of queries or guarantee complete injection protection; it applies formatting and basic sanitization heuristics but should be combined with proper query parameterization.", + "examples": [ + "Format and sanitize a raw SQL query string before embedding it in a database call.", + "Reformat a MongoDB query expressed as a JSON string for clarity and safety.", + "Process a GraphQL query string to ensure standardized indentation and keyword casing." + ] + }, + "tags": [ + "security", + "formatting", + "query", + "sanitization", + "sql", + "nosql", + "injection-prevention" + ], + "examples": [ + { + "inputJson": "{\"queryString\": \"select * from users where name=\\\"admin\\\";\", \"queryLanguage\": \"sql\", \"escapeCharacters\": true, \"indentationSpaces\": 4, \"uppercaseKeywords\": true}", + "description": "Format and sanitize a simple SQL select statement with 4-space indentation and uppercase keywords." + }, + { + "inputJson": "{\"queryString\": \"{ find: \\\"users\\\", filter: { age: { $gt: 30 } } }\", \"queryLanguage\": \"mongo\", \"escapeCharacters\": true, \"indentationSpaces\": 2, \"uppercaseKeywords\": false}", + "description": "Format a MongoDB query object string for readability, escaping special characters." + }, + { + "inputJson": "{\"queryString\": \"query { user(id: \\\"123\\\") { name email } }\", \"queryLanguage\": \"graphql\", \"escapeCharacters\": false, \"indentationSpaces\": 2, \"uppercaseKeywords\": false}", + "description": "Format a GraphQL query string with standard indentation without escaping characters." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Query", + "context": null + } + }, + { + "name": "security-tools.formatTable", + "description": "Formats security audit tables by sanitizing sensitive data, enforcing consistent cell formatting, and highlighting suspicious entries. Takes tabular JSON data with security findings as input, processes each cell based on formatting rules and security policies, and outputs a sanitized, well-structured table ready for secure display or reporting.", + "category": "security-tools", + "parameters": [ + { + "name": "inputTable", + "type": "array", + "description": "An array of objects representing table rows with security-related data (e.g., vulnerability details).", + "required": true, + "defaultValue": "" + }, + { + "name": "sensitiveFields", + "type": "array", + "description": "List of field names to mask or obfuscate for security compliance (e.g., 'ipAddress', 'userId').", + "required": false, + "defaultValue": "[]" + }, + { + "name": "highlightCriteria", + "type": "object", + "description": "Rules defining which table cells or rows to highlight based on severity or suspicious patterns (e.g., severity >= high).", + "required": false, + "defaultValue": "{}" + }, + { + "name": "formatRules", + "type": "object", + "description": "Formatting specifications such as text case, date formats, and numeric precision for relevant fields.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "maskCharacter", + "type": "string", + "description": "Single character used to mask sensitive fields in the output table.", + "required": false, + "defaultValue": "*" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with formattedTable: array of sanitized, formatted rows ready for secure presentation or report generation." + }, + "aiAgent": { + "useCase": "Use this tool when processing security scan or audit log tables requiring confidential data sanitization and consistent formatting for reporting, dashboards, or further automated analysis. It ensures sensitive information is masked and critical entries are visually highlighted to aid risk assessment.", + "limitations": "Cannot perform vulnerability scanning or data validation. Formatting rules and highlighting logic must be predefined; it does not infer security risk levels.", + "examples": [ + "Format a scan results table masking user identifiers and highlighting high severity vulnerabilities.", + "Sanitize audit logs to replace IP addresses with masked characters and format timestamps consistently.", + "Apply custom formatting rules on compliance data and highlight entries with suspicious activity detected." + ] + }, + "tags": [ + "security", + "formatting", + "data-sanitization", + "tabular-data", + "reporting", + "highlighting" + ], + "examples": [ + { + "inputJson": "{\"inputTable\":[{\"host\":\"server01.example.com\",\"ipAddress\":\"192.168.1.10\",\"vulnerability\":\"Outdated SSL\",\"severity\":\"high\",\"lastDetected\":\"2024-05-20T12:34:56Z\",\"userId\":\"admin123\"},{\"host\":\"server02.example.com\",\"ipAddress\":\"192.168.1.11\",\"vulnerability\":\"Missing Patches\",\"severity\":\"medium\",\"lastDetected\":\"2024-05-19T08:15:10Z\",\"userId\":\"guest\"}],\"sensitiveFields\":[\"ipAddress\",\"userId\"],\"highlightCriteria\":{\"severity\":\"high\"},\"formatRules\":{\"lastDetected\":{\"dateFormat\":\"YYYY-MM-DD\"}},\"maskCharacter\":\"X\"}", + "description": "Masks 'ipAddress' and 'userId' fields with 'X', highlights rows with severity 'high', formats date to YYYY-MM-DD." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Table", + "context": null + } + }, + { + "name": "security-tools.generateConversion", + "description": "Generates conversion metrics for security-related user actions by processing event data such as page visits, form submissions, or authentication attempts. Accepts raw event logs or tracked user actions as input, filters and segments these events based on specified criteria, calculates conversion rates and counts, and outputs structured analytics for security conversion funnels or campaigns.", + "category": "security-tools", + "parameters": [ + { + "name": "eventData", + "type": "array", + "description": "Array of security-related event objects (e.g., login attempts, MFA completions, permission changes) to analyze for conversions.", + "required": true, + "defaultValue": "" + }, + { + "name": "conversionCriteria", + "type": "object", + "description": "Defines the criteria or conditions that qualify an event as a conversion, including event types, attributes, and sequences.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeWindowStart", + "type": "string", + "description": "ISO 8601 timestamp marking the start of the time window for event filtering.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeWindowEnd", + "type": "string", + "description": "ISO 8601 timestamp marking the end of the time window for event filtering.", + "required": false, + "defaultValue": "" + }, + { + "name": "segmentBy", + "type": "array", + "description": "List of event attribute keys to segment the conversion results by, e.g., user role, device type.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeRawCounts", + "type": "boolean", + "description": "Whether to include raw counts of each event type alongside conversion rates in the output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing conversion metrics such as total conversions, conversion rates, segmented breakdowns, and optionally raw event counts, structured for security-related conversion analysis." + }, + "aiAgent": { + "useCase": "Use this tool when you need to analyze how effectively security-related actions convert users through defined funnels or processes, such as tracking MFA enablement rates or successful privilege escalations. It helps quantify and segment conversion metrics from security event data.", + "limitations": "This tool requires properly structured event data and defined conversion criteria; it does not fetch raw events nor perform real-time tracking. It cannot perform causal analysis or detect anomalies beyond simple aggregation.", + "examples": [ + "Calculate conversion rate of users who enabled MFA within a week after a security prompt.", + "Segment login success rate by user roles over the past month.", + "Get counts and conversion rates of permission change requests approved vs. requested in the last quarter." + ] + }, + "tags": [ + "conversion", + "security analytics", + "event processing", + "user behavior", + "metrics", + "funnel analysis" + ], + "examples": [ + { + "inputJson": "{\"eventData\":[{\"userId\":\"u1\",\"eventType\":\"login_success\",\"timestamp\":\"2024-05-01T12:00:00Z\"},{\"userId\":\"u1\",\"eventType\":\"mfa_enabled\",\"timestamp\":\"2024-05-02T08:00:00Z\"},{\"userId\":\"u2\",\"eventType\":\"login_failed\",\"timestamp\":\"2024-05-01T09:30:00Z\"}],\"conversionCriteria\":{\"conversionEvent\":\"mfa_enabled\"},\"timeWindowStart\":\"2024-05-01T00:00:00Z\",\"timeWindowEnd\":\"2024-05-07T23:59:59Z\",\"segmentBy\":[\"eventType\"],\"includeRawCounts\":true}", + "description": "Compute the conversion rate of users who enabled MFA after login within one week and segment by event type including raw event counts." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Conversion", + "context": null + } + }, + { + "name": "security-tools.buildCluster", + "description": "This tool provisions and configures a secure computing cluster based on specified parameters. It accepts input such as node types, cluster size, network security settings, and access controls to build an infrastructure cluster optimized for security. The output includes cluster deployment status, configuration details, and security audit summary.", + "category": "security-tools", + "parameters": [ + { + "name": "clusterName", + "type": "string", + "description": "The name identifier for the cluster to be built.", + "required": true, + "defaultValue": "" + }, + { + "name": "nodeType", + "type": "string", + "description": "The specification or instance type of the nodes in the cluster (e.g., VM type or container specs).", + "required": true, + "defaultValue": "" + }, + { + "name": "nodeCount", + "type": "number", + "description": "Number of nodes to provision in the cluster.", + "required": true, + "defaultValue": "1" + }, + { + "name": "networkSecurityGroupIds", + "type": "array", + "description": "List of network security group IDs to apply for controlling inbound and outbound traffic.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "enableEncryptionAtRest", + "type": "boolean", + "description": "Flag to enable encryption of data at rest within the cluster resources.", + "required": false, + "defaultValue": "true" + }, + { + "name": "enableEncryptionInTransit", + "type": "boolean", + "description": "Flag to enable encryption for data transmitted between cluster nodes.", + "required": false, + "defaultValue": "true" + }, + { + "name": "accessControlList", + "type": "object", + "description": "Object defining users or roles with access permissions to the cluster, specifying roles and allowed actions.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "region", + "type": "string", + "description": "Geographic region or availability zone where the cluster will be built.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the clusterId, deployment status, configuration details, and a security audit summary indicating compliance status and vulnerabilities detected." + }, + "aiAgent": { + "useCase": "Use this tool when there is a need to automate deployment of a secure compute cluster with precise control over node configuration, network security settings, encryption, and access control. It is ideal for building infrastructure in cloud or on-prem environments requiring compliance and secure operations.", + "limitations": "This tool does not handle the orchestration or workload scheduling within the cluster; it focuses on provisioning and securing the infrastructure only. It also may not support every cloud provider's API or proprietary features unless extended.", + "examples": [ + "Build a 5-node cluster with encrypted data storage and restricted access roles in the us-west region.", + "Provision a cluster with high-security requirements including specific network security groups and encryption in transit enabled.", + "Create a cluster using m5.large nodes with admin access limited to a specified user group." + ] + }, + "tags": [ + "security", + "infrastructure", + "cluster", + "provisioning", + "encryption", + "access-control", + "network-security" + ], + "examples": [ + { + "inputJson": "{\"clusterName\":\"secure-cluster-1\",\"nodeType\":\"t3.medium\",\"nodeCount\":3,\"networkSecurityGroupIds\":[\"nsg-12345abc\",\"nsg-67890def\"],\"enableEncryptionAtRest\":true,\"enableEncryptionInTransit\":true,\"accessControlList\":{\"admins\":[\"user1\",\"user2\"]},\"region\":\"us-east-1\"}", + "description": "Build a 3-node cluster 'secure-cluster-1' in the us-east-1 region with encryption enabled and specified network security groups." + }, + { + "inputJson": "{\"clusterName\":\"test-cluster\",\"nodeType\":\"c5.large\",\"nodeCount\":1,\"enableEncryptionAtRest\":false,\"enableEncryptionInTransit\":true,\"region\":\"eu-central-1\"}", + "description": "Provision a single-node cluster in eu-central-1 with encryption of data in transit but not at rest." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Cluster", + "context": null + } + }, + { + "name": "security-tools.buildWorkflow", + "description": "Constructs a security automation workflow by accepting definitions of security tasks, triggers, and actions. Processes the input to assemble a coordinated workflow that can be deployed in security orchestration platforms. Outputs a structured workflow JSON ready for integration or deployment.", + "category": "security-tools", + "parameters": [ + { + "name": "workflowName", + "type": "string", + "description": "The name for the security workflow to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A brief summary describing the purpose of the workflow.", + "required": false, + "defaultValue": "" + }, + { + "name": "triggers", + "type": "array", + "description": "List of event triggers that initiate the workflow, e.g., vulnerability detected, suspicious login.", + "required": true, + "defaultValue": "" + }, + { + "name": "tasks", + "type": "array", + "description": "Ordered list of security tasks and checks to perform as part of the workflow, with configuration details for each task.", + "required": true, + "defaultValue": "" + }, + { + "name": "actions", + "type": "array", + "description": "List of automated responses or notifications to execute after tasks, such as blocking IP, sending alerts.", + "required": true, + "defaultValue": "" + }, + { + "name": "retryPolicy", + "type": "object", + "description": "Settings defining retry behavior for failed tasks, including max attempts and delay.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Overall timeout duration for the workflow execution, in seconds.", + "required": false, + "defaultValue": "3600" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing the assembled security workflow, including metadata, tasks sequence, triggers, and actions, formatted for deployment in security automation systems." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate or customize a security orchestration workflow based on provided security triggers, tasks, and response actions to automate incident response processes in infrastructure or applications.", + "limitations": "Does not deploy workflows to execution environments; requires separate platform integration. Cannot validate external system compatibility or simulate workflow execution results.", + "examples": [ + "Create a workflow triggered by malware detection that isolates affected devices and notifies the security team.", + "Build a workflow reacting to unauthorized access attempts by blocking IP and logging audit data.", + "Assemble a vulnerability scan response workflow that schedules patches and sends compliance reports." + ] + }, + "tags": [ + "security", + "automation", + "workflow", + "incident-response", + "orchestration", + "devops", + "cybersecurity" + ], + "examples": [ + { + "inputJson": "{\"workflowName\":\"Malware Response\",\"description\":\"Automate response to malware detections.\",\"triggers\":[{\"type\":\"malwareDetected\",\"source\":\"endpointProtection\"}],\"tasks\":[{\"name\":\"isolateDevice\",\"parameters\":{\"deviceId\":\"{{device.id}}\"}},{\"name\":\"runForensicAnalysis\",\"parameters\":{\"deviceId\":\"{{device.id}}\"}}],\"actions\":[{\"name\":\"notifyTeam\",\"parameters\":{\"channel\":\"security-alerts\",\"message\":\"Malware detected and device isolated.\"}}],\"retryPolicy\":{\"maxAttempts\":3,\"delaySeconds\":60},\"timeoutSeconds\":1800}", + "description": "Defines a malware detection triggered workflow isolating device, analyzing it, and notifying team." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Workflow", + "context": null + } + }, + { + "name": "security-tools.generateGraph", + "description": "Generates interactive security graphs representing network infrastructure or vulnerability dependencies. Accepts structured security data (e.g., JSON nodes and edges), processes relationships and metrics, and outputs a formatted graph structure suitable for visualization or further security analysis.", + "category": "security-tools", + "parameters": [ + { + "name": "data", + "type": "object", + "description": "Structured data containing nodes and edges representing security entities and their relationships (e.g., in JSON format).", + "required": true, + "defaultValue": "" + }, + { + "name": "graphType", + "type": "string", + "description": "Type of graph to generate (e.g., 'network', 'dependency', 'attackPath').", + "required": false, + "defaultValue": "network" + }, + { + "name": "metrics", + "type": "array", + "description": "List of security metrics or attributes to visualize on the graph nodes or edges (e.g., ['vulnerabilityScore', 'riskLevel']).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "highlightCritical", + "type": "boolean", + "description": "If true, visually highlight nodes or edges considered critical based on supplied metrics or thresholds.", + "required": false, + "defaultValue": "false" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format for the graph (e.g., 'json', 'dot', 'gexf').", + "required": false, + "defaultValue": "json" + } + ], + "returns": { + "type": "object", + "description": "An object representing the generated graph structure, including nodes, edges, and optional visualization metadata formatted in the requested outputFormat." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create visual or data representations of security-related infrastructure or dependency relationships for analysis, reporting, or automated threat modeling. It helps transform raw security data into structured, insightful graphs showcasing vulnerabilities, network layouts, or dependency paths.", + "limitations": "This tool does not perform security analysis or vulnerability detection itself; it only visualizes provided structured data. Accuracy depends on the quality and completeness of the input data. It does not generate detailed reports or natural language summaries.", + "examples": [ + "Generate a network graph from JSON describing servers and connections with vulnerability metrics.", + "Create a dependency graph highlighting critical software components based on risk scores.", + "Output a graph in DOT format showing attack paths between systems." + ] + }, + "tags": [ + "security", + "graph", + "visualization", + "network", + "vulnerability", + "dependency", + "attackPath", + "analysis" + ], + "examples": [ + { + "inputJson": "{\"data\":{\"nodes\":[{\"id\":\"1\",\"label\":\"Server A\",\"vulnerabilityScore\":7.5},{\"id\":\"2\",\"label\":\"Database B\",\"vulnerabilityScore\":9.0}],\"edges\":[{\"from\":\"1\",\"to\":\"2\",\"type\":\"connection\"}]},\"graphType\":\"network\",\"metrics\":[\"vulnerabilityScore\"],\"highlightCritical\":true,\"outputFormat\":\"json\"}", + "description": "Generate a network graph of servers and databases highlighting critical vulnerabilities." + }, + { + "inputJson": "{\"data\":{\"nodes\":[{\"id\":\"sw1\",\"label\":\"Software Component 1\",\"riskLevel\":5},{\"id\":\"sw2\",\"label\":\"Software Component 2\",\"riskLevel\":8}],\"edges\":[{\"from\":\"sw1\",\"to\":\"sw2\",\"type\":\"dependency\"}]},\"graphType\":\"dependency\",\"metrics\":[\"riskLevel\"],\"highlightCritical\":true,\"outputFormat\":\"gexf\"}", + "description": "Create a software dependency graph highlighting components with high risk levels in GEXF format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Graph", + "context": null + } + }, + { + "name": "security-tools.generateQuote", + "description": "Generates a professional and customizable security-related quote for use in presentations, reports, or motivational materials. Accepts a security topic or keyword and outputs a well-formatted, relevant quote attributed to a renowned expert or an anonymous source if no match is found.", + "category": "security-tools", + "parameters": [ + { + "name": "topic", + "type": "string", + "description": "The security topic keyword to base the quote on (e.g., 'encryption', 'cybersecurity', 'vulnerability').", + "required": true, + "defaultValue": "" + }, + { + "name": "authorPreference", + "type": "string", + "description": "Preferred author for the quote, if any (e.g., 'Bruce Schneier'). If no match, an anonymous quote is generated.", + "required": false, + "defaultValue": "\"\"" + }, + { + "name": "includeCitation", + "type": "boolean", + "description": "Whether to include a citation or source reference with the quote.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum character length for the generated quote.", + "required": false, + "defaultValue": "140" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated quote text, the author name, and optionally the source or citation." + }, + "aiAgent": { + "useCase": "Use this tool when a security-themed quote is needed to enhance documents, presentations, or communications, especially when tailored to a specific security topic or theme. It helps create impactful content with minimal manual search.", + "limitations": "Cannot verify the authenticity of quotes or provide real-time quotes from living experts. Limited to predefined or commonly known quotes related to security topics.", + "examples": [ + "Generate a quote about encryption for a cybersecurity presentation.", + "Provide a short cybersecurity quote attributed to Bruce Schneier.", + "Get a motivational security quote without specifying an author." + ] + }, + "tags": [ + "quote", + "security", + "generation", + "motivation", + "content-creation" + ], + "examples": [ + { + "inputJson": "{\"topic\":\"cybersecurity\",\"authorPreference\":\"\",\"includeCitation\":true,\"maxLength\":120}", + "description": "Generate a cybersecurity quote with citation, no specific author, max 120 characters." + }, + { + "inputJson": "{\"topic\":\"encryption\",\"authorPreference\":\"Bruce Schneier\",\"includeCitation\":false,\"maxLength\":140}", + "description": "Generate an encryption quote attributed to Bruce Schneier without citation, up to 140 chars." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Quote", + "context": null + } + }, + { + "name": "security-tools.generateAnomaly", + "description": "Generates anomaly detection reports from time-series or event log data by analyzing input metrics or logs with statistical and machine learning techniques to identify unusual patterns or outliers. Outputs structured anomaly summaries and confidence scores for security monitoring and incident response.", + "category": "security-tools", + "parameters": [ + { + "name": "inputData", + "type": "array", + "description": "Array of data points or events to analyze, each as an object with timestamp and metric or event details.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeWindow", + "type": "number", + "description": "Size of the sliding time window in minutes over which to compute anomaly detection.", + "required": false, + "defaultValue": "60" + }, + { + "name": "detectionAlgorithm", + "type": "string", + "description": "Anomaly detection algorithm to apply (e.g., 'statistical', 'isolationForest', 'dbscan').", + "required": false, + "defaultValue": "statistical" + }, + { + "name": "sensitivity", + "type": "number", + "description": "Threshold for anomaly sensitivity, between 0 and 1; higher values report more anomalies.", + "required": false, + "defaultValue": "0.8" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the anomaly report output ('json' or 'csv').", + "required": false, + "defaultValue": "json" + }, + { + "name": "maxAnomalies", + "type": "number", + "description": "Maximum number of anomalies to report; 0 means no limit.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing detected anomalies with timestamp, anomaly score, and description, along with summary statistics of the analysis." + }, + "aiAgent": { + "useCase": "Use this tool when needing to detect unusual or suspicious changes in application logs, metrics, or security event data to proactively identify potential security incidents or system faults. It helps prioritize monitoring and alerting by automatically flagging deviations from normal patterns.", + "limitations": "This tool does not provide root cause analysis or automated remediation; quality depends on input data completeness and algorithm settings. Not suitable for non-time-series or unstructured nonsensor data.", + "examples": [ + "Detect anomalies in CPU usage logs over the past day to spot potential attacks.", + "Analyze security event logs to find unusual login patterns.", + "Check network traffic metrics for sudden spikes or drops indicating incidents." + ] + }, + "tags": [ + "security", + "anomaly-detection", + "analytics", + "monitoring", + "incident-response" + ], + "examples": [ + { + "inputJson": "{\"inputData\":[{\"timestamp\":\"2024-04-25T10:00:00Z\",\"value\":120},{\"timestamp\":\"2024-04-25T10:05:00Z\",\"value\":300},{\"timestamp\":\"2024-04-25T10:10:00Z\",\"value\":125}],\"timeWindow\":15,\"detectionAlgorithm\":\"statistical\",\"sensitivity\":0.9,\"outputFormat\":\"json\"}", + "description": "Analyze CPU usage values to detect anomalies with high sensitivity over a 15-min window." + }, + { + "inputJson": "{\"inputData\":[{\"timestamp\":\"2024-04-26T12:00:00Z\",\"eventType\":\"login_failure\",\"userId\":\"user123\"},{\"timestamp\":\"2024-04-26T12:01:00Z\",\"eventType\":\"login_failure\",\"userId\":\"user123\"},{\"timestamp\":\"2024-04-26T12:05:00Z\",\"eventType\":\"login_success\",\"userId\":\"user123\"}],\"detectionAlgorithm\":\"isolationForest\",\"outputFormat\":\"json\"}", + "description": "Detect anomalies in login failure event sequences to identify possible brute force attempts." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Anomaly", + "context": null + } + }, + { + "name": "security-tools.generateDiagram", + "description": "Generates detailed security architecture diagrams based on provided system components and security elements. Accepts input data defining network nodes, security controls, and relationships, then produces a graphical representation in SVG or PNG format illustrating the security topology and data flows.", + "category": "security-tools", + "parameters": [ + { + "name": "components", + "type": "array", + "description": "List of system components and assets to include in the diagram, each with properties like id, type, and description.", + "required": true, + "defaultValue": "" + }, + { + "name": "connections", + "type": "array", + "description": "Defines the relationships and data flows between components, including source, target, and connection type.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "diagramStyle", + "type": "string", + "description": "Specifies the visual style for the diagram, e.g., 'minimal', 'detailed', or 'custom'.", + "required": false, + "defaultValue": "minimal" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Output image format of the diagram, either 'svg' or 'png'.", + "required": false, + "defaultValue": "svg" + }, + { + "name": "includeLegend", + "type": "boolean", + "description": "Whether to include a legend explaining symbols and colors used in the diagram.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the diagram image as a base64-encoded string and the image format used." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create visual security architecture diagrams from structured input data describing network components, security controls, and connections. It assists in visualizing system security topology for analysis or documentation.", + "limitations": "This tool cannot interpret unstructured text descriptions, nor generate interactive or real-time monitoring diagrams. It also does not perform security analysis, only diagram generation.", + "examples": [ + "Generate a network security diagram from a list of servers, firewalls, and encrypted connections.", + "Create a security topology diagram showing connections between microservices and their security controls in SVG format.", + "Visualize security perimeter and internal segmentation with optional legend inclusion in PNG format." + ] + }, + "tags": [ + "security", + "diagram", + "visualization", + "architecture", + "network", + "infrastructure", + "documentation" + ], + "examples": [ + { + "inputJson": "{\"components\":[{\"id\":\"fw1\",\"type\":\"firewall\",\"description\":\"Perimeter Firewall\"},{\"id\":\"db1\",\"type\":\"database\",\"description\":\"Customer DB\"},{\"id\":\"app1\",\"type\":\"application\",\"description\":\"Web Application\"}],\"connections\":[{\"source\":\"app1\",\"target\":\"db1\",\"type\":\"encrypted\"},{\"source\":\"fw1\",\"target\":\"app1\",\"type\":\"filtered\"}],\"diagramStyle\":\"detailed\",\"outputFormat\":\"svg\",\"includeLegend\":true}", + "description": "Generate a detailed SVG diagram showing a firewall, web app, and database with encrypted and filtered connections." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Diagram", + "context": null + } + }, + { + "name": "security-tools.createConversion", + "description": "This tool accepts web security event logs and user interaction data to process and create conversion events that represent successful security actions, such as phishing link clicks converted into incident reports. It outputs structured conversion data useful for security analytics and incident response tracking.", + "category": "security-tools", + "parameters": [ + { + "name": "eventLogs", + "type": "array", + "description": "Array of raw security event log entries from web applications or security devices.", + "required": true, + "defaultValue": "" + }, + { + "name": "userActions", + "type": "array", + "description": "Array of user interaction records relevant to security events, such as clicks or responses to alerts.", + "required": true, + "defaultValue": "" + }, + { + "name": "conversionCriteria", + "type": "object", + "description": "Object defining rules and filters that determine how events convert into security conversion records.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeWindowMinutes", + "type": "number", + "description": "Time window in minutes to correlate events and user actions for conversion detection.", + "required": false, + "defaultValue": "15" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the conversion output, e.g., JSON or CSV.", + "required": false, + "defaultValue": "JSON" + } + ], + "returns": { + "type": "object", + "description": "Structured conversion data outlining detected conversion events including timestamps, user identifiers, event types, and conversion status." + }, + "aiAgent": { + "useCase": "Use this tool when analyzing security logs and user interactions to identify and generate conversion events representing meaningful security outcomes, such as successful phishing alert conversions or incident escalations. Helpful for automated security analytics and reporting.", + "limitations": "This tool does not perform raw log collection or real-time event capture itself. It relies on provided data and criteria to generate conversion events, and does not automate incident remediation.", + "examples": [ + "Create security conversion data from phishing email click logs and user alert responses within a 10-minute correlation window.", + "Generate conversion events identifying successful malware alert follow-ups based on given user action records.", + "Output security conversion summary in CSV format from supplied event logs and interaction data." + ] + }, + "tags": [ + "security", + "analytics", + "conversion", + "event-processing", + "incident-response", + "phishing", + "log-analysis" + ], + "examples": [ + { + "inputJson": "{\"eventLogs\":[{\"eventId\":\"e1\",\"eventType\":\"phishing_click\",\"timestamp\":\"2024-05-01T10:00:00Z\",\"userId\":\"user123\"}],\"userActions\":[{\"actionId\":\"a1\",\"actionType\":\"alert_report\",\"timestamp\":\"2024-05-01T10:05:00Z\",\"userId\":\"user123\"}],\"conversionCriteria\":{\"eventTypeToConvert\":\"phishing_click\",\"userActionType\":\"alert_report\"},\"timeWindowMinutes\":10,\"outputFormat\":\"JSON\"}", + "description": "Identify phishing click events that converted into alert reports by users within 10 minutes." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Conversion", + "context": null + } + }, + { + "name": "security-tools.createGraph", + "description": "Creates interactive security-related graphs based on input threat or vulnerability data. Accepts raw or structured input about security incidents, vulnerabilities, or attack paths, processes and organizes this data to generate visual network/topology graphs illustrating relationships, flows, or impact. Produces output as graph data in JSON or visualization formats.", + "category": "security-tools", + "parameters": [ + { + "name": "inputData", + "type": "object", + "description": "Structured data representing security entities and relationships, such as vulnerabilities, hosts, attack paths, or incidents. Required to generate the graph.", + "required": true, + "defaultValue": "" + }, + { + "name": "graphType", + "type": "string", + "description": "Type of graph visualization to create, e.g., 'network', 'tree', or 'flow'. Defaults to 'network'.", + "required": false, + "defaultValue": "network" + }, + { + "name": "highlightSeverity", + "type": "boolean", + "description": "Whether to visually emphasize nodes or edges based on severity levels present in the input data.", + "required": false, + "defaultValue": "false" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format for the graph, such as 'json' (graph structure), 'svg', or 'png' for rendered visuals.", + "required": false, + "defaultValue": "json" + }, + { + "name": "filterCriteria", + "type": "object", + "description": "Optional parameters to filter input data before graph creation, e.g., focus on a specific vulnerability type or timeframe.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the graph data, including nodes and edges, along with metadata. If a visualization format was specified, returns a corresponding encoded image or visualization data string." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to visualize security data to illustrate relationships among vulnerabilities, attack paths, or threat actors. It aids in quickly understanding complex security scenarios and identifying critical nodes or attack vectors.", + "limitations": "Does not perform vulnerability scanning or data collection itself; requires preprocessed structured input data. Visualization quality depends on input data completeness and correctness. Does not provide remediation advice.", + "examples": [ + "Create a network graph showing the relationships between vulnerabilities and affected hosts from recent scan data.", + "Generate a tree graph depicting the attack path from initial breach to critical asset compromise.", + "Produce an SVG image highlighting vulnerabilities with critical severity on a network topology graph." + ] + }, + "tags": [ + "security", + "graph-generation", + "visualization", + "threat-analysis", + "vulnerability-mapping", + "network-graph" + ], + "examples": [ + { + "inputJson": "{\"inputData\":{\"nodes\":[{\"id\":\"host1\",\"type\":\"host\"},{\"id\":\"vuln1\",\"type\":\"vulnerability\",\"severity\":\"high\"},{\"id\":\"host2\",\"type\":\"host\"}],\"edges\":[{\"from\":\"host1\",\"to\":\"vuln1\"},{\"from\":\"vuln1\",\"to\":\"host2\"}]},\"graphType\":\"network\",\"highlightSeverity\":true,\"outputFormat\":\"json\"}", + "description": "Generate a network graph highlighting severe vulnerabilities linking hosts." + }, + { + "inputJson": "{\"inputData\":{\"nodes\":[{\"id\":\"initialBreach\",\"type\":\"event\"},{\"id\":\"pivotHost\",\"type\":\"host\"},{\"id\":\"criticalAsset\",\"type\":\"asset\"}],\"edges\":[{\"from\":\"initialBreach\",\"to\":\"pivotHost\"},{\"from\":\"pivotHost\",\"to\":\"criticalAsset\"}]},\"graphType\":\"tree\",\"outputFormat\":\"svg\"}", + "description": "Create a tree graph visualization of an attack path from breach to critical asset in SVG format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Graph", + "context": null + } + }, + { + "name": "security-tools.createMarkdown", + "description": "Generates a detailed Markdown report summarizing security audit findings based on provided vulnerabilities, risk assessments, and remediation recommendations. Accepts structured input about security issues, processes it to format sections with headers, lists, and badges, and outputs a well-organized Markdown text suitable for documentation or sharing with stakeholders.", + "category": "security-tools", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "Main title for the security report (e.g., 'Weekly Security Audit')", + "required": true, + "defaultValue": "" + }, + { + "name": "date", + "type": "string", + "description": "Date of the report in ISO 8601 format (e.g., '2024-06-01')", + "required": true, + "defaultValue": "" + }, + { + "name": "vulnerabilities", + "type": "array", + "description": "Array of vulnerability objects detailing individual security issues with fields like id, severity, description, and status", + "required": true, + "defaultValue": "" + }, + { + "name": "riskAssessment", + "type": "string", + "description": "Summary narrative providing an overview of risk posture and critical issues", + "required": false, + "defaultValue": "" + }, + { + "name": "recommendations", + "type": "array", + "description": "List of recommended remediation steps or best practices to address the found vulnerabilities", + "required": false, + "defaultValue": "" + }, + { + "name": "includeSummaryBadge", + "type": "boolean", + "description": "Flag to include a summary badge showing total number of vulnerabilities and highest severity", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the complete Markdown content as a string under the key 'markdownReport'" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a professional, readable security audit report in Markdown format for stakeholders or documentation purposes. It transforms raw vulnerability data and assessments into well-structured human-readable text that includes sections and formatting suitable for repositories, emails, or presentations.", + "limitations": "This tool does not perform any security scanning or data validation. It only formats given input into Markdown and relies on accurate input data. It cannot generate or infer security findings on its own.", + "examples": [ + "Generate a Markdown report for last month's penetration test including vulnerabilities, risk assessment summary, and remediation recommendations.", + "Create a security audit report markdown documenting recent findings with date and include an overview badge.", + "Produce a vulnerability report in Markdown format excluding recommendations." + ] + }, + "tags": [ + "security", + "reporting", + "markdown", + "audit", + "vulnerability", + "documentation", + "automation" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Q2 Security Audit Report\",\"date\":\"2024-06-01\",\"vulnerabilities\":[{\"id\":\"CVE-2024-1234\",\"severity\":\"High\",\"description\":\"SQL Injection in user login endpoint.\",\"status\":\"Open\"},{\"id\":\"CVE-2023-5678\",\"severity\":\"Medium\",\"description\":\"Outdated TLS version used.\",\"status\":\"Mitigated\"}],\"riskAssessment\":\"Overall risk remains elevated due to critical SQL Injection.\",\"recommendations\":[\"Patch login endpoint immediately.\",\"Upgrade TLS to 1.3.\"],\"includeSummaryBadge\":true}", + "description": "Generate a full Q2 security audit report with vulnerabilities, risk summary, and recommendations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Markdown", + "context": null + } + }, + { + "name": "security-tools.createExpense", + "description": "Creates a secure, validated expense record for a business application. Accepts expense details including amount, currency, category, description, and optionally attached documents. Processes validation, applies encryption to sensitive fields, and returns a secure expense object with unique ID and timestamp.", + "category": "security-tools", + "parameters": [ + { + "name": "amount", + "type": "number", + "description": "Monetary amount of the expense, must be positive", + "required": true, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code for the amount (e.g., USD, EUR)", + "required": true, + "defaultValue": "USD" + }, + { + "name": "category", + "type": "string", + "description": "Expense category such as travel, meals, or office supplies", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Text description or notes about the expense", + "required": false, + "defaultValue": "" + }, + { + "name": "dateIncurred", + "type": "string", + "description": "ISO 8601 date string when the expense was incurred", + "required": false, + "defaultValue": "" + }, + { + "name": "attachedDocuments", + "type": "array", + "description": "List of URLs or base64 encoded attachments related to the expense", + "required": false, + "defaultValue": "[]" + }, + { + "name": "encryptSensitiveData", + "type": "boolean", + "description": "Flag to encrypt sensitive fields such as description for security", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing a secure expense record with unique ID, stored fields, and created timestamp" + }, + "aiAgent": { + "useCase": "Use this tool when a business or financial application needs to securely create and store expense records with validation and optional encryption of sensitive information. It ensures expenses comply with expected formats and protect sensitive details against unauthorized access.", + "limitations": "This tool does not handle expense approval workflows or integration with accounting systems; it only creates and secures expense data.", + "examples": [ + "Create an expense record of $120 USD for meals with receipt attachment.", + "Submit a travel expense of 300 EUR with description and encrypt sensitive data.", + "Add an office supplies expense for $45.50 without attachments." + ] + }, + "tags": [ + "security", + "expense", + "business", + "encryption", + "validation", + "finance" + ], + "examples": [ + { + "inputJson": "{\"amount\":120.00,\"currency\":\"USD\",\"category\":\"meals\",\"description\":\"Team lunch\",\"dateIncurred\":\"2024-05-10\",\"attachedDocuments\":[\"https://example.com/receipt123.jpg\"],\"encryptSensitiveData\":true}", + "description": "Create a meal expense with attached receipt and encryption enabled." + }, + { + "inputJson": "{\"amount\":300,\"currency\":\"EUR\",\"category\":\"travel\",\"description\":\"Conference attendance\",\"encryptSensitiveData\":true}", + "description": "Create a travel expense with a description and encrypt sensitive data." + }, + { + "inputJson": "{\"amount\":45.5,\"currency\":\"USD\",\"category\":\"office supplies\"}", + "description": "Create a basic office supplies expense without optional fields." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Expense", + "context": null + } + }, + { + "name": "security-tools.createAudio", + "description": "Generates an audio file containing a randomized or passphrase-based spoken password or security phrase for authentication purposes. Accepts parameters for voice style, language, phrase content or length, and output format. Produces an audio file output with the spoken phrase for secure user verification or multi-factor authentication.", + "category": "security-tools", + "parameters": [ + { + "name": "phrase", + "type": "string", + "description": "The exact phrase or password to be spoken in the audio. If empty, a random secure phrase is generated.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The language code (e.g., 'en-US') for the voice used in the audio output.", + "required": true, + "defaultValue": "en-US" + }, + { + "name": "voiceStyle", + "type": "string", + "description": "The voice style or gender to use for speech synthesis (e.g., 'male', 'female', 'neutral').", + "required": false, + "defaultValue": "neutral" + }, + { + "name": "phraseLength", + "type": "number", + "description": "Length of the randomly generated phrase in characters if phrase parameter is empty.", + "required": false, + "defaultValue": "12" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The audio file format to generate (e.g., 'mp3', 'wav', 'ogg').", + "required": true, + "defaultValue": "mp3" + }, + { + "name": "speed", + "type": "number", + "description": "Speech rate multiplier where 1 is normal speed.", + "required": false, + "defaultValue": "1" + } + ], + "returns": { + "type": "object", + "description": "An object containing the audio file's binary data encoded as a base64 string and metadata including format, duration, and phrase used." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create audio clips of secure phrases or passwords for multi-factor authentication or security verification processes requiring audio prompts. This helps in scenarios where verbal password transmission or audio password memorization is preferred. It is useful for generating customized audio security tokens or spoken verification messages.", + "limitations": "This tool does not generate non-verbal sound-based security tokens, nor does it perform encryption. The security level depends on phrase complexity and voice randomness. It cannot replace secure cryptographic authentications on its own.", + "examples": [ + "Create an mp3 audio saying 'secure access granted' in US English female voice.", + "Generate a 16-character random secure password spoken aloud in British English male voice as a wav file.", + "Produce an ogg file with a spoken phrase 'code 4729 alpha' at 1.2x normal speed in neutral voice." + ] + }, + "tags": [ + "audio", + "speech synthesis", + "security", + "password", + "authentication", + "multi-factor", + "voice", + "tts" + ], + "examples": [ + { + "inputJson": "{\"phrase\":\"secure access granted\",\"language\":\"en-US\",\"voiceStyle\":\"female\",\"outputFormat\":\"mp3\"}", + "description": "Generate an mp3 audio with the phrase 'secure access granted' spoken in US English female voice." + }, + { + "inputJson": "{\"phrase\":\"\",\"language\":\"en-GB\",\"voiceStyle\":\"male\",\"phraseLength\":16,\"outputFormat\":\"wav\"}", + "description": "Generate a 16-character random secure password spoken aloud in British English male voice as a wav file." + }, + { + "inputJson": "{\"phrase\":\"code 4729 alpha\",\"language\":\"en-US\",\"voiceStyle\":\"neutral\",\"outputFormat\":\"ogg\",\"speed\":1.2}", + "description": "Produce an ogg audio file with the spoken phrase 'code 4729 alpha' at 1.2x normal speed in neutral voice." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Audio", + "context": null + } + }, + { + "name": "security-tools.createDependency", + "description": "Creates a secure dependency definition file for a project by accepting a list of dependencies with versions, verifying their sources and integrity hashes, and generating a standardized lock file to ensure consistent and safe dependency installation.", + "category": "security-tools", + "parameters": [ + { + "name": "dependencies", + "type": "array", + "description": "An array of dependency objects, each including name, version, source URL, and optional integrity hash to verify integrity.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The format of the generated dependency file, e.g., 'lockfile' or 'json'.", + "required": false, + "defaultValue": "lockfile" + }, + { + "name": "includeDevDependencies", + "type": "boolean", + "description": "Whether to include development dependencies in the output file.", + "required": false, + "defaultValue": "false" + }, + { + "name": "projectName", + "type": "string", + "description": "Optional name of the project to include in the metadata of the generated file.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated dependency file content as a string and metadata about the resolved dependencies, including any integrity verification results." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create or update a secure dependency lock file for a software project based on a list of dependencies with versions and integrity information. It helps ensure consistent builds and mitigates supply chain risks by including source and integrity verification.", + "limitations": "This tool does not resolve transitive dependencies automatically. It assumes the input dependencies are already resolved and does not perform deep vulnerability scanning.", + "examples": [ + "Create a lock file with specific versions and hashes for a Node.js project.", + "Generate a JSON dependency file including development dependencies for a Python project.", + "Create a dependency definition for a project specifying a custom name in the metadata." + ] + }, + "tags": [ + "security", + "dependency-management", + "lockfile", + "integrity", + "software-supply-chain" + ], + "examples": [ + { + "inputJson": "{\"dependencies\":[{\"name\":\"lodash\",\"version\":\"4.17.21\",\"sourceUrl\":\"https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz\",\"integrityHash\":\"sha512-abc123...\"}],\"outputFormat\":\"lockfile\",\"includeDevDependencies\":false,\"projectName\":\"my-app\"}", + "description": "Generate a standard lockfile for a Node.js app with lodash locked to version 4.17.21, including integrity hash." + }, + { + "inputJson": "{\"dependencies\":[{\"name\":\"requests\",\"version\":\"2.26.0\",\"sourceUrl\":\"https://pypi.org/project/requests/2.26.0/\"}],\"outputFormat\":\"json\",\"includeDevDependencies\":true,\"projectName\":\"api-client\"}", + "description": "Produce a JSON format dependency file for a Python project including development dependencies." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dependency", + "context": null + } + }, + { + "name": "legal-tools.analyzeCustomer", + "description": "Analyzes customer information to assess legal compliance risks and contractual obligations. Accepts customer profiles including identification, jurisdiction, business type, and contract terms. Performs checks against regulatory requirements, sanctions lists, and contract clauses. Outputs a detailed compliance report highlighting potential legal issues and recommendations.", + "category": "legal-tools", + "parameters": [ + { + "name": "customerProfile", + "type": "object", + "description": "Structured data containing customer identification details, jurisdiction, and business class to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "contractDocuments", + "type": "array", + "description": "Array of contract document texts or structured data related to the customer to review legal clauses and obligations.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "regulatoryJurisdictions", + "type": "array", + "description": "List of legal jurisdictions to consider for compliance checks (e.g., countries, states).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "checkSanctions", + "type": "boolean", + "description": "Whether to check the customer against international sanctions lists.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "If true, includes actionable compliance recommendations in the output report.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Compliance report object containing identified legal risks, contract obligations issues, sanctions match results, and optional compliance recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when assessing a customer’s legal risk profile during contract negotiations, onboarding, or ongoing compliance monitoring. It assists in identifying jurisdictional risks, sanction matches, and problematic contract clauses to inform risk mitigation and decision-making.", + "limitations": "Does not substitute for professional legal advice. It cannot interpret complex contract negotiations or dynamic regulatory changes in real-time. Requires structured input and may miss risks from incomplete data.", + "examples": [ + "Analyze a new customer's profile and contracts to identify any legal compliance risks before signing.", + "Check if an existing client falls under any sanctions or regulatory constraints across multiple jurisdictions.", + "Generate a compliance summary report on a prospective customer's contractual obligations and potential risks." + ] + }, + "tags": [ + "legal", + "compliance", + "customer-analysis", + "contract-review", + "risk-assessment", + "sanctions-check" + ], + "examples": [ + { + "inputJson": "{\"customerProfile\":{\"name\":\"ABC Corp\",\"jurisdiction\":\"US\",\"businessType\":\"Import/Export\",\"idNumber\":\"123456789\"},\"contractDocuments\":[\"Sales Agreement text here.\"],\"regulatoryJurisdictions\":[\"US\",\"EU\"],\"checkSanctions\":true,\"includeRecommendations\":true}", + "description": "Analyze a US-based import/export customer with provided contract text and check US and EU regulations including sanctions lists." + }, + { + "inputJson": "{\"customerProfile\":{\"name\":\"Global Trading Ltd.\",\"jurisdiction\":\"GB\",\"businessType\":\"Finance\",\"idNumber\":\"987654321\"},\"checkSanctions\":false,\"includeRecommendations\":true}", + "description": "Analyze a UK financial services customer profile without sanctions check but including compliance recommendations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Customer", + "context": null + } + }, + { + "name": "legal-tools.sendEmail", + "description": "This tool sends emails related to legal contracts and compliance matters. It accepts parameters such as recipient addresses, subject, body content, optional attachments, and urgency flags. The tool processes the input by formatting the email and dispatching it through a configured SMTP server or email API, returning a delivery status with message ID and any errors encountered.", + "category": "legal-tools", + "parameters": [ + { + "name": "to", + "type": "array", + "description": "List of recipient email addresses for the legal email", + "required": true, + "defaultValue": "" + }, + { + "name": "cc", + "type": "array", + "description": "Optional list of CC recipient email addresses", + "required": false, + "defaultValue": "[]" + }, + { + "name": "bcc", + "type": "array", + "description": "Optional list of BCC recipient email addresses", + "required": false, + "defaultValue": "[]" + }, + { + "name": "subject", + "type": "string", + "description": "Subject line of the email", + "required": true, + "defaultValue": "" + }, + { + "name": "body", + "type": "string", + "description": "Main content of the email, supports plain text or HTML", + "required": true, + "defaultValue": "" + }, + { + "name": "attachments", + "type": "array", + "description": "Optional list of attachments, each with filename and base64 content", + "required": false, + "defaultValue": "[]" + }, + { + "name": "isHighPriority", + "type": "boolean", + "description": "Flag indicating if the email should be marked as high importance", + "required": false, + "defaultValue": "false" + }, + { + "name": "senderEmail", + "type": "string", + "description": "Email address of the sender", + "required": true, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Status object containing success boolean, messageId if sent, and error message if failed" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to send legally relevant emails such as contract notices, compliance alerts, policy updates, or document sharing to stakeholders. The agent should format the legal context properly and use this tool to communicate through email efficiently.", + "limitations": "This tool only sends emails; it does not verify email deliverability, handle inbound messages, or provide legal advice. Attachments must be pre-encoded by the agent.", + "examples": [ + "Send contract renewal reminders to clients.", + "Notify compliance team about regulatory changes via email.", + "Email signed legal documents to the relevant parties." + ] + }, + "tags": [ + "email", + "legal", + "contract", + "communication", + "notification", + "compliance" + ], + "examples": [ + { + "inputJson": "{\"to\":[\"legalteam@example.com\"],\"cc\":[\"manager@example.com\"],\"bcc\":[],\"subject\":\"Contract Renewal Notice\",\"body\":\"Dear Client, your contract is due for renewal next month.\",\"attachments\":[],\"isHighPriority\":true,\"senderEmail\":\"contracts@examplecorp.com\"}", + "description": "Send a high priority contract renewal notice to the legal team with a manager CC'd." + }, + { + "inputJson": "{\"to\":[\"compliance@example.com\"],\"cc\":[],\"bcc\":[],\"subject\":\"New Compliance Policy Update\",\"body\":\"Please find the attached updated compliance policies effective immediately.\",\"attachments\":[{\"filename\":\"policy.pdf\",\"content\":\"JVBERi0xLjQKJcfs...base64encoded...\"}],\"isHighPriority\":false,\"senderEmail\":\"hr@examplecorp.com\"}", + "description": "Email the compliance team with an updated policy PDF attached from HR." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Email", + "context": null + } + }, + { + "name": "legal-tools.analyzeReport", + "description": "Analyzes legal documents or contract reports in text or PDF format to extract key clauses, compliance risks, deadlines, and summarizes important legal terms. Produces a structured analysis highlighting risks, obligations, and recommendations for review.", + "category": "legal-tools", + "parameters": [ + { + "name": "reportContent", + "type": "string", + "description": "The full text content or base64-encoded PDF of the legal report to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileFormat", + "type": "string", + "description": "Format of the input report content. Accepted values: 'text' or 'pdf'. Defaults to 'text'.", + "required": false, + "defaultValue": "text" + }, + { + "name": "highlightRisks", + "type": "boolean", + "description": "Whether to highlight compliance or legal risks found within the report. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "summarize", + "type": "boolean", + "description": "Whether to generate a high-level summary of the report's main points. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the report content, e.g., 'en' for English, to assist in accurate analysis. Defaults to 'en'.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing extracted clauses, identified risks, deadline dates, key obligations, and an executive summary of the legal report." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to perform detailed review and risk analysis of legal documents or contract reports to support decision-making or compliance monitoring. It helps to quickly identify critical clauses, deadlines, and potential legal issues.", + "limitations": "This tool cannot provide legally binding advice or interpret ambiguous clauses definitively. It may not fully understand jurisdiction-specific regulations or context beyond the text provided.", + "examples": [ + "Analyze a contract report to extract key terms and compliance risks.", + "Summarize a PDF legal audit report highlighting deadlines and obligations.", + "Review provided legal agreement text for potential red flags and critical clauses." + ] + }, + "tags": [ + "legal", + "document-analysis", + "contract", + "compliance", + "risk-assessment", + "report", + "summarization" + ], + "examples": [ + { + "inputJson": "{\"reportContent\":\"This Agreement shall commence on 01 January 2024 and shall continue until 31 December 2024. The Client must deliver all payments within 30 days of invoice receipt. Non-compliance with confidentiality terms may result in penalties.\",\"fileFormat\":\"text\",\"highlightRisks\":true,\"summarize\":true,\"language\":\"en\"}", + "description": "Analyze a legal agreement text for clauses, deadlines, and risks." + }, + { + "inputJson": "{\"reportContent\":\"JVBERi0xLjQKJcfs...base64encodedPDF...\",\"fileFormat\":\"pdf\",\"highlightRisks\":true,\"summarize\":true,\"language\":\"en\"}", + "description": "Analyze a base64-encoded PDF legal report for compliance risks and summary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Report", + "context": null + } + }, + { + "name": "legal-tools.buildCode", + "description": "This tool accepts structured input defining legal contract clauses, variables, and conditions, then generates executable code snippets (e.g., smart contract or compliance scripts) that enforce or implement these contractual terms. The output is code in a specified language that automates contract logic for integration into legal software.", + "category": "legal-tools", + "parameters": [ + { + "name": "contractClauses", + "type": "array", + "description": "An array of objects representing contract clauses, each detailing conditions, obligations, and rights to be encoded.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputLanguage", + "type": "string", + "description": "The programming language for the generated code (e.g., Solidity, JavaScript).", + "required": true, + "defaultValue": "" + }, + { + "name": "includeComments", + "type": "boolean", + "description": "Whether to include descriptive comments explaining generated code logic.", + "required": false, + "defaultValue": "true" + }, + { + "name": "contractVariables", + "type": "object", + "description": "Object mapping variable names to their types and initial values used within contract clauses.", + "required": false, + "defaultValue": "" + }, + { + "name": "complianceFramework", + "type": "string", + "description": "Optional compliance framework or jurisdiction to consider during code generation (e.g., GDPR, FINRA).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "GeneratedCode containing the code string and metadata such as language and snippet summaries." + }, + "aiAgent": { + "useCase": "Use this tool to automatically generate executable code for contract logic from detailed legal clause definitions, enabling seamless automation of legal obligations and compliance checks in software systems. It's ideal when translating legal terms into enforceable code for blockchain smart contracts or compliance automation.", + "limitations": "This tool does not validate the legal validity of clauses or replace legal advice. It also cannot fully guarantee compliance with jurisdictional law beyond predefined frameworks nor optimize code efficiency beyond basic generation.", + "examples": [ + "Generate Solidity code for escrow clauses defined in input.", + "Create JavaScript compliance script enforcing data privacy clauses under GDPR.", + "Produce documented code snippets for contract obligations with variable initialization." + ] + }, + "tags": [ + "legal", + "code-generation", + "contract-automation", + "smart-contracts", + "compliance", + "legal-tech", + "automation" + ], + "examples": [ + { + "inputJson": "{\"contractClauses\":[{\"id\":\"clause1\",\"title\":\"Payment Terms\",\"conditions\":\"On delivery, buyer pays seller within 30 days.\"}],\"outputLanguage\":\"Solidity\",\"includeComments\":true,\"contractVariables\":{\"buyerAddress\":\"address\",\"paymentDueDate\":\"uint256\"},\"complianceFramework\":\"\"}", + "description": "Generate Solidity code with comments for a payment clause including defined variables." + }, + { + "inputJson": "{\"contractClauses\":[{\"id\":\"privacy1\",\"title\":\"Data Usage\",\"conditions\":\"User data must be deleted within 30 days of request.\"}],\"outputLanguage\":\"JavaScript\",\"includeComments\":false,\"contractVariables\":{\"dataDeletionDeadline\":\"Date\"},\"complianceFramework\":\"GDPR\"}", + "description": "Create JavaScript code no comments for data privacy clause under GDPR." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Code", + "context": null + } + }, + { + "name": "customer-support.analyzeHeading", + "description": "This tool analyzes a given heading text from customer support content (such as FAQs, help articles, or chat transcripts) to identify its intent, sentiment, and relevant category. It accepts a string heading, processes linguistic and contextual features, and returns structured insights including intent classification, sentiment score, and suggested category labels to support content organization and enhancement.", + "category": "customer-support", + "parameters": [ + { + "name": "headingText", + "type": "string", + "description": "The heading text from customer support content to analyze (e.g., FAQ title or ticket subject).", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The language code of the heading text to ensure proper analysis (default is 'en').", + "required": false, + "defaultValue": "en" + }, + { + "name": "intentCategories", + "type": "array", + "description": "Optional list of possible intent categories to classify the heading against (e.g., ['Billing', 'Technical Issue', 'Account']). If empty, default categories are used.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object describing the analysis results: detected intent category, sentiment (positive/neutral/negative), and suggested topic tags." + }, + "aiAgent": { + "useCase": "Use this tool when needing to understand or classify short heading texts in customer support contexts to improve content tagging, routing, or insight extraction. Ideal for analyzing FAQ titles, ticket subjects, or knowledge base headings.", + "limitations": "The tool only analyzes the heading text and does not consider the full content body or conversation context, so classification may be limited in cases where the heading is ambiguous.", + "examples": [ + "Analyze the heading 'How do I reset my password?' to identify intent and sentiment.", + "Classify the heading 'Billing dispute for last invoice' within given categories to route support tickets.", + "Determine sentiment and suggest topic tags for the FAQ heading 'Troubleshooting network connection errors'." + ] + }, + "tags": [ + "analysis", + "customer-support", + "NLP", + "content-classification", + "sentiment-analysis", + "intent-detection" + ], + "examples": [ + { + "inputJson": "{\"headingText\":\"How do I update my payment method?\",\"language\":\"en\",\"intentCategories\":[\"Billing\",\"Account Update\",\"Technical Issue\"]}", + "description": "Analyze a support FAQ heading related to billing and account update intents." + }, + { + "inputJson": "{\"headingText\":\"Unable to connect to WiFi network\",\"language\":\"en\"}", + "description": "Analyze a technical issue ticket subject with default categories and language." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Heading", + "context": null + } + }, + { + "name": "legal-tools.createReport", + "description": "Generates a comprehensive legal compliance or contract management report based on provided contract data and compliance parameters. Accepts contract details, relevant dates, compliance checkpoints, and optional notes, processing these inputs to produce a structured report summarizing compliance status and action items.", + "category": "legal-tools", + "parameters": [ + { + "name": "contractId", + "type": "string", + "description": "Unique identifier of the contract for which the report is generated.", + "required": true, + "defaultValue": "" + }, + { + "name": "contractData", + "type": "object", + "description": "Detailed contract information including parties, terms, and clauses relevant to compliance checks.", + "required": true, + "defaultValue": "" + }, + { + "name": "complianceCheckpoints", + "type": "array", + "description": "List of compliance checkpoints or criteria to evaluate against the contract data.", + "required": true, + "defaultValue": "" + }, + { + "name": "reportDate", + "type": "string", + "description": "The date for which the report is generated, formatted as YYYY-MM-DD.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeActionItems", + "type": "boolean", + "description": "Whether to include recommended action items for any detected compliance issues.", + "required": false, + "defaultValue": "true" + }, + { + "name": "notes", + "type": "string", + "description": "Optional additional notes or comments to include in the report.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured report object containing summary of compliance status, details of any issues found, and optional action items and notes." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to produce a detailed report on legal compliance or contract performance based on specific contract data and compliance criteria. It helps summarize current compliance status and identify areas requiring attention or remediation.", + "limitations": "This tool does not interpret legal language or substitute legal advice; it relies on provided data and predefined checkpoints. It cannot validate legal validity or advise on contract revisions.", + "examples": [ + "Generate a compliance status report for contract ID 12345 checking all GDPR-related clauses.", + "Create a contract performance report including action items for upcoming renewal dates.", + "Produce a summary report for contract X with notes for the legal team." + ] + }, + "tags": [ + "legal", + "report", + "compliance", + "contract", + "management", + "document" + ], + "examples": [ + { + "inputJson": "{\"contractId\":\"C-2023-001\",\"contractData\":{\"parties\":[\"Company A\",\"Company B\"],\"startDate\":\"2023-01-01\",\"endDate\":\"2025-01-01\",\"terms\":[{\"clause\":\"Data Protection\",\"compliant\":true},{\"clause\":\"Renewal Notice\",\"compliant\":false}]},\"complianceCheckpoints\":[\"Data Protection\",\"Renewal Notice\"],\"reportDate\":\"2024-06-01\",\"includeActionItems\":true,\"notes\":\"Urgent review needed for renewal clause.\"}", + "description": "Generate a compliance report for contract C-2023-001 checking specified compliance points and producing action items." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Report", + "context": null + } + }, + { + "name": "customer-support.analyzeTrend", + "description": "This tool accepts historical customer support data including ticket volumes, resolution times, and customer sentiment scores over time. It analyzes these datasets to identify emerging trends, seasonality, and shifts in support demand or customer satisfaction. The output is a structured report summarizing detected patterns, their significance, and potential impact on support operations.", + "category": "customer-support", + "parameters": [ + { + "name": "data", + "type": "array", + "description": "An array of customer support records with timestamps, ticket counts, resolution metrics, and sentiment scores to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeFrame", + "type": "object", + "description": "An object specifying the start and end dates for the analysis period.", + "required": true, + "defaultValue": "" + }, + { + "name": "trendType", + "type": "string", + "description": "Type of trend to analyze: 'volume', 'resolutionTime', or 'sentiment'.", + "required": false, + "defaultValue": "volume" + }, + { + "name": "confidenceLevel", + "type": "number", + "description": "Statistical confidence level (between 0 and 1) to use when reporting significant trends.", + "required": false, + "defaultValue": "0.95" + }, + { + "name": "seasonalityDetection", + "type": "boolean", + "description": "Whether to detect and report seasonality effects in the data.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing detected trend summaries, including trend direction, magnitude, seasonality patterns, and confidence metrics." + }, + "aiAgent": { + "useCase": "Use this tool when needing to understand shifts and emerging patterns in customer support metrics such as ticket volume changes, resolution time trends, or sentiment evolution over time. It helps predict resource needs or identify satisfaction issues early.", + "limitations": "This tool cannot provide root cause analysis or causal inference, only trend detection. It requires clean historical data with consistent time stamps and relevant metrics.", + "examples": [ + "Analyze ticket volume trends from last quarter to plan staffing.", + "Identify seasonality in customer sentiment scores over the past year.", + "Detect whether resolution times have statistically changed in the last two months." + ] + }, + "tags": [ + "analysis", + "customer-support", + "trend-detection", + "metrics", + "time-series" + ], + "examples": [ + { + "inputJson": "{\"data\":[{\"timestamp\":\"2024-03-01\",\"tickets\":120,\"resolutionTime\":30,\"sentiment\":0.75},{\"timestamp\":\"2024-03-02\",\"tickets\":135,\"resolutionTime\":28,\"sentiment\":0.78}],\"timeFrame\":{\"start\":\"2024-03-01\",\"end\":\"2024-03-31\"},\"trendType\":\"volume\",\"confidenceLevel\":0.95,\"seasonalityDetection\":true}", + "description": "Analyze daily ticket volumes in March 2024 for trends and seasonality." + }, + { + "inputJson": "{\"data\":[{\"timestamp\":\"2023-01-01\",\"tickets\":100,\"resolutionTime\":32,\"sentiment\":0.70},{\"timestamp\":\"2023-07-01\",\"tickets\":110,\"resolutionTime\":34,\"sentiment\":0.65}],\"timeFrame\":{\"start\":\"2023-01-01\",\"end\":\"2023-12-31\"},\"trendType\":\"sentiment\",\"confidenceLevel\":0.90,\"seasonalityDetection\":false}", + "description": "Analyze yearly customer sentiment trends in 2023 without seasonality detection." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Trend", + "context": null + } + }, + { + "name": "customer-support.analyzeThread", + "description": "Analyzes a customer support communication thread to extract key insights such as sentiment, issue categorization, agent performance metrics, and conversation flow. It processes input text of the entire thread and outputs a structured summary highlighting customer satisfaction, common topics, and recommended actions.", + "category": "customer-support", + "parameters": [ + { + "name": "threadText", + "type": "string", + "description": "Full text of the customer support thread including all messages between customer and agent.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the thread text for accurate analysis (e.g., 'en' for English).", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Flag to include sentiment analysis of customer messages.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeIssueCategorization", + "type": "boolean", + "description": "Flag to categorize the issues mentioned in the thread.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeAgentPerformance", + "type": "boolean", + "description": "Flag to evaluate and summarize agent responsiveness and tone.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum length in words for the generated summary output.", + "required": false, + "defaultValue": "200" + } + ], + "returns": { + "type": "object", + "description": "Structured analysis report including sentiment scores, categorized issues, agent performance metrics, and an overall summary of the thread." + }, + "aiAgent": { + "useCase": "Use this tool when needing to understand the overall quality and key themes of a customer support interaction thread for improving customer service or generating actionable reports. Ideal to assess customer sentiment, classify issues, and evaluate agent communication effectiveness automatically.", + "limitations": "Does not perform real-time message monitoring and may not capture nuanced context beyond textual data. Accuracy depends on language support and thread completeness.", + "examples": [ + "Analyze the customer conversation thread to summarize issues and sentiment.", + "Check agent performance and customer satisfaction from the chat transcript.", + "Provide a categorized summary report of this support email thread." + ] + }, + "tags": [ + "analysis", + "customer-support", + "sentiment", + "issue-categorization", + "agent-performance", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"threadText\":\"Customer: I'm really unhappy with the delay in my order. Agent: Sorry for the inconvenience, we're checking on that for you.\",\"language\":\"en\",\"includeSentimentAnalysis\":true,\"includeIssueCategorization\":true,\"includeAgentPerformance\":true,\"maxSummaryLength\":150}", + "description": "Analyze a short customer support chat to extract sentiment, issue category, and agent performance." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Thread", + "context": null + } + }, + { + "name": "customer-support.downloadCSV", + "description": "Downloads customer support data as a CSV file based on specified filters such as date range, ticket status, and priority. Accepts filtering parameters to extract relevant ticket records, processes the data into CSV format, and outputs a downloadable CSV file containing the selected support tickets and their details.", + "category": "customer-support", + "parameters": [ + { + "name": "startDate", + "type": "string", + "description": "Start date to filter support tickets (ISO 8601 format, e.g. 2024-01-01). Only tickets created or updated after this date are included.", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date to filter support tickets (ISO 8601 format, e.g. 2024-01-31). Only tickets created or updated before this date are included.", + "required": false, + "defaultValue": "" + }, + { + "name": "ticketStatus", + "type": "array", + "description": "List of ticket statuses to include (e.g., ['open','closed','pending']). Filters tickets by their current status.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "priorityLevels", + "type": "array", + "description": "List of priority levels to include (e.g., ['low','medium','high']). Filters tickets by priority.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "fields", + "type": "array", + "description": "Specific ticket data fields to include in the CSV output (e.g., ['id','subject','customerName','createdDate']). Defaults to common fields if empty.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeClosed", + "type": "boolean", + "description": "If true, includes closed tickets in the export regardless of other filters.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the CSV content as a string and metadata like number of records exported." + }, + "aiAgent": { + "useCase": "Use this tool when needing to generate and download customer support ticket data as a CSV for reporting, analysis, or archival. It helps extract filtered ticket information based on date, status, and priority to facilitate external data processing or sharing with stakeholders.", + "limitations": "This tool cannot fetch real-time updates once the CSV is downloaded and does not support exporting data formats other than CSV.", + "examples": [ + "Download all open support tickets created in the last month.", + "Export high priority tickets including closed ones for audit.", + "Retrieve a CSV of tickets containing only id, subject, and customer info fields for a given quarter." + ] + }, + "tags": [ + "customer-support", + "download", + "CSV", + "tickets", + "reporting", + "export" + ], + "examples": [ + { + "inputJson": "{\"startDate\":\"2024-03-01\",\"endDate\":\"2024-03-31\",\"ticketStatus\":[\"open\",\"pending\"],\"fields\":[\"id\",\"subject\",\"createdDate\",\"priority\"]}", + "description": "Download all open and pending tickets created in March 2024 with selected fields." + }, + { + "inputJson": "{\"priorityLevels\":[\"high\"],\"includeClosed\":true,\"fields\":[\"id\",\"subject\",\"status\",\"closedDate\"]}", + "description": "Export all high priority tickets including closed ones, with limited fields about status and closing date." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "CSV", + "context": null + } + }, + { + "name": "customer-support.analyzeHTML", + "description": "Analyzes customer support-related HTML content to extract and summarize key elements such as FAQs, contact information, response templates, and support tickets. Accepts raw HTML input and outputs a structured analysis highlighting customer query patterns and common support topics.", + "category": "customer-support", + "parameters": [ + { + "name": "htmlContent", + "type": "string", + "description": "Raw HTML string containing customer support data (e.g., webpage, email template, chat transcript).", + "required": true, + "defaultValue": "" + }, + { + "name": "extractFAQs", + "type": "boolean", + "description": "Flag to extract Frequently Asked Questions sections.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractContactInfo", + "type": "boolean", + "description": "Flag to extract contact information such as phone numbers, emails, or live chat links.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractResponseTemplates", + "type": "boolean", + "description": "Flag to identify and extract predefined response templates in the HTML.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum character length for the summarized analysis output.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing extracted data categorized into FAQs, contactInfo, responseTemplates, and a textual summary highlighting customer support themes and frequent inquiries." + }, + "aiAgent": { + "useCase": "Use this tool when needing to understand the structure and content of a customer support HTML page or document. It helps to automatically identify key elements like FAQs, contact info, and common response templates, enabling faster insights into customer support resources and frequent issues.", + "limitations": "Cannot execute dynamic content rendering (e.g., JavaScript-generated content). It processes static HTML only and may not fully capture interactive or media elements.", + "examples": [ + "Extract FAQs and contact info from a support webpage HTML.", + "Generate a summary of common customer questions from an email support template in HTML.", + "Identify response templates used within a customer support chat transcript formatted as HTML." + ] + }, + "tags": [ + "customer-support", + "html", + "analysis", + "faq", + "contact-info", + "templates", + "summary" + ], + "examples": [ + { + "inputJson": "{\"htmlContent\":\"

FAQ

  • How to reset password?
  • How to contact support?

Contact us at support@example.com or call 123-456-7890.

\",\"extractFAQs\":true,\"extractContactInfo\":true,\"extractResponseTemplates\":false,\"maxSummaryLength\":500}", + "description": "Extract FAQs and contact info from a simple support page HTML." + }, + { + "inputJson": "{\"htmlContent\":\"
Thank you for reaching out. We will get back to you within 24 hours.
\",\"extractFAQs\":false,\"extractContactInfo\":false,\"extractResponseTemplates\":true,\"maxSummaryLength\":300}", + "description": "Identify and extract predefined response templates from support HTML." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "HTML", + "context": null + } + }, + { + "name": "customer-support.renderWord", + "description": "Renders a given word or phrase into formatted text suitable for customer support interfaces, applying specified style options such as font size, color, emphasis, and localization. Accepts raw text input with styling parameters and outputs HTML or styled text snippet ready for UI integration.", + "category": "customer-support", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The raw word or phrase to render.", + "required": true, + "defaultValue": "" + }, + { + "name": "fontSize", + "type": "number", + "description": "Font size in pixels to apply to the rendered text.", + "required": false, + "defaultValue": "14" + }, + { + "name": "fontColor", + "type": "string", + "description": "Hex color code or color name for the text color (e.g., '#000000' or 'red').", + "required": false, + "defaultValue": "#000000" + }, + { + "name": "fontWeight", + "type": "string", + "description": "Font weight to apply, e.g. 'normal', 'bold', or numeric '400'.", + "required": false, + "defaultValue": "normal" + }, + { + "name": "italic", + "type": "boolean", + "description": "Whether to italicize the text.", + "required": false, + "defaultValue": "false" + }, + { + "name": "underline", + "type": "boolean", + "description": "Whether to underline the text.", + "required": false, + "defaultValue": "false" + }, + { + "name": "locale", + "type": "string", + "description": "Locale code for localization or language-specific formatting (e.g., 'en-US').", + "required": false, + "defaultValue": "en-US" + } + ], + "returns": { + "type": "object", + "description": "An object containing the rendered HTML string with applied styles for direct insertion into the customer support UI." + }, + "aiAgent": { + "useCase": "Use this tool when presenting dynamic single words or phrases within customer support chat, FAQs, help desks, or notifications that require consistent styling, formatting, and potentially localization. It helps maintain branded appearance and readability in UI components by converting plain text into styled HTML snippets using specified visual and locale parameters.", + "limitations": "This tool does not support rendering entire paragraphs, rich text with images, or interactive elements. It only processes single words or short phrases and outputs static styled text.", + "examples": [ + "Render the word 'Success' in green, bold, italic font.", + "Render 'Error' in red, underlined text with locale 'en-GB'.", + "Render a greeting word in default style for US English locale." + ] + }, + "tags": [ + "customer support", + "text rendering", + "UI formatting", + "localization", + "styling" + ], + "examples": [ + { + "inputJson": "{\"text\":\"Success\",\"fontSize\":16,\"fontColor\":\"#008000\",\"fontWeight\":\"bold\",\"italic\":true,\"underline\":false,\"locale\":\"en-US\"}", + "description": "Render the word 'Success' in green, bold, italicized text with 16px font size." + }, + { + "inputJson": "{\"text\":\"Error\",\"fontSize\":14,\"fontColor\":\"red\",\"fontWeight\":\"normal\",\"italic\":false,\"underline\":true,\"locale\":\"en-GB\"}", + "description": "Render the word 'Error' in red, underlined text with normal font weight and British English locale." + }, + { + "inputJson": "{\"text\":\"Hello\",\"fontSize\":14,\"fontColor\":\"#000000\",\"fontWeight\":\"normal\",\"italic\":false,\"underline\":false,\"locale\":\"en-US\"}", + "description": "Render the greeting 'Hello' with default styling for U.S. English locale." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Word", + "context": null + } + }, + { + "name": "customer-support.formatCSV", + "description": "Formats raw CSV data related to customer support tickets by applying customizable settings such as delimiter changes, header adjustments, and whitespace trimming. Accepts CSV content as input, processes it according to specified parameters, and outputs a cleaned and consistently formatted CSV string suitable for further analysis or import.", + "category": "customer-support", + "parameters": [ + { + "name": "csvContent", + "type": "string", + "description": "Raw CSV data as a text string that needs formatting.", + "required": true, + "defaultValue": "" + }, + { + "name": "delimiter", + "type": "string", + "description": "The character to use as the CSV delimiter; defaults to comma (,).", + "required": false, + "defaultValue": "," + }, + { + "name": "hasHeader", + "type": "boolean", + "description": "Indicates whether the CSV content contains a header row.", + "required": false, + "defaultValue": "true" + }, + { + "name": "trimWhitespace", + "type": "boolean", + "description": "If true, trim whitespace from all fields in the CSV.", + "required": false, + "defaultValue": "true" + }, + { + "name": "quoteChar", + "type": "string", + "description": "Character used to quote fields containing delimiters or newlines; defaults to double quote (\").", + "required": false, + "defaultValue": "\"" + }, + { + "name": "lineEnding", + "type": "string", + "description": "Line ending to use between rows, e.g., '\\n' for Unix or '\\r\\n' for Windows.", + "required": false, + "defaultValue": "\\n" + } + ], + "returns": { + "type": "string", + "description": "A sanitized and formatted CSV string that conforms to the specified parameters and is ready for downstream processing." + }, + "aiAgent": { + "useCase": "Use this tool when needing to standardize CSV data related to customer support interactions, such as logs of support tickets or customer feedback, before analysis, reporting, or importing into help desk systems. It helps ensure consistent delimiters, proper header handling, and clean whitespace to reduce errors during data processing.", + "limitations": "This tool does not validate semantic correctness of CSV data or detect logical errors in ticket information. It also does not parse or interpret field contents beyond formatting.", + "examples": [ + "Format a CSV export of support tickets that uses semicolons instead of commas as delimiters.", + "Clean up a raw CSV string by trimming extra spaces around fields and assuring consistent quoting.", + "Convert a CSV without headers to a well-formatted CSV string with trimmed spaces." + ] + }, + "tags": [ + "formatting", + "csv", + "customer-support", + "data-cleaning", + "csv-utility" + ], + "examples": [ + { + "inputJson": "{\"csvContent\":\"Ticket Id ; User ; Status \\n 123 ; Alice ; Open \\n 124 ; Bob ; Closed \",\"delimiter\":\";\",\"hasHeader\":true,\"trimWhitespace\":true,\"quoteChar\":\"\\\"\",\"lineEnding\":\"\\n\"}", + "description": "Formats a semicolon-delimited CSV string with headers and trims whitespace around fields." + }, + { + "inputJson": "{\"csvContent\":\"123,Alice,Open\\n124,Bob,Closed\",\"delimiter\":\",\",\"hasHeader\":false,\"trimWhitespace\":true,\"quoteChar\":\"\\\"\",\"lineEnding\":\"\\r\\n\"}", + "description": "Formats a comma-delimited CSV without headers and normalizes line endings to Windows style." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "CSV", + "context": null + } + }, + { + "name": "customer-support.formatModule", + "description": "Formats a customer support module code snippet by applying consistent indentation, line breaks, and syntax styling to improve readability and maintainability. Accepts raw code as input, processes it to conform to the specified style guide, and outputs the neatly formatted code string.", + "category": "customer-support", + "parameters": [ + { + "name": "code", + "type": "string", + "description": "The raw customer support module code to format, provided as a string.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The programming language of the module code (e.g., 'javascript', 'python'), which guides the formatting style.", + "required": true, + "defaultValue": "" + }, + { + "name": "indentationStyle", + "type": "string", + "description": "The style of indentation to apply, such as 'space' or 'tab'.", + "required": false, + "defaultValue": "space" + }, + { + "name": "indentationSize", + "type": "number", + "description": "Number of spaces per indentation level if indentationStyle is 'space'.", + "required": false, + "defaultValue": "2" + }, + { + "name": "maxLineLength", + "type": "number", + "description": "Maximum characters allowed per line before wrapping.", + "required": false, + "defaultValue": "80" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted code string under the key 'formattedCode'." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to prepare or improve customer support related code modules by ensuring consistent styling and readability before deployment, sharing, or further processing.", + "limitations": "Cannot fix semantic or logic errors in code; focuses only on formatting and style. Requires the code language to be supported for formatting.", + "examples": [ + "Format a raw JavaScript customer support module for improved readability.", + "Apply 4-space indentation to a Python customer support script.", + "Wrap lines longer than 100 characters in a customer support chatbot code snippet." + ] + }, + "tags": [ + "formatting", + "customer-support", + "code-quality", + "module", + "styling" + ], + "examples": [ + { + "inputJson": "{\"code\":\"function handleRequest(req,res){console.log('Request received');res.send('ok');}\",\"language\":\"javascript\",\"indentationStyle\":\"space\",\"indentationSize\":2,\"maxLineLength\":80}", + "description": "Format a simple JavaScript customer support module with 2 spaces indentation." + }, + { + "inputJson": "{\"code\":\"def handle_request(request):\\n print('Request received')\\n return 'ok'\",\"language\":\"python\",\"indentationStyle\":\"space\",\"indentationSize\":4,\"maxLineLength\":80}", + "description": "Format a Python customer support function using 4 spaces indentation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Module", + "context": null + } + }, + { + "name": "customer-support.draftContract", + "description": "Generates a customizable contract draft based on provided client and service details. Accepts client info, service specifications, contract duration, and optional legal clauses; processes these inputs to produce a well-structured contract text suitable for review and negotiation.", + "category": "customer-support", + "parameters": [ + { + "name": "clientName", + "type": "string", + "description": "Full name of the client or client entity for whom the contract is drafted.", + "required": true, + "defaultValue": "" + }, + { + "name": "serviceDescription", + "type": "string", + "description": "Detailed description of the service or product to be provided under the contract.", + "required": true, + "defaultValue": "" + }, + { + "name": "contractDurationMonths", + "type": "number", + "description": "Length of the contract in months to specify time commitments and obligations.", + "required": true, + "defaultValue": "" + }, + { + "name": "paymentTerms", + "type": "string", + "description": "Description of payment schedules, amounts, and methods agreed upon.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeConfidentialityClause", + "type": "boolean", + "description": "Whether to include a confidentiality clause in the contract.", + "required": false, + "defaultValue": "false" + }, + { + "name": "additionalClauses", + "type": "array", + "description": "Optional array of additional contract clauses as strings to be included in the draft.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing the full draft contract text generated from the inputs." + }, + "aiAgent": { + "useCase": "Use this tool when needing to quickly generate a legally framed contract draft tailored to a client's details and service specifications, to expedite contract preparation for customer support or service agreements.", + "limitations": "This tool does not replace professional legal advice or comprehensive contract review. It cannot guarantee compliance with jurisdiction-specific laws or handle highly specialized legal clauses.", + "examples": [ + "Draft a 12-month support contract for client Acme Corp with monthly payments and a confidentiality clause.", + "Create a 6-month service contract for individual client Jane Doe without additional clauses.", + "Prepare a contract including specific non-compete clauses for a technology service engagement." + ] + }, + "tags": [ + "customer support", + "contract drafting", + "document generation", + "legal templates", + "service agreements" + ], + "examples": [ + { + "inputJson": "{\"clientName\":\"Acme Corporation\",\"serviceDescription\":\"Annual IT support and maintenance services.\",\"contractDurationMonths\":12,\"paymentTerms\":\"Monthly payment of $5000 via bank transfer.\",\"includeConfidentialityClause\":true,\"additionalClauses\":[\"Non-disclosure of proprietary information.\"]}", + "description": "Draft a 12-month IT support contract for Acme Corporation with confidentiality and non-disclosure clauses." + }, + { + "inputJson": "{\"clientName\":\"Jane Doe\",\"serviceDescription\":\"Monthly subscription for software usage.\",\"contractDurationMonths\":6,\"paymentTerms\":\"Monthly payment of $150 by credit card.\",\"includeConfidentialityClause\":false,\"additionalClauses\":[]}", + "description": "Generate a 6-month software usage contract for individual client Jane Doe without confidentiality clause." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Contract", + "context": null + } + }, + { + "name": "customer-support.composeParagraph", + "description": "Generates a clear and professional paragraph for customer support communications based on the issue description, desired tone, and customer profile. Accepts textual inputs detailing the purpose and outputs a polished paragraph suitable for emails or chat replies.", + "category": "customer-support", + "parameters": [ + { + "name": "issueDescription", + "type": "string", + "description": "A detailed description of the customer's issue or inquiry to address in the paragraph.", + "required": true, + "defaultValue": "" + }, + { + "name": "tone", + "type": "string", + "description": "The preferred tone of the paragraph such as 'formal', 'friendly', or 'empathetic'.", + "required": false, + "defaultValue": "formal" + }, + { + "name": "customerName", + "type": "string", + "description": "The name of the customer to personalize the paragraph, if available.", + "required": false, + "defaultValue": "" + }, + { + "name": "productName", + "type": "string", + "description": "Name of the product or service related to the support inquiry.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeSolution", + "type": "boolean", + "description": "Whether to include a proposed solution or next steps in the paragraph.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the composed paragraph as a string, ready for use in customer communication." + }, + "aiAgent": { + "useCase": "Use when an AI agent needs to draft coherent, context-aware paragraphs for customer communication based on input details. Helps automate personalized support message generation while maintaining professional tone.", + "limitations": "Cannot replace human judgment for complex or sensitive issues. May lack complete context leading to generic or incomplete responses.", + "examples": [ + "Compose a friendly paragraph addressing a delayed shipment issue for customer named Alice regarding the 'SmartHome Hub' product.", + "Generate a formal paragraph explaining troubleshooting steps when a customer reports a login problem.", + "Create an empathetic message for a customer complaining about a defective product without specifying the solution." + ] + }, + "tags": [ + "customer-support", + "text-generation", + "communication", + "paragraph", + "automated-response" + ], + "examples": [ + { + "inputJson": "{\"issueDescription\":\"Customer reports receiving a damaged SmartHome Hub device and wants a replacement.\",\"tone\":\"empathetic\",\"customerName\":\"Alice\",\"productName\":\"SmartHome Hub\",\"includeSolution\":true}", + "description": "Generate an empathetic paragraph offering apologies and outlining replacement process." + }, + { + "inputJson": "{\"issueDescription\":\"Customer cannot log into their account due to password not being accepted.\",\"tone\":\"formal\",\"customerName\":\"\",\"productName\":\"\",\"includeSolution\":true}", + "description": "Generate a formal paragraph detailing troubleshooting steps for login issues without customer name or product specified." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Paragraph", + "context": null + } + }, + { + "name": "customer-support.buildInstance", + "description": "Creates a new customer support instance for managing help desks and ticketing workflows. Accepts configuration details including instance name, support channels, team assignment, region, and optional features. Sets up the instance and returns the instance ID and status confirmation.", + "category": "customer-support", + "parameters": [ + { + "name": "instanceName", + "type": "string", + "description": "Unique name for the customer support instance to be created", + "required": true, + "defaultValue": "" + }, + { + "name": "supportChannels", + "type": "array", + "description": "List of support channels to enable (e.g., ['email', 'chat', 'phone'])", + "required": true, + "defaultValue": "[\"email\",\"chat\"]" + }, + { + "name": "assignedTeams", + "type": "array", + "description": "List of team IDs or names assigned to this support instance", + "required": false, + "defaultValue": "[]" + }, + { + "name": "region", + "type": "string", + "description": "Geographic region where the support instance infrastructure will be provisioned", + "required": true, + "defaultValue": "" + }, + { + "name": "enableAutoReply", + "type": "boolean", + "description": "Flag to enable automated replies for common queries", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxAgents", + "type": "number", + "description": "Maximum number of support agents allowed in this instance", + "required": false, + "defaultValue": "10" + }, + { + "name": "priorityLevels", + "type": "array", + "description": "List of priority levels for tickets (e.g., ['low', 'medium', 'high'])", + "required": false, + "defaultValue": "[\"low\",\"medium\",\"high\"]" + } + ], + "returns": { + "type": "object", + "description": "Returns the new support instance identifier, status, and configuration summary." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to provision and configure a new customer support environment to manage tickets, support channels, and team assignments dynamically. It helps automate the setup of support infrastructure tailored to specific organizational needs.", + "limitations": "This tool cannot modify existing instances, handle user permissions, or integrate third-party CRM systems beyond initial channel setup.", + "examples": [ + "Create a new support instance named 'AcmeSupport', enable email and chat channels, assign team 'Tier1', set region to 'us-east', and enable auto-replies.", + "Provision a support instance for 'BetaProduct' with phone and chat enabled, no assigned teams, region 'eu-west', and max 20 agents." + ] + }, + "tags": [ + "customer-support", + "infrastructure", + "instance", + "provisioning", + "helpdesk", + "automation" + ], + "examples": [ + { + "inputJson": "{\"instanceName\":\"AcmeSupport\",\"supportChannels\":[\"email\",\"chat\"],\"assignedTeams\":[\"Tier1\"],\"region\":\"us-east\",\"enableAutoReply\":true,\"maxAgents\":15,\"priorityLevels\":[\"low\",\"medium\",\"high\"]}", + "description": "Create a support instance named AcmeSupport with email and chat channels, assign Tier1 team, region US East, auto-reply enabled, and 15 max agents." + }, + { + "inputJson": "{\"instanceName\":\"BetaProductSupport\",\"supportChannels\":[\"phone\",\"chat\"],\"assignedTeams\":[],\"region\":\"eu-west\",\"enableAutoReply\":false,\"maxAgents\":20,\"priorityLevels\":[\"low\",\"medium\",\"high\"]}", + "description": "Provision BetaProduct support instance with phone and chat, no team assigned, in EU West region with 20 max agents." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Instance", + "context": null + } + }, + { + "name": "customer-support.composeSummary", + "description": "Generates a concise summary of a customer's support interaction or ticket based on provided conversation transcripts or ticket details. It processes text inputs to extract key points, issues raised, and resolutions suggested, returning a clear, readable summary to assist customer support agents or documentation.", + "category": "customer-support", + "parameters": [ + { + "name": "conversationTranscript", + "type": "string", + "description": "Raw text of the customer support conversation or chat transcript to summarize.", + "required": false, + "defaultValue": "" + }, + { + "name": "ticketDetails", + "type": "object", + "description": "Structured object containing key ticket information such as issue description, customer notes, and resolution history.", + "required": false, + "defaultValue": "" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum length of the generated summary in characters to ensure brevity.", + "required": false, + "defaultValue": "500" + }, + { + "name": "includeResolution", + "type": "boolean", + "description": "Flag to indicate whether the summary should explicitly include the resolution or next steps.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated summary text, including extracted key points, main issues, and resolution notes if requested." + }, + "aiAgent": { + "useCase": "Use this tool when you need to quickly generate concise and readable summaries of detailed customer support conversations or tickets, to assist agents in understanding case history or for documentation purposes. Ideal for reducing long transcripts into manageable formats for review or reporting.", + "limitations": "Cannot replace human judgment on complex cases; may miss nuanced customer sentiment or implicit context. Not suitable for legal or highly technical issue summarization requiring domain expertise.", + "examples": [ + "Generate a summary for the following chat transcript with the customer.", + "Summarize the ticket details including issue description and resolution provided.", + "Provide a brief summary excluding resolution for a support conversation." + ] + }, + "tags": [ + "customer-support", + "summary", + "conversation-analysis", + "helpdesk", + "ticket-management" + ], + "examples": [ + { + "inputJson": "{\"conversationTranscript\":\"Customer reported an issue with logging into their account. Agent assisted in resetting the password and guided customer through login steps.\"}", + "description": "Summarize a customer support chat transcript describing a login issue and resolution." + }, + { + "inputJson": "{\"ticketDetails\":{\"issueDescription\":\"App crashes on launch\",\"customerNotes\":\"Happening since update\",\"resolutionHistory\":\"Suggested clearing cache, issue resolved\"},\"includeResolution\":true}", + "description": "Summarize structured ticket details including issue description, customer notes, and resolution." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Summary", + "context": null + } + }, + { + "name": "customer-support.buildVariable", + "description": "Constructs a dynamic variable for customer support workflows based on input parameters such as variable name, type, default value, and optional description. Processes inputs to generate a structured variable object that can be used within customer support automation scripts or rule engines.", + "category": "customer-support", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The identifier name for the variable to be created. Must be unique within its scope.", + "required": true, + "defaultValue": "" + }, + { + "name": "variableType", + "type": "string", + "description": "Data type of the variable (e.g., string, number, boolean, array). Determines the kind of values the variable can hold.", + "required": true, + "defaultValue": "" + }, + { + "name": "defaultValue", + "type": "string", + "description": "An optional default value assigned to the variable, expressed as a string. Should be compatible with the variableType.", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "An optional textual description explaining the purpose or usage of this variable within the customer support context.", + "required": false, + "defaultValue": "" + }, + { + "name": "isRequired", + "type": "boolean", + "description": "Indicates whether this variable must have a value provided when used in workflows or automation rules.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A structured representation of the created variable, including its name, type, default value, description, and required flag, ready for integration into customer support workflow engines." + }, + "aiAgent": { + "useCase": "Use this tool when you need to define or prepare variables dynamically to be used in customer support automation workflows, such as in automated ticket routing, personalized responses, or trigger conditions. It helps standardize variable creation and ensures variables are formatted correctly for downstream use.", + "limitations": "This tool only builds the variable definition structure; it does not validate the variable values during runtime or integrate variables into an actual workflow automatically.", + "examples": [ + "Create a string variable named 'customerPriority' with default 'normal' for prioritizing support tickets.", + "Build a boolean variable 'isEscalated' to track if a ticket requires escalation.", + "Define a number variable 'waitTimeSeconds' without default value for measuring customer wait times." + ] + }, + "tags": [ + "customer-support", + "variable", + "automation", + "workflow", + "build", + "definition" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"customerPriority\",\"variableType\":\"string\",\"defaultValue\":\"normal\",\"description\":\"Priority level of the customer ticket\",\"isRequired\":true}", + "description": "Builds a string variable named 'customerPriority' with default 'normal' and marks it as required." + }, + { + "inputJson": "{\"variableName\":\"isEscalated\",\"variableType\":\"boolean\",\"defaultValue\":\"false\",\"description\":\"Flag indicating if the ticket is escalated\",\"isRequired\":false}", + "description": "Creates a boolean variable 'isEscalated' with default false, optional usage." + }, + { + "inputJson": "{\"variableName\":\"waitTimeSeconds\",\"variableType\":\"number\",\"defaultValue\":\"\",\"description\":\"Time a customer has waited in seconds\",\"isRequired\":false}", + "description": "Generates a number variable 'waitTimeSeconds' without a default value for tracking wait times." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Variable", + "context": null + } + }, + { + "name": "customer-support.generateSession", + "description": "Generates a detailed customer support session report based on raw interaction data such as chat logs, call transcripts, or ticket updates. Processes input to extract key metrics like session duration, customer sentiment, and resolution status, producing a structured summary of the session for analytics and quality assurance purposes.", + "category": "customer-support", + "parameters": [ + { + "name": "sessionId", + "type": "string", + "description": "Unique identifier of the customer support session to generate the report for.", + "required": true, + "defaultValue": "" + }, + { + "name": "interactionLogs", + "type": "array", + "description": "Array of interaction objects including messages, timestamps, and agent/customer identifiers.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Flag indicating whether to perform sentiment analysis on the interaction messages.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "Language code of interaction content to handle appropriate processing and sentiment analysis.", + "required": false, + "defaultValue": "en" + }, + { + "name": "resolveStatusThreshold", + "type": "number", + "description": "Threshold value (0-1) to classify if the issue was resolved based on confidence scores in the analysis.", + "required": false, + "defaultValue": "0.7" + } + ], + "returns": { + "type": "object", + "description": "Structured session report containing session ID, total duration, participant summary, sentiment scores, resolution status, and key topics/themes discussed." + }, + "aiAgent": { + "useCase": "Use when an AI agent needs to convert raw customer support data into actionable session summaries to understand interaction quality, customer sentiment, and resolution effectiveness. This tool helps deliver analytic reports without manual review of logs or transcripts.", + "limitations": "Cannot replace human judgment for nuanced emotional context or identify all types of resolution failures. Sentiment analysis may be less accurate for highly technical or ambiguous conversations.", + "examples": [ + "Generate a session summary report for sessionId=12345 with full sentiment analysis in English.", + "Analyze customer support logs to determine if the customer's issue was resolved satisfactorily.", + "Produce a summarized session analytics report for multi-language conversations including sentiment metrics." + ] + }, + "tags": [ + "customer-support", + "analytics", + "session-report", + "sentiment-analysis", + "quality-assurance", + "customer-experience", + "ticketing" + ], + "examples": [ + { + "inputJson": "{\"sessionId\":\"sess-001\",\"interactionLogs\":[{\"timestamp\":\"2024-05-01T10:00:00Z\",\"sender\":\"agent\",\"message\":\"Hello, how can I help you today?\"},{\"timestamp\":\"2024-05-01T10:01:00Z\",\"sender\":\"customer\",\"message\":\"I'm having trouble logging into my account.\"},{\"timestamp\":\"2024-05-01T10:05:00Z\",\"sender\":\"agent\",\"message\":\"I have reset your password. Please try logging in now.\"},{\"timestamp\":\"2024-05-01T10:07:00Z\",\"sender\":\"customer\",\"message\":\"It works now, thanks!\"}],\"includeSentimentAnalysis\":true,\"language\":\"en\",\"resolveStatusThreshold\":0.7}", + "description": "Generate a report summarizing a short login-related support session with sentiment analysis in English." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Session", + "context": null + } + }, + { + "name": "customer-support.createQueue", + "description": "Creates a new customer support queue to organize incoming support tickets or chat requests. Accepts parameters like queue name, department, priority level, and agent assignment rules. Outputs an object confirming queue creation with queue ID and configuration details.", + "category": "customer-support", + "parameters": [ + { + "name": "queueName", + "type": "string", + "description": "The unique name identifying the support queue to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "department", + "type": "string", + "description": "The department that the queue will be associated with (e.g., Billing, Technical Support).", + "required": true, + "defaultValue": "" + }, + { + "name": "priorityLevel", + "type": "string", + "description": "Defines the priority assigned to this queue (e.g., low, medium, high).", + "required": false, + "defaultValue": "medium" + }, + { + "name": "maxTickets", + "type": "number", + "description": "Maximum number of tickets that can be held in this queue simultaneously.", + "required": false, + "defaultValue": "100" + }, + { + "name": "agentIds", + "type": "array", + "description": "List of agent identifiers assigned to handle tickets in this queue.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "autoAssign", + "type": "boolean", + "description": "Whether tickets in this queue should be automatically assigned to available agents.", + "required": false, + "defaultValue": "true" + }, + { + "name": "escalationMinutes", + "type": "number", + "description": "Number of minutes before a ticket in this queue escalates to higher support level.", + "required": false, + "defaultValue": "60" + } + ], + "returns": { + "type": "object", + "description": "An object containing the unique queue ID, queue name, department, configuration details, and creation status." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to set up new customer support queues for managing tickets or chats effectively by department, priority, or team assignment rules. It helps structure support workflows and ensures queries are routed properly.", + "limitations": "This tool does not modify or delete existing queues, nor does it assign tickets directly to agents outside of the auto-assignment settings. It only creates queue infrastructure.", + "examples": [ + "Create a high priority billing support queue with automatic agent assignment.", + "Set up a technical support queue limiting max tickets to 50 with escalation after 30 minutes.", + "Create a general inquiries queue with default priority and no specific agent assignments." + ] + }, + "tags": [ + "customer support", + "queue management", + "ticket routing", + "help desk", + "automation" + ], + "examples": [ + { + "inputJson": "{\"queueName\":\"BillingUrgent\",\"department\":\"Billing\",\"priorityLevel\":\"high\",\"maxTickets\":50,\"agentIds\":[\"agent123\",\"agent456\"],\"autoAssign\":true,\"escalationMinutes\":30}", + "description": "Create a high priority billing queue with specific agents and quick escalation." + }, + { + "inputJson": "{\"queueName\":\"TechSupport\",\"department\":\"Technical Support\",\"priorityLevel\":\"medium\",\"autoAssign\":true}", + "description": "Create a medium priority technical support queue with default settings." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Queue", + "context": null + } + }, + { + "name": "customer-support.createReply", + "description": "Creates a formatted customer support reply message based on the original customer inquiry and specified response content. Accepts the customer's original message, the reply text, optional inclusion of greetings and signatures, and outputs a structured reply ready for sending.", + "category": "customer-support", + "parameters": [ + { + "name": "originalMessage", + "type": "string", + "description": "The customer's original message to which this reply responds.", + "required": true, + "defaultValue": "" + }, + { + "name": "replyText", + "type": "string", + "description": "The main content of the reply message.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeGreeting", + "type": "boolean", + "description": "Whether to include a standard greeting at the beginning of the reply.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeSignature", + "type": "boolean", + "description": "Whether to append a standard signature at the end of the reply.", + "required": false, + "defaultValue": "true" + }, + { + "name": "customGreeting", + "type": "string", + "description": "An optional custom greeting to use instead of the default greeting.", + "required": false, + "defaultValue": "" + }, + { + "name": "customSignature", + "type": "string", + "description": "An optional custom signature to use instead of the default signature.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the fully formatted reply message as a string and metadata about included components." + }, + "aiAgent": { + "useCase": "Use this tool when generating a customer support reply that needs to take the original message context into account and produce a standardized yet customizable response for help desk or support ticket systems.", + "limitations": "This tool does not generate the reply content automatically; it formats given reply text. It does not handle natural language understanding or response suggestion.", + "examples": [ + "Create a reply to a customer complaint including greeting and signature.", + "Generate a brief response without greeting or signature.", + "Use custom greeting and signature for a VIP customer reply." + ] + }, + "tags": [ + "customer support", + "reply generation", + "message formatting", + "help desk" + ], + "examples": [ + { + "inputJson": "{\"originalMessage\":\"I'm having trouble logging into my account.\",\"replyText\":\"We're sorry for the inconvenience. Please try resetting your password using the 'Forgot Password' link.\",\"includeGreeting\":true,\"includeSignature\":true}", + "description": "A reply to a login issue with greeting and signature included." + }, + { + "inputJson": "{\"originalMessage\":\"Thank you for resolving my issue!\",\"replyText\":\"You're welcome! Let us know if you need any more help.\",\"includeGreeting\":false,\"includeSignature\":false}", + "description": "A brief thank you response without greeting or signature." + }, + { + "inputJson": "{\"originalMessage\":\"Can you expedite my order?\",\"replyText\":\"We will prioritize your request and notify you shortly.\",\"includeGreeting\":true,\"includeSignature\":true,\"customGreeting\":\"Dear Valued Customer,\",\"customSignature\":\"Best regards, VIP Support Team\"}", + "description": "Reply with custom greeting and signature for VIP customer." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Reply", + "context": null + } + }, + { + "name": "customer-support.createChart", + "description": "Generates visual charts representing customer support data such as ticket volumes, resolution times, and customer satisfaction scores. Accepts structured data input and parameters specifying chart type, labels, and styling options, then outputs a chart image or embeddable visualization data.", + "category": "customer-support", + "parameters": [ + { + "name": "data", + "type": "array", + "description": "Array of objects representing customer support metrics to visualize, each with numeric values and optional labels.", + "required": true, + "defaultValue": "" + }, + { + "name": "chartType", + "type": "string", + "description": "Type of chart to create, e.g., 'bar', 'line', 'pie'.", + "required": true, + "defaultValue": "bar" + }, + { + "name": "title", + "type": "string", + "description": "Title of the chart to display.", + "required": false, + "defaultValue": "" + }, + { + "name": "xLabel", + "type": "string", + "description": "Label for the X-axis (if applicable).", + "required": false, + "defaultValue": "" + }, + { + "name": "yLabel", + "type": "string", + "description": "Label for the Y-axis (if applicable).", + "required": false, + "defaultValue": "" + }, + { + "name": "colors", + "type": "array", + "description": "Optional array of color codes to use for the chart elements.", + "required": false, + "defaultValue": "" + }, + { + "name": "showLegend", + "type": "boolean", + "description": "Whether to display a legend for the chart.", + "required": false, + "defaultValue": "true" + }, + { + "name": "width", + "type": "number", + "description": "Width of the chart image in pixels.", + "required": false, + "defaultValue": "800" + }, + { + "name": "height", + "type": "number", + "description": "Height of the chart image in pixels.", + "required": false, + "defaultValue": "600" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the chart image as a base64-encoded PNG string and metadata including type, dimensions, and input summary." + }, + "aiAgent": { + "useCase": "Use this tool when needing to visualize customer support data such as ticket counts over time, average resolution times by category, or satisfaction ratings distribution. It helps in creating clear, graphical summaries to aid analysis and reporting within customer service contexts.", + "limitations": "Does not perform data analysis or transformation; input data must be prepared and clean. Supports common chart types but does not produce highly customized or interactive charts.", + "examples": [ + "Create a bar chart showing monthly ticket volumes for the last quarter.", + "Generate a pie chart representing percentage breakdown of support issue categories.", + "Produce a line chart tracking average resolution time per week with appropriate axis labels." + ] + }, + "tags": [ + "visualization", + "customer-support", + "charts", + "data-analysis", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"data\":[{\"label\":\"January\",\"value\":150},{\"label\":\"February\",\"value\":200},{\"label\":\"March\",\"value\":170}],\"chartType\":\"bar\",\"title\":\"Monthly Ticket Volume\",\"xLabel\":\"Month\",\"yLabel\":\"Tickets\",\"colors\":[\"#4e79a7\",\"#f28e2b\",\"#e15759\"],\"showLegend\":true,\"width\":700,\"height\":400}", + "description": "Bar chart displaying monthly ticket volumes for the first quarter." + }, + { + "inputJson": "{\"data\":[{\"label\":\"Billing\",\"value\":45},{\"label\":\"Technical\",\"value\":30},{\"label\":\"Account\",\"value\":25}],\"chartType\":\"pie\",\"title\":\"Support Issues Breakdown\", \"showLegend\":true}", + "description": "Pie chart showing percentage breakdown of customer support issue categories." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Chart", + "context": null + } + }, + { + "name": "customer-support.createSecret", + "description": "Creates a secret credential for secure customer support operations, such as API keys or tokens. Accepts inputs describing the secret type, associated user or system, and optional metadata. Generates a unique secret value stored securely, returning its identifier and metadata without exposing the raw secret.", + "category": "customer-support", + "parameters": [ + { + "name": "secretType", + "type": "string", + "description": "Type of secret to create (e.g., 'APIKey', 'OAuthToken').", + "required": true, + "defaultValue": "" + }, + { + "name": "associatedEntity", + "type": "string", + "description": "Identifier for the user, system, or service associated with this secret.", + "required": true, + "defaultValue": "" + }, + { + "name": "expiryDate", + "type": "string", + "description": "Optional ISO 8601 date-time string indicating when the secret expires.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value pairs providing additional context or tags for the secret.", + "required": false, + "defaultValue": "" + }, + { + "name": "permissions", + "type": "array", + "description": "List of permissions or scopes assigned to the secret for access control.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing the secret identifier, masked or hashed secret representation, associated entity, type, metadata, permissions, and expiry info." + }, + "aiAgent": { + "useCase": "Use this tool when a secure secret or credential is required for customer support systems to authenticate or authorize integrations, services, or users. Ideal for generating API keys, tokens, or other secret credentials tied to specific entities with optional expiration and permissions.", + "limitations": "This tool does not handle secret storage backend setup or secret rotation schedules automatically. It does not reveal the raw secret after creation for security reasons.", + "examples": [ + "Create an API key for a new support chatbot integration with read-only permissions.", + "Generate an OAuth token secret for a support mobile app user expiring in 30 days.", + "Create a secret for system-to-system authentication tagged with environment metadata." + ] + }, + "tags": [ + "security", + "secret", + "customer-support", + "credential", + "API-key", + "token", + "authentication" + ], + "examples": [ + { + "inputJson": "{\"secretType\":\"APIKey\",\"associatedEntity\":\"supportBot123\",\"expiryDate\":\"2025-12-31T23:59:59Z\",\"metadata\":{\"environment\":\"production\",\"project\":\"chatbot\"},\"permissions\":[\"read\"]}", + "description": "Create a production API key for the chatbot support bot with read permission and expiry." + }, + { + "inputJson": "{\"secretType\":\"OAuthToken\",\"associatedEntity\":\"user56789\",\"metadata\":{\"platform\":\"mobileApp\"},\"permissions\":[\"read\",\"write\"]}", + "description": "Generate an OAuth token secret for a mobile app user with read/write scopes and no expiry." + }, + { + "inputJson": "{\"secretType\":\"APIKey\",\"associatedEntity\":\"systemServiceXYZ\",\"metadata\":{\"environment\":\"staging\"},\"permissions\":[\"admin\"]}", + "description": "Create an admin API key for system service on staging environment without expiry." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Secret", + "context": null + } + }, + { + "name": "customer-support.createHTML", + "description": "Generates customized HTML content for customer support purposes, such as responses, help articles, or ticket updates. Accepts input text, optional styling options, and structural elements to produce clean, semantic HTML output ready for embedding or sending via email or web interfaces.", + "category": "customer-support", + "parameters": [ + { + "name": "contentText", + "type": "string", + "description": "The main textual content to be included in the HTML body, such as support messages or article text.", + "required": true, + "defaultValue": "" + }, + { + "name": "headerText", + "type": "string", + "description": "Optional header or title to be included at the top of the HTML content.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeFooter", + "type": "boolean", + "description": "Flag to determine if a standard footer (e.g., company info or contact links) should be included in the HTML.", + "required": false, + "defaultValue": "true" + }, + { + "name": "styleOptions", + "type": "object", + "description": "Object specifying CSS styles such as font family, font size, and colors to customize the appearance.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeLinks", + "type": "boolean", + "description": "If true, email addresses and URLs in contentText are automatically converted to clickable links.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing a single field 'html', which holds the generated HTML string incorporating the content, header, optional footer, and styles." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert plain or lightly formatted support text and metadata into well-structured HTML content for customer communication channels like emails, help desk portals, or chat interfaces. Ideal for dynamically generating styled responses or knowledge base content that must be web compatible.", + "limitations": "This tool does not perform complex HTML templating or scripting, does not sanitize arbitrary HTML input for security, and is limited to basic styling and structural elements.", + "examples": [ + "Generate an HTML formatted customer support reply including header and footer.", + "Create a styled help article snippet with default footer disabled.", + "Convert support ticket update text into HTML with clickable links enabled." + ] + }, + "tags": [ + "customer-support", + "html", + "content-generation", + "communication", + "email", + "helpdesk" + ], + "examples": [ + { + "inputJson": "{\"contentText\":\"Dear customer, your issue has been resolved successfully.\",\"headerText\":\"Support Update\",\"includeFooter\":true,\"styleOptions\":{\"fontFamily\":\"Arial\",\"fontSize\":\"14px\",\"color\":\"#333\"},\"includeLinks\":true}", + "description": "Generate a typical customer support update with header and footer plus custom styling." + }, + { + "inputJson": "{\"contentText\":\"Please visit https://support.example.com for FAQs.\",\"headerText\":\"Help Article\",\"includeFooter\":false,\"styleOptions\":{\"fontFamily\":\"Verdana\",\"fontSize\":\"12px\",\"color\":\"#000\"},\"includeLinks\":true}", + "description": "Create a styled help article snippet with clickable link, no footer." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "HTML", + "context": null + } + }, + { + "name": "customer-support.createPipeline", + "description": "Creates a customizable support ticket processing pipeline by defining sequential workflow stages for handling customer issues. Accepts configuration inputs including stage names, conditions, assigned departments, and escalation rules. Outputs a structured pipeline object representing the ordered steps and transitions for automated ticket routing and resolution tracking.", + "category": "customer-support", + "parameters": [ + { + "name": "pipelineName", + "type": "string", + "description": "The unique name identifying the support pipeline to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "stages", + "type": "array", + "description": "An ordered list of workflow stages, each defining a stage name, conditions to enter the stage, responsible team, and any escalation settings.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional detailed description about the purpose and scope of the pipeline.", + "required": false, + "defaultValue": "" + }, + { + "name": "autoAssign", + "type": "boolean", + "description": "Flag indicating whether tickets should be automatically assigned to agents within stages if possible.", + "required": false, + "defaultValue": "false" + }, + { + "name": "escalationTimeout", + "type": "number", + "description": "Time in hours after which a ticket in a stage without progress is escalated to higher support levels.", + "required": false, + "defaultValue": "24" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created pipeline, including its unique ID, name, stages array, and configuration metadata." + }, + "aiAgent": { + "useCase": "Use this tool to design and deploy structured customer support workflows that automate routing, assignment, and escalation of service tickets. It helps in systematically managing ticket progress through defined stages for efficient resolution.", + "limitations": "This tool does not handle ticket content processing, automated reply generation, or direct integration with external ticketing systems. It only defines pipeline structure and metadata.", + "examples": [ + "Create a multi-stage support pipeline for billing issues including verification, approval, and closure stages.", + "Set up an escalation pipeline that automatically promotes tickets to higher support levels if not resolved within 48 hours.", + "Define a new ticket processing pipeline for technical support with automatic agent assignment at each stage." + ] + }, + "tags": [ + "customer-support", + "workflow", + "automation", + "ticket-routing", + "pipeline", + "help-desk", + "escalation" + ], + "examples": [ + { + "inputJson": "{\"pipelineName\":\"BillingSupportPipeline\",\"stages\":[{\"stageName\":\"Verification\",\"conditions\":\"ticket.category == 'billing'\",\"assignedDepartment\":\"Billing Team\",\"escalationThreshold\":24},{\"stageName\":\"Approval\",\"conditions\":\"ticket.amount > 1000\",\"assignedDepartment\":\"Finance Team\",\"escalationThreshold\":48},{\"stageName\":\"Closure\",\"conditions\":\"ticket.resolved == true\",\"assignedDepartment\":\"Customer Service\",\"escalationThreshold\":12}],\"description\":\"Pipeline to handle billing related tickets with approval step for high amounts.\",\"autoAssign\":true,\"escalationTimeout\":24}", + "description": "Creates a billing support pipeline with verification, approval for amounts over 1000, and closure stages. Automatic agent assignment enabled." + }, + { + "inputJson": "{\"pipelineName\":\"TechSupportEscalation\",\"stages\":[{\"stageName\":\"InitialResponse\",\"conditions\":\"ticket.category == 'technical'\",\"assignedDepartment\":\"Tech Support Level 1\",\"escalationThreshold\":12},{\"stageName\":\"Level2Support\",\"conditions\":\"ticket.status == 'escalated'\",\"assignedDepartment\":\"Tech Support Level 2\",\"escalationThreshold\":24},{\"stageName\":\"ManagerReview\",\"conditions\":\"ticket.status == 'escalated_twice'\",\"assignedDepartment\":\"Tech Support Manager\",\"escalationThreshold\":48}],\"autoAssign\":false,\"escalationTimeout\":24}", + "description": "Defines a technical support pipeline with escalating levels of support assigned sequentially if tickets remain unresolved." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Pipeline", + "context": null + } + }, + { + "name": "customer-support.createWorkflow", + "description": "This tool allows creating a customer support workflow by accepting workflow details such as name, triggers, actions, and conditions. It processes this input to build a structured workflow object that can be integrated into a help desk system to automate routing and handling of support tickets. The output is a detailed workflow configuration object confirming creation.", + "category": "customer-support", + "parameters": [ + { + "name": "workflowName", + "type": "string", + "description": "The name identifier for the new customer support workflow.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A brief description of what this workflow does or its purpose.", + "required": false, + "defaultValue": "" + }, + { + "name": "triggers", + "type": "array", + "description": "List of events or conditions that initiate the workflow, e.g., 'newTicket', 'ticketEscalated'.", + "required": true, + "defaultValue": "" + }, + { + "name": "actions", + "type": "array", + "description": "Sequence of actions to perform when triggered, such as assigning agents, sending notifications, or updating ticket status.", + "required": true, + "defaultValue": "" + }, + { + "name": "conditions", + "type": "array", + "description": "Optional conditional rules to evaluate before executing actions, like ticket priority, customer type, or time constraints.", + "required": false, + "defaultValue": "" + }, + { + "name": "isActive", + "type": "boolean", + "description": "Flag indicating if the workflow should be active immediately after creation.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "A workflow configuration object containing the workflow ID, name, description, triggers, conditions, actions, and activation status, confirming successful creation." + }, + "aiAgent": { + "useCase": "Use this tool when you need to automate customer support processes by defining workflows that trigger based on ticket events, conditions, and execute a series of actions like assignments and notifications. It helps in scaling support operations and reducing manual intervention.", + "limitations": "This tool does not validate the internal logic correctness of actions or triggers beyond basic schema; it cannot execute the workflow or integrate with external ticketing platforms directly.", + "examples": [ + "Create a workflow named 'High Priority Auto-Assign' that triggers on new tickets marked as high priority and assigns them to senior support agents.", + "Set up a workflow that escalates tickets not updated in 48 hours by sending reminder notifications.", + "Design a workflow to send a satisfaction survey once a ticket is closed if the customer is tagged as 'VIP'." + ] + }, + "tags": [ + "customer-support", + "workflow", + "automation", + "ticketing", + "helpdesk", + "support" + ], + "examples": [ + { + "inputJson": "{\"workflowName\":\"High Priority Auto-Assign\",\"description\":\"Auto-assigns new high priority tickets to senior agents\",\"triggers\":[\"newTicket\"],\"conditions\":[{\"field\":\"priority\",\"operator\":\"equals\",\"value\":\"high\"}],\"actions\":[{\"type\":\"assignAgent\",\"parameters\":{\"agentGroup\":\"senior\"}}],\"isActive\":true}", + "description": "Creates a workflow that triggers on new tickets with high priority and assigns them to the senior agent group." + }, + { + "inputJson": "{\"workflowName\":\"Stale Ticket Escalation\",\"description\":\"Escalates tickets not updated in 48 hours\",\"triggers\":[\"ticketUpdated\"],\"conditions\":[{\"field\":\"lastUpdate\",\"operator\":\"olderThanHours\",\"value\":48}],\"actions\":[{\"type\":\"sendNotification\",\"parameters\":{\"to\":\"manager\"}}, {\"type\":\"changeStatus\",\"parameters\":{\"status\":\"escalated\"}}],\"isActive\":true}", + "description": "Workflow to escalate tickets that have not been updated in 48 hours by notifying managers and changing ticket status." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Workflow", + "context": null + } + }, + { + "name": "customer-support.createSchema", + "description": "Creates a JSON schema for customer support data structures based on user-defined fields and validation rules. Accepts field definitions including names, types, required flags, and constraints, then outputs a compliant JSON schema for use in data validation or integration.", + "category": "customer-support", + "parameters": [ + { + "name": "fields", + "type": "array", + "description": "An array of objects defining each field's name, type, whether it's required, and optional validation constraints.", + "required": true, + "defaultValue": "" + }, + { + "name": "schemaTitle", + "type": "string", + "description": "A human-readable title for the schema.", + "required": false, + "defaultValue": "\"CustomerSupportSchema\"" + }, + { + "name": "schemaDescription", + "type": "string", + "description": "A brief description explaining the purpose of the schema.", + "required": false, + "defaultValue": "\"Schema for customer support data validation.\"" + }, + { + "name": "additionalProperties", + "type": "boolean", + "description": "Allow fields not explicitly defined in the schema (true) or prohibit them (false).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing a JSON Schema draft-07 compliant schema defining the structure, types, and validation rules of customer support data as specified." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically generate JSON schemas to validate or standardize customer support datasets, ticketing information, or user input forms. Ideal for creating consistent data validation and integration templates for customer support workflows.", + "limitations": "This tool generates schema definitions but does not validate actual data or handle schema versioning beyond draft-07 compliance. It does not support dynamic or deeply nested relational schemas beyond basic JSON Schema capabilities.", + "examples": [ + "Create a schema for customer tickets with required fields 'ticketId' (string), 'priority' (string), and optional 'notes' (string).", + "Generate a JSON schema describing agent profiles with 'agentId' (string), 'name' (string), and 'active' (boolean)." + ] + }, + "tags": [ + "customer-support", + "schema", + "json-schema", + "validation", + "data-structure" + ], + "examples": [ + { + "inputJson": "{\"fields\":[{\"name\":\"ticketId\",\"type\":\"string\",\"required\":true},{\"name\":\"priority\",\"type\":\"string\",\"required\":true},{\"name\":\"notes\",\"type\":\"string\",\"required\":false}],\"schemaTitle\":\"SupportTicket\",\"schemaDescription\":\"Schema for support tickets.\",\"additionalProperties\":false}", + "description": "Generate a JSON schema for support tickets with required ticketId and priority fields and optional notes." + }, + { + "inputJson": "{\"fields\":[{\"name\":\"agentId\",\"type\":\"string\",\"required\":true},{\"name\":\"name\",\"type\":\"string\",\"required\":true},{\"name\":\"active\",\"type\":\"boolean\",\"required\":false}],\"schemaTitle\":\"AgentProfile\",\"schemaDescription\":\"Schema for support agent profiles.\",\"additionalProperties\":false}", + "description": "Create a schema to validate support agent profiles with agentId, name, and an optional active status." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Schema", + "context": null + } + }, + { + "name": "customer-support.createResume", + "description": "Generates a professional resume document based on customer-provided personal details, work experience, education, skills, and other relevant information. Outputs a formatted resume as a PDF or editable document format suitable for job applications and professional use.", + "category": "customer-support", + "parameters": [ + { + "name": "personalDetails", + "type": "object", + "description": "Basic personal information including name, contact info, and professional summary.", + "required": true, + "defaultValue": "" + }, + { + "name": "workExperience", + "type": "array", + "description": "List of work history entries with company name, role, duration, and key responsibilities.", + "required": true, + "defaultValue": "" + }, + { + "name": "education", + "type": "array", + "description": "List of educational qualifications including institution, degree, and graduation year.", + "required": true, + "defaultValue": "" + }, + { + "name": "skills", + "type": "array", + "description": "Array of relevant professional skills and competencies.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "certifications", + "type": "array", + "description": "List of professional certifications and courses completed.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "language", + "type": "string", + "description": "Language code to generate the resume in (e.g., 'en' for English).", + "required": false, + "defaultValue": "en" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired resume output format: 'pdf' or 'docx'.", + "required": false, + "defaultValue": "pdf" + } + ], + "returns": { + "type": "object", + "description": "An object containing the resume content encoded as a base64 string and metadata such as file name and MIME type." + }, + "aiAgent": { + "useCase": "Use this tool whenever a customer needs a professionally formatted resume created from structured career and personal data, enabling quick generation of application-ready documents.", + "limitations": "Cannot guarantee optimal design for all industries or personalized writing style; may require manual editing for best results.", + "examples": [ + "Create a resume for a software engineer with 5 years experience at two companies.", + "Generate a resume highlighting education and skills for a recent graduate.", + "Produce a PDF resume with certifications and multiple languages listed." + ] + }, + "tags": [ + "customer-support", + "resume", + "document-generation", + "professional-document", + "career", + "pdf", + "docx" + ], + "examples": [ + { + "inputJson": "{\"personalDetails\":{\"name\":\"Jane Doe\",\"email\":\"jane.doe@example.com\",\"phone\":\"555-1234\",\"summary\":\"Experienced project manager in IT sector.\"},\"workExperience\":[{\"company\":\"Tech Solutions\",\"role\":\"Project Manager\",\"duration\":\"2018-2023\",\"responsibilities\":\"Managed software implementation projects.\"}],\"education\":[{\"institution\":\"State University\",\"degree\":\"B.Sc. Computer Science\",\"graduationYear\":2017}],\"skills\":[\"Project Management\",\"Agile\",\"Scrum\"],\"certifications\":[\"PMP\"],\"language\":\"en\",\"outputFormat\":\"pdf\"}", + "description": "Create a PDF resume for an experienced IT project manager with detailed work experience and certifications." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Resume", + "context": null + } + }, + { + "name": "marketing-automation.renderWord", + "description": "Renders a word or phrase into a styled graphic image optimized for marketing materials. Accepts text input along with style parameters like font, color, size, and effects, and outputs a base64-encoded PNG image, suitable for embedding in campaigns or ads.", + "category": "marketing-automation", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The word or phrase to be rendered visually.", + "required": true, + "defaultValue": "" + }, + { + "name": "fontFamily", + "type": "string", + "description": "Font family name to use for text rendering (e.g., Arial, Helvetica).", + "required": false, + "defaultValue": "Arial" + }, + { + "name": "fontSize", + "type": "number", + "description": "Font size in pixels for the rendered text.", + "required": false, + "defaultValue": "48" + }, + { + "name": "fontColor", + "type": "string", + "description": "CSS color value for the text color (e.g., #FF0000, rgb(0,0,0)).", + "required": false, + "defaultValue": "#000000" + }, + { + "name": "backgroundColor", + "type": "string", + "description": "CSS color value for the background behind the text or transparent if empty.", + "required": false, + "defaultValue": "" + }, + { + "name": "bold", + "type": "boolean", + "description": "Whether to render text in bold style.", + "required": false, + "defaultValue": "false" + }, + { + "name": "italic", + "type": "boolean", + "description": "Whether to render text in italic style.", + "required": false, + "defaultValue": "false" + }, + { + "name": "textShadow", + "type": "string", + "description": "CSS-compatible text shadow property value to add effects like shadows.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing a base64-encoded PNG image of the rendered word with specified styles." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate visually styled text graphics dynamically for marketing campaigns, ads, emails, or social posts, ensuring consistent branding and visually appealing callouts without manual graphic design work.", + "limitations": "This tool does not generate multi-line formatted paragraphs or complex vector graphics beyond styled single text strings.", + "examples": [ + "Render the word 'Sale' in bold red font for a promotional banner.", + "Create the phrase 'Limited Offer' in italic with a subtle shadow effect for social media.", + "Generate the text 'New Arrival' with transparent background and blue font color for email headers." + ] + }, + "tags": [ + "marketing", + "rendering", + "visualization", + "branding", + "automation", + "text", + "graphics" + ], + "examples": [ + { + "inputJson": "{\"text\":\"Sale\",\"fontFamily\":\"Arial\",\"fontSize\":64,\"fontColor\":\"#FF0000\",\"bold\":true,\"italic\":false,\"textShadow\":\"2px 2px 4px #000000\"}", + "description": "Render 'Sale' word in large bold red font with black shadow for a marketing banner." + }, + { + "inputJson": "{\"text\":\"Limited Offer\",\"fontFamily\":\"Helvetica\",\"fontSize\":48,\"fontColor\":\"#0000FF\",\"bold\":false,\"italic\":true,\"backgroundColor\":\"#FFFFFF\"}", + "description": "Render 'Limited Offer' in italic blue font on white background for social media post." + }, + { + "inputJson": "{\"text\":\"New Arrival\",\"fontFamily\":\"Verdana\",\"fontSize\":36,\"fontColor\":\"#007BFF\",\"backgroundColor\":\"\",\"bold\":false,\"italic\":false,\"textShadow\":\"\"}", + "description": "Render 'New Arrival' text in medium blue font with transparent background for email header." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Word", + "context": null + } + }, + { + "name": "marketing-automation.renderText", + "description": "Renders marketing text content by applying specified formatting, templates, and personalization variables to generate customized marketing messages. Accepts raw text input plus formatting options and outputs fully rendered, ready-to-use marketing text suitable for campaigns or channels.", + "category": "marketing-automation", + "parameters": [ + { + "name": "rawText", + "type": "string", + "description": "The raw marketing message content with optional placeholders for personalization variables.", + "required": true, + "defaultValue": "" + }, + { + "name": "templateId", + "type": "string", + "description": "Identifier of a predefined text template to use for consistent styling and layout. If provided, rawText is integrated into the template.", + "required": false, + "defaultValue": "" + }, + { + "name": "personalizationVariables", + "type": "object", + "description": "Key-value pairs to replace placeholders in the raw text or template with personalized data (e.g., recipientName, offerCode).", + "required": false, + "defaultValue": "" + }, + { + "name": "formattingOptions", + "type": "object", + "description": "Options for text styling such as font, color, size, and emphasis (bold/italic) to enhance message appearance.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Target output format like 'plainText', 'HTML', or 'Markdown' to suit different marketing channels.", + "required": false, + "defaultValue": "plainText" + } + ], + "returns": { + "type": "object", + "description": "An object containing the fully rendered marketing text content as a string in the specified output format." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to produce finalized marketing messages by combining raw textual content, templates, and recipient-specific personalization data, with optional styling to generate polished marketing texts for emails, ads, or social media posts.", + "limitations": "This tool does not generate marketing content from scratch or perform semantic content analysis. It focuses on rendering and formatting given input text. It cannot validate template correctness or fetch personalization data itself.", + "examples": [ + "Render a customized promotional email text with recipient name and coupon code inserted, using an HTML template.", + "Format raw marketing text as bold and colored HTML for social media campaign posts.", + "Generate plain text marketing message by replacing placeholders with user attributes without any additional styling." + ] + }, + "tags": [ + "marketing", + "rendering", + "text", + "personalization", + "templates", + "formatting" + ], + "examples": [ + { + "inputJson": "{\"rawText\":\"Hello {{recipientName}}, your exclusive offer code is {{offerCode}}.\",\"templateId\":\"emailPromoBasic\",\"personalizationVariables\":{\"recipientName\":\"John\",\"offerCode\":\"SAVE20\"},\"formattingOptions\":{\"font\":\"Arial\",\"color\":\"#333333\",\"bold\":true},\"outputFormat\":\"HTML\"}", + "description": "Render a personalized promotional email with placeholders replaced in HTML format." + }, + { + "inputJson": "{\"rawText\":\"New product launch next week! Don't miss out.\",\"outputFormat\":\"plainText\"}", + "description": "Render simple plain text marketing message without personalization or template." + }, + { + "inputJson": "{\"rawText\":\"Limited time deal: {{dealDetails}}.\",\"personalizationVariables\":{\"dealDetails\":\"50% off all items\"},\"formattingOptions\":{\"italic\":true},\"outputFormat\":\"Markdown\"}", + "description": "Generate Markdown formatted marketing text with personalized deal details and italic style." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Text", + "context": null + } + }, + { + "name": "marketing-automation.formatParagraph", + "description": "Formats a marketing campaign paragraph text according to specified style options such as text alignment, font style, emphasis, and line spacing. Accepts raw paragraph text input and outputs the formatted HTML string or plaintext with applied styles, ready for inclusion in marketing materials or emails.", + "category": "marketing-automation", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The raw paragraph text content to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "alignment", + "type": "string", + "description": "Text alignment option; accepts 'left', 'right', 'center', or 'justify'.", + "required": false, + "defaultValue": "left" + }, + { + "name": "fontStyle", + "type": "string", + "description": "Font style to apply; options include 'normal', 'italic', or 'oblique'.", + "required": false, + "defaultValue": "normal" + }, + { + "name": "fontWeight", + "type": "string", + "description": "Font weight for emphasis; options are 'normal', 'bold', or 'bolder'.", + "required": false, + "defaultValue": "normal" + }, + { + "name": "lineSpacing", + "type": "number", + "description": "Line spacing multiplier; e.g., 1.0 for single spacing, 1.5 for one-and-a-half spacing.", + "required": false, + "defaultValue": "1.0" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output; 'html' returns HTML markup with inline styling, 'plaintext' returns styled plain text if possible.", + "required": false, + "defaultValue": "html" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted paragraph string with applied styles in the specified output format. The key 'formattedParagraph' holds the result." + }, + "aiAgent": { + "useCase": "Use this tool when generating or customizing marketing content paragraphs that require consistent styling such as emails, newsletters, or advertisements. It helps produce properly aligned and styled text outputs that can be embedded directly or transformed into HTML email content or rich text formats.", + "limitations": "This tool does not perform spellchecking, grammar correction, or semantic content analysis. It only formats existing text according to style parameters and does not generate new content or handle complex layout beyond paragraph-level styling.", + "examples": [ + "Format a paragraph with center alignment and bold weight for an email intro.", + "Produce justified paragraph text in italic style with increased line spacing for a newsletter.", + "Output a simple left-aligned plaintext paragraph with normal font style for a plain text campaign." + ] + }, + "tags": [ + "marketing", + "automation", + "formatting", + "text", + "email", + "campaign", + "content" + ], + "examples": [ + { + "inputJson": "{\"text\":\"Welcome to our spring sale! Enjoy up to 50% off on selected items.\",\"alignment\":\"center\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"lineSpacing\":1.5,\"outputFormat\":\"html\"}", + "description": "Center aligned, italic and bold paragraph with 1.5 line spacing in HTML format." + }, + { + "inputJson": "{\"text\":\"Don't miss out on exclusive deals only available this weekend.\",\"alignment\":\"justify\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"lineSpacing\":1.2,\"outputFormat\":\"html\"}", + "description": "Justified paragraph with normal font style and moderate line spacing in HTML." + }, + { + "inputJson": "{\"text\":\"Subscribe now for weekly updates.\",\"alignment\":\"left\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"lineSpacing\":1.0,\"outputFormat\":\"plaintext\"}", + "description": "Plaintext output with left alignment and single line spacing for simple campaigns." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Paragraph", + "context": null + } + }, + { + "name": "marketing-automation.formatSentence", + "description": "Formats and customizes marketing sentences by applying capitalization styles, inserting variables, and adding optional suffixes or prefixes. Accepts a sentence template with placeholders and outputs a properly formatted marketing sentence ready for campaign use.", + "category": "marketing-automation", + "parameters": [ + { + "name": "sentence", + "type": "string", + "description": "The marketing sentence template to format, may include variable placeholders enclosed in curly braces, e.g., {productName}.", + "required": true, + "defaultValue": "" + }, + { + "name": "variables", + "type": "object", + "description": "Key-value pairs to replace placeholders in the sentence template for personalized content.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "capitalizeStyle", + "type": "string", + "description": "Capitalization style to apply to the whole formatted sentence. Options: 'none', 'firstLetter', 'allCaps', 'titleCase'.", + "required": false, + "defaultValue": "none" + }, + { + "name": "prefix", + "type": "string", + "description": "Optional string to prepend to the sentence for added context or branding.", + "required": false, + "defaultValue": "" + }, + { + "name": "suffix", + "type": "string", + "description": "Optional string to append to the sentence to add calls to action or hashtags.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the fully formatted marketing sentence as a string, ready to be used in automation workflows." + }, + "aiAgent": { + "useCase": "Use this tool when a marketing automation workflow needs to dynamically generate and format marketing sentences with personalized variables and consistent capitalization styles across campaigns. It helps to standardize marketing messages and automate content generation.", + "limitations": "This tool does not do advanced natural language generation or grammar correction beyond simple placeholder replacement and capitalization. It will not optimize sentence semantics or sentiment.", + "examples": [ + "Format a promo sentence with product name variable and capitalize the first letter.", + "Add a hashtag suffix to a marketing sentence and convert it to all caps.", + "Prepend a branding phrase as a prefix and format sentence to title case." + ] + }, + "tags": [ + "marketing", + "automation", + "formatting", + "personalization", + "text-processing", + "campaign", + "sentence" + ], + "examples": [ + { + "inputJson": "{\"sentence\":\"Get your {productName} now! Limited offer.\",\"variables\":{\"productName\":\"SmartWatch X\"},\"capitalizeStyle\":\"firstLetter\",\"prefix\":\"Special Deal: \",\"suffix\":\" #Sale\"}", + "description": "Format a marketing sentence with variable replacement, prefix, suffix, and capitalize only the first letter." + }, + { + "inputJson": "{\"sentence\":\"exclusive access to {eventName} starting today.\",\"variables\":{\"eventName\":\"Summer Festival\"},\"capitalizeStyle\":\"titleCase\",\"prefix\":\"\",\"suffix\":\"\"}", + "description": "Generate a marketing sentence using title case capitalization without prefixes or suffixes." + }, + { + "inputJson": "{\"sentence\":\"don't miss out on the {discount}% discount!\",\"variables\":{\"discount\":\"30\"},\"capitalizeStyle\":\"allCaps\",\"prefix\":\"Attention! \",\"suffix\":\"\"}", + "description": "Create a fully capitalized marketing sentence with a prefix and dynamic discount variable." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Sentence", + "context": null + } + }, + { + "name": "marketing-automation.formatCSV", + "description": "This tool accepts raw CSV data or CSV-formatted strings from marketing campaign exports. It processes the CSV by standardizing delimiters, trimming whitespace, optionally normalizing header case, formatting date fields uniformly, and ensuring consistent quoting for special characters. The output is a cleaned, well-structured CSV string ready for reliable import or further analysis.", + "category": "marketing-automation", + "parameters": [ + { + "name": "csvData", + "type": "string", + "description": "Raw CSV data as a string to be formatted and cleaned.", + "required": true, + "defaultValue": "" + }, + { + "name": "delimiter", + "type": "string", + "description": "Delimiter character to use in the output CSV (e.g., comma, semicolon).", + "required": false, + "defaultValue": "," + }, + { + "name": "trimWhitespace", + "type": "boolean", + "description": "Whether to trim leading and trailing whitespace from all fields.", + "required": false, + "defaultValue": "true" + }, + { + "name": "normalizeHeaders", + "type": "boolean", + "description": "If true, converts all header names to lowercase and replaces spaces with underscores.", + "required": false, + "defaultValue": "true" + }, + { + "name": "dateFormat", + "type": "string", + "description": "Desired date format for date fields (e.g., 'YYYY-MM-DD'). If empty, dates are unchanged.", + "required": false, + "defaultValue": "" + }, + { + "name": "quoteAllFields", + "type": "boolean", + "description": "Whether to quote all fields in the output CSV, regardless of content.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing a single string property 'formattedCSV' which holds the cleaned and formatted CSV data." + }, + "aiAgent": { + "useCase": "Use this tool when preparing CSV data from marketing campaign exports or reports for ingestion into analytics systems, ensuring consistent delimiter, cleaned data fields, normalized headers, and uniform date formats. This helps eliminate import errors and standardizes data preprocessing.", + "limitations": "This tool does not parse or validate CSV schema beyond formatting; it cannot infer column data types or fix corrupted CSV structure. Complex transformations or merges are out of scope.", + "examples": [ + "Format raw CSV with inconsistent spacing and header cases for clean import.", + "Standardize the delimiter from semicolon to comma with trimmed fields.", + "Convert date fields to ISO format and quote all CSV fields for compatibility." + ] + }, + "tags": [ + "marketing", + "csv", + "data-formatting", + "automation", + "data-cleaning", + "campaign-analysis" + ], + "examples": [ + { + "inputJson": "{\"csvData\":\"Name , Email , Date Signed Up\\n Alice , alice@example.com , 01/22/2023 \",\"delimiter\":\",\",\"trimWhitespace\":true,\"normalizeHeaders\":true,\"dateFormat\":\"YYYY-MM-DD\",\"quoteAllFields\":false}", + "description": "Format CSV with trimmed spaces, normalized headers, and ISO date format." + }, + { + "inputJson": "{\"csvData\":\"name;email;signup_date\\nBob;bob@example.com;22-01-2023\",\"delimiter\":\";\",\"trimWhitespace\":true,\"normalizeHeaders\":false,\"dateFormat\":\"YYYY-MM-DD\",\"quoteAllFields\":true}", + "description": "Use semicolon delimiter, quote all fields, and format dates uniformly." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "CSV", + "context": null + } + }, + { + "name": "marketing-automation.draftText", + "description": "Generates marketing text content such as emails, social media posts, or ad copy based on provided parameters including campaign goals, target audience, tone, and keywords. Takes structured input describing the context, then produces tailored textual drafts ready for review or direct use in campaigns.", + "category": "marketing-automation", + "parameters": [ + { + "name": "campaignGoal", + "type": "string", + "description": "The primary objective of the marketing campaign (e.g., brand awareness, lead generation).", + "required": true, + "defaultValue": "" + }, + { + "name": "targetAudience", + "type": "string", + "description": "Description of the intended audience including demographics and interests.", + "required": true, + "defaultValue": "" + }, + { + "name": "tone", + "type": "string", + "description": "Desired tone or style of the text (e.g., formal, casual, humorous).", + "required": false, + "defaultValue": "\"formal\"" + }, + { + "name": "keywords", + "type": "array", + "description": "List of key terms or phrases to incorporate for SEO or emphasis.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "contentType", + "type": "string", + "description": "Type of marketing content to generate (e.g., email, social post, ad copy).", + "required": true, + "defaultValue": "" + }, + { + "name": "length", + "type": "number", + "description": "Approximate desired length of the text in words.", + "required": false, + "defaultValue": "100" + }, + { + "name": "callToAction", + "type": "string", + "description": "Specific call to action to include in the marketing text.", + "required": false, + "defaultValue": "\"\"" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated marketing text draft and metadata such as word count and content type." + }, + "aiAgent": { + "useCase": "This tool is ideal when an AI agent needs to create customized marketing content quickly based on campaign specifics and target demographics, reducing manual drafting efforts and ensuring tone and keywords align with campaign goals.", + "limitations": "It cannot replace human creativity entirely, may not fully capture brand-specific nuances without detailed input, and generated text may require editing to fit legal or compliance standards.", + "examples": [ + "Generate a friendly social media post for a new product launch targeting young adults.", + "Draft a formal email for a lead generation campaign with keywords about cloud services.", + "Create a short ad copy promoting a summer sale with a strong call to action." + ] + }, + "tags": [ + "marketing", + "content-generation", + "automation", + "text-drafting", + "campaigns", + "copywriting", + "AI-content" + ], + "examples": [ + { + "inputJson": "{\"campaignGoal\":\"lead generation\",\"targetAudience\":\"small business owners aged 30-50 interested in productivity tools\",\"tone\":\"professional\",\"keywords\":[\"efficiency\",\"automation\",\"growth\"],\"contentType\":\"email\",\"length\":150,\"callToAction\":\"Schedule your free demo today\"}", + "description": "Generate a professional email aimed at small business owners to encourage scheduling a demo." + }, + { + "inputJson": "{\"campaignGoal\":\"brand awareness\",\"targetAudience\":\"millennials interested in fitness and wellness\",\"tone\":\"casual\",\"keywords\":[\"healthy lifestyle\",\"community\",\"support\"],\"contentType\":\"social post\",\"length\":50}", + "description": "Create a casual social media post promoting a fitness community brand targeting millennials." + }, + { + "inputJson": "{\"campaignGoal\":\"sales promotion\",\"targetAudience\":\"general consumers\",\"tone\":\"energetic\",\"keywords\":[\"discount\",\"limited time\",\"save now\"],\"contentType\":\"ad copy\",\"length\":30,\"callToAction\":\"Shop now and save!\"}", + "description": "Short, energetic ad copy promoting a limited-time discount offer with a direct call to action." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Text", + "context": null + } + }, + { + "name": "marketing-automation.formatEndpoint", + "description": "Formats and validates marketing API endpoint URLs based on input parameters such as base URL, path segments, and query parameters. Ensures the endpoint is properly encoded and structured for use in automated marketing campaign integrations or API calls.", + "category": "marketing-automation", + "parameters": [ + { + "name": "baseUrl", + "type": "string", + "description": "The base URL of the marketing API endpoint (e.g., https://api.marketingplatform.com).", + "required": true, + "defaultValue": "" + }, + { + "name": "pathSegments", + "type": "array", + "description": "An array of path segments to append to the base URL, specifying endpoint routes or resources.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "queryParams", + "type": "object", + "description": "A key-value map of query parameters to include in the endpoint URL, properly encoded.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "encodeParameters", + "type": "boolean", + "description": "Whether to URL-encode path segments and query parameters for safe transmission.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the fully formatted and validated endpoint URL as a string property named 'formattedEndpoint'." + }, + "aiAgent": { + "useCase": "Use this tool when constructing API endpoint URLs dynamically for marketing automation workflows, campaign management, or analytics integrations. It helps ensure URL paths and queries conform to URI standards and prevents malformed requests that could cause integration errors.", + "limitations": "This tool does not perform network requests or validate endpoint availability; it focuses solely on string formatting and encoding of URL components.", + "examples": [ + "Format endpoint with base URL and multiple path segments and query parameters for an email campaign API call.", + "Generate a fully encoded endpoint URL to retrieve marketing analytics data with filter parameters.", + "Create an endpoint URL for campaign status update with dynamic parameters to be used by an automation script." + ] + }, + "tags": [ + "marketing", + "automation", + "API", + "URL", + "formatting", + "integration", + "endpoint" + ], + "examples": [ + { + "inputJson": "{\"baseUrl\":\"https://api.marketingplatform.com\",\"pathSegments\":[\"campaigns\",\"1234\",\"actions\"],\"queryParams\":{\"actionType\":\"email_open\",\"limit\":\"50\"},\"encodeParameters\":true}", + "description": "Constructs a URL for campaign actions with specific filters and URL-encoded parameters." + }, + { + "inputJson": "{\"baseUrl\":\"https://track.example.com/api\",\"pathSegments\":[\"events\"],\"queryParams\":{\"event\":\"click\",\"source\":\"newsletter\"},\"encodeParameters\":true}", + "description": "Formats a tracking events endpoint with query parameters for event type and source." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Endpoint", + "context": null + } + }, + { + "name": "marketing-automation.draftWord", + "description": "Generates marketing campaign wordings such as slogans, call-to-action phrases, or product descriptions based on provided campaign context, target audience, and tone preferences. Accepts inputs on campaign details and outputs optimized wordings ready for use in marketing materials.", + "category": "marketing-automation", + "parameters": [ + { + "name": "campaignName", + "type": "string", + "description": "The name or title of the marketing campaign to contextualize the wording.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetAudience", + "type": "string", + "description": "Description of the target audience demographics or psychographics for tailored wording.", + "required": true, + "defaultValue": "" + }, + { + "name": "desiredTone", + "type": "string", + "description": "The tone or style of wording desired, e.g., friendly, professional, urgent.", + "required": false, + "defaultValue": "friendly" + }, + { + "name": "wordingType", + "type": "string", + "description": "Type of marketing wording to generate, such as slogan, callToAction, or productDescription.", + "required": true, + "defaultValue": "" + }, + { + "name": "productFeatures", + "type": "array", + "description": "List of key product features or benefits to highlight in the wording.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length (in characters) of the generated wording.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated marketing wording string appropriate for the campaign." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate persuasive, concise marketing wordings tailored to specific campaigns and audiences for slogans, CTAs, or descriptions that fit defined tone and length constraints.", + "limitations": "Cannot guarantee brand compliance or legal approval; may not fully capture nuanced brand voice without extensive input. Does not produce full-length content like blogs or emails, only short wordings.", + "examples": [ + "Generate a catchy slogan for a youth-targeted eco-friendly apparel campaign with a friendly tone.", + "Create a professional call-to-action phrase for a B2B software product aimed at efficiency.", + "Draft a concise product description highlighting three key features of a new smartphone." + ] + }, + "tags": [ + "marketing", + "automation", + "copywriting", + "content-generation", + "branding", + "slogan", + "call-to-action" + ], + "examples": [ + { + "inputJson": "{\"campaignName\":\"Spring Launch\",\"targetAudience\":\"Young adults interested in sustainable fashion\",\"desiredTone\":\"friendly\",\"wordingType\":\"slogan\",\"productFeatures\":[\"eco-friendly materials\",\"affordable pricing\"],\"maxLength\":50}", + "description": "Generate a friendly slogan for a sustainable fashion campaign aimed at young adults." + }, + { + "inputJson": "{\"campaignName\":\"Enterprise Efficiency Boost\",\"targetAudience\":\"Corporate executives\",\"desiredTone\":\"professional\",\"wordingType\":\"callToAction\",\"productFeatures\":[\"automated workflows\",\"time-saving\"],\"maxLength\":80}", + "description": "Create a professional call-to-action phrase for a B2B software product targeting executives." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Word", + "context": null + } + }, + { + "name": "marketing-automation.buildQuery", + "description": "Constructs a dynamic marketing query string or object based on specified campaign parameters, audience filters, and behavioral criteria. Accepts inputs like campaign type, audience segments, conversion goals, and date ranges, then processes these to generate optimized queries for targeting or analysis in marketing platforms. Outputs a query object or string ready for API or database use.", + "category": "marketing-automation", + "parameters": [ + { + "name": "campaignType", + "type": "string", + "description": "Type of marketing campaign, e.g., email, social, search, display.", + "required": true, + "defaultValue": "" + }, + { + "name": "audienceSegments", + "type": "array", + "description": "List of audience segments or tags to filter the query.", + "required": true, + "defaultValue": "" + }, + { + "name": "conversionGoal", + "type": "string", + "description": "Primary conversion metric to optimize for, e.g., clicks, purchases.", + "required": false, + "defaultValue": "clicks" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date for the query filter range in ISO 8601 format (YYYY-MM-DD).", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date for the query filter range in ISO 8601 format (YYYY-MM-DD).", + "required": false, + "defaultValue": "" + }, + { + "name": "includeInactiveUsers", + "type": "boolean", + "description": "Whether to include users who have been inactive in the past period.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxResults", + "type": "number", + "description": "Maximum number of results or records to return, for limiting data size.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing the constructed query string and optionally a structured query object suitable for marketing platform APIs." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate precise, customizable marketing queries that combine multiple filtering criteria for campaign targeting or performance analysis. Useful for preparing data queries for marketing automation platforms, CRM, or ad management systems requiring complex, parameterized queries.", + "limitations": "This tool does not execute queries or fetch data; it only builds query strings/objects. It may not support all platform-specific query syntaxes without further adaptation. It requires valid inputs to form syntactically correct queries.", + "examples": [ + "Build a query for an email campaign targeting recent purchasers in the last 30 days focusing on purchase conversions.", + "Create a query to analyze social media campaign audience segments including inactive users over the past 6 months.", + "Generate a query for a search campaign limited to specific user tags excluding inactive users." + ] + }, + "tags": [ + "marketing", + "automation", + "query", + "campaign", + "audience", + "filter", + "performance" + ], + "examples": [ + { + "inputJson": "{\"campaignType\":\"email\",\"audienceSegments\":[\"recent-purchasers\",\"vip-customers\"],\"conversionGoal\":\"purchase\",\"startDate\":\"2024-04-01\",\"endDate\":\"2024-04-30\",\"includeInactiveUsers\":false,\"maxResults\":500}", + "description": "A query for an email campaign targeting recent purchasers and VIP customers in April 2024 focusing on purchase conversions, excluding inactive users, limiting results to 500." + }, + { + "inputJson": "{\"campaignType\":\"social\",\"audienceSegments\":[\"engaged-users\"],\"conversionGoal\":\"clicks\",\"startDate\":\"2023-11-01\",\"endDate\":\"2024-04-30\",\"includeInactiveUsers\":true}", + "description": "A social campaign query targeting engaged users including inactive users over the last 6 months for click conversion optimization." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Query", + "context": null + } + }, + { + "name": "marketing-automation.composeNotification", + "description": "This tool generates a tailored marketing notification message based on inputs such as audience segment, message purpose, tone, and channel. It processes these to compose a ready-to-send notification text suited for email, SMS, or app push notifications.", + "category": "marketing-automation", + "parameters": [ + { + "name": "audienceSegment", + "type": "string", + "description": "Specifies the target audience segment for the notification (e.g., 'new customers', 'loyal users').", + "required": true, + "defaultValue": "" + }, + { + "name": "messagePurpose", + "type": "string", + "description": "Defines the main goal of the notification (e.g., 'promotion', 'reminder', 'announcement').", + "required": true, + "defaultValue": "" + }, + { + "name": "tone", + "type": "string", + "description": "Sets the tone of the message (e.g., 'formal', 'friendly', 'urgent').", + "required": false, + "defaultValue": "friendly" + }, + { + "name": "channel", + "type": "string", + "description": "Indicates the delivery channel such as 'email', 'sms', or 'push notification'.", + "required": true, + "defaultValue": "" + }, + { + "name": "productName", + "type": "string", + "description": "Optional name of the product or service to include in the notification.", + "required": false, + "defaultValue": "" + }, + { + "name": "callToAction", + "type": "string", + "description": "The call to action text to prompt recipients to respond or engage.", + "required": false, + "defaultValue": "Learn more" + }, + { + "name": "includeDiscount", + "type": "boolean", + "description": "If true, includes a discount or offer in the notification if applicable.", + "required": false, + "defaultValue": "false" + }, + { + "name": "characterLimit", + "type": "number", + "description": "Optional limit on the message length, useful for SMS or push notifications.", + "required": false, + "defaultValue": "160" + } + ], + "returns": { + "type": "object", + "description": "An object containing the composed notification message text and metadata including channel and intended audience." + }, + "aiAgent": { + "useCase": "Use this tool when needing to automatically generate marketing notification messages tailored for specific audience segments and channels, ensuring tone and call to action align with campaign goals. Ideal for creating email subject lines, SMS promotions, or app push alerts quickly.", + "limitations": "Does not send notifications, only composes message text. May generate generic content that requires review to ensure brand compliance and legal standards. Does not personalize content beyond provided parameters.", + "examples": [ + "Compose a friendly email promotion for new customers about a sale on the latest product.", + "Create an urgent SMS reminder notification for loyal users about an upcoming event.", + "Generate a casual push notification announcing a new feature with a call to action to try it now." + ] + }, + "tags": [ + "marketing", + "notification", + "automation", + "message composition", + "email", + "sms", + "push", + "campaign" + ], + "examples": [ + { + "inputJson": "{\"audienceSegment\":\"new customers\",\"messagePurpose\":\"promotion\",\"tone\":\"friendly\",\"channel\":\"email\",\"productName\":\"SmartWatch X\",\"callToAction\":\"Shop now\",\"includeDiscount\":true,\"characterLimit\":300}", + "description": "Friendly email promotion for new customers featuring a product and discount." + }, + { + "inputJson": "{\"audienceSegment\":\"loyal users\",\"messagePurpose\":\"reminder\",\"tone\":\"urgent\",\"channel\":\"sms\",\"callToAction\":\"Register now\",\"includeDiscount\":false,\"characterLimit\":160}", + "description": "Urgent SMS reminder for loyal users to register for an event." + }, + { + "inputJson": "{\"audienceSegment\":\"app users\",\"messagePurpose\":\"announcement\",\"tone\":\"casual\",\"channel\":\"push notification\",\"productName\":\"App v2.0\",\"callToAction\":\"Try it now\",\"includeDiscount\":false,\"characterLimit\":100}", + "description": "Casual push notification announcing a new app version with a CTA." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Notification", + "context": null + } + }, + { + "name": "marketing-automation.composeSummary", + "description": "This tool accepts raw marketing campaign data, including performance metrics, audience insights, and campaign objectives. It processes this data to generate a coherent, concise summary report highlighting key results, trends, and recommendations. The output is a structured summary string suitable for stakeholder review or further automation workflows.", + "category": "marketing-automation", + "parameters": [ + { + "name": "campaignData", + "type": "object", + "description": "Comprehensive data object containing campaign metrics, audience info, and objectives for summarization.", + "required": true, + "defaultValue": "" + }, + { + "name": "summaryLength", + "type": "number", + "description": "Approximate desired length of the summary in sentences; controls summary conciseness.", + "required": false, + "defaultValue": "5" + }, + { + "name": "language", + "type": "string", + "description": "Language code (e.g., 'en', 'es') to generate the summary in the specified language.", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "Flag to include strategic recommendations based on campaign performance analysis.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Contains a coherent text summary of the campaign performance, insights, and optional recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to convert complex marketing campaign data into an accessible, actionable summary for stakeholders or decision makers, facilitating quick understanding of campaign effectiveness and next steps.", + "limitations": "Cannot interpret incomplete or poorly structured campaign data; does not generate visualizations or detailed statistical reports; summary quality depends on input data richness and format.", + "examples": [ + "Generate a concise summary of last quarter's email marketing campaign performance, highlighting audience growth and click rates.", + "Compose a summary report for a social media ad campaign in Spanish including key metrics and improvement suggestions.", + "Create a brief overview of PPC campaign effectiveness without recommendations." + ] + }, + "tags": [ + "marketing", + "automation", + "summary", + "campaign", + "report", + "analysis", + "performance", + "communication" + ], + "examples": [ + { + "inputJson": "{\"campaignData\":{\"name\":\"Q2 Email Blast\",\"metrics\":{\"openRate\":0.32,\"clickRate\":0.12,\"conversions\":450},\"audience\":{\"segments\":[\"subscribers\",\"new signups\"]},\"objectives\":[\"increase engagement\",\"boost sales\"]},\"summaryLength\":5,\"language\":\"en\",\"includeRecommendations\":true}", + "description": "Summarize Q2 email campaign performance focusing on core metrics and recommendations." + }, + { + "inputJson": "{\"campaignData\":{\"name\":\"Holiday Social Ads\",\"metrics\":{\"impressions\":150000,\"clicks\":12000,\"ctr\":0.08},\"audience\":{\"regions\":[\"US\",\"Canada\"]},\"objectives\":[\"brand awareness\"]},\"summaryLength\":4,\"language\":\"es\",\"includeRecommendations\":true}", + "description": "Generate a Spanish summary with insights and recommendations for holiday social media ads." + }, + { + "inputJson": "{\"campaignData\":{\"name\":\"PPC Summer Campaign\",\"metrics\":{\"costPerClick\":2.5,\"conversions\":95,\"budgetSpent\":1000},\"audience\":{\"demographics\":{\"ageGroup\":\"25-34\"}},\"objectives\":[\"maximize ROI\"]},\"summaryLength\":3,\"language\":\"en\",\"includeRecommendations\":false}", + "description": "Create a brief PPC campaign summary focusing on key financial metrics without advice." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Summary", + "context": null + } + }, + { + "name": "marketing-automation.buildInstance", + "description": "This tool creates a new marketing campaign automation instance based on specified configurations, including campaign name, channels, target audience, budget, and schedule. It processes the input parameters to provision an automation workflow instance and returns details of the created instance for tracking and management.", + "category": "marketing-automation", + "parameters": [ + { + "name": "campaignName", + "type": "string", + "description": "Name of the marketing campaign to identify the automation instance.", + "required": true, + "defaultValue": "" + }, + { + "name": "channels", + "type": "array", + "description": "List of marketing channels to include in the campaign (e.g., email, SMS, social media).", + "required": true, + "defaultValue": "" + }, + { + "name": "targetAudience", + "type": "object", + "description": "Criteria defining the target audience for the campaign, such as demographics and behavior segments.", + "required": true, + "defaultValue": "" + }, + { + "name": "budget", + "type": "number", + "description": "Allocated budget for the marketing campaign in USD.", + "required": false, + "defaultValue": "0" + }, + { + "name": "schedule", + "type": "object", + "description": "Schedule details including start date, end date, and timing for campaign execution.", + "required": false, + "defaultValue": "" + }, + { + "name": "enableTracking", + "type": "boolean", + "description": "Flag to enable performance tracking and analytics for the campaign.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Details of the created marketing automation instance including instance ID, status, configuration summary, and creation timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to automate the setup of multi-channel marketing campaigns by defining campaign parameters and provisioning an automation instance that manages execution and tracking. It helps streamline campaign creation without manual configuration steps.", + "limitations": "Cannot execute the campaign activities directly, only provisions the automation instance. Integration with external messaging or ad platforms is required to run the campaign.", + "examples": [ + "Create a new email and social media campaign targeting young adults with a $5000 budget starting next week.", + "Build a marketing automation instance for SMS outreach to a defined customer segment with tracking enabled.", + "Set up a campaign with multiple channels and a fixed schedule for a product launch." + ] + }, + "tags": [ + "marketing", + "automation", + "campaign", + "build", + "instance", + "multi-channel", + "workflow" + ], + "examples": [ + { + "inputJson": "{\"campaignName\":\"Spring Sale Launch\",\"channels\":[\"email\",\"social_media\"],\"targetAudience\":{\"ageRange\":[25,40],\"location\":\"USA\"},\"budget\":10000,\"schedule\":{\"startDate\":\"2024-05-01T08:00:00Z\",\"endDate\":\"2024-05-31T23:59:59Z\"},\"enableTracking\":true}", + "description": "Create a spring sale campaign targeting US adults aged 25-40 across email and social media with a $10,000 budget and tracking enabled." + }, + { + "inputJson": "{\"campaignName\":\"Product Update SMS Blast\",\"channels\":[\"sms\"],\"targetAudience\":{\"customersSubscribed\":true},\"budget\":2000,\"schedule\":{\"startDate\":\"2024-06-15T09:00:00Z\"},\"enableTracking\":false}", + "description": "Build an SMS campaign for subscribed customers to announce a product update without tracking." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Instance", + "context": null + } + }, + { + "name": "marketing-automation.buildComponent", + "description": "Builds a reusable marketing automation component as a code snippet or module based on specified campaign logic, triggers, and actions. Accepts campaign requirements, trigger conditions, action sequences, and output format to generate component code to be integrated into marketing automation systems or platforms.", + "category": "marketing-automation", + "parameters": [ + { + "name": "componentName", + "type": "string", + "description": "The unique name identifier for the marketing component to be generated.", + "required": true, + "defaultValue": "" + }, + { + "name": "triggers", + "type": "array", + "description": "List of trigger definitions that initiate the component's logic, e.g., events or scheduled times.", + "required": true, + "defaultValue": "" + }, + { + "name": "actions", + "type": "array", + "description": "Ordered list of actions the component will execute when triggered, e.g., send email, update CRM.", + "required": true, + "defaultValue": "" + }, + { + "name": "conditions", + "type": "array", + "description": "Optional list of condition objects to evaluate before firing actions, supporting logical operators.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Programming language or platform for the output component code (e.g., JavaScript, JSON Workflow).", + "required": false, + "defaultValue": "JavaScript" + }, + { + "name": "description", + "type": "string", + "description": "Short description of the component purpose or campaign scenario for documentation.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated component code as a string and metadata about the component including name and supported platform." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically generate reusable marketing automation components or workflows from high-level campaign logic specifications to accelerate campaign development and maintain consistency across marketing platforms.", + "limitations": "This tool cannot deploy components directly to platforms or validate runtime integration issues. It also cannot create highly customized UI elements beyond code/logic generation.", + "examples": [ + "Generate a component that triggers on user signup and sends welcome email sequence.", + "Build a marketing automation module that triggers on cart abandonment and applies discount code actions.", + "Create a drip email campaign component triggered weekly for newsletter subscribers." + ] + }, + "tags": [ + "marketing", + "automation", + "component", + "campaign", + "code generation", + "workflow", + "email marketing" + ], + "examples": [ + { + "inputJson": "{\"componentName\":\"welcomeEmailSequence\",\"triggers\":[{\"type\":\"event\",\"eventName\":\"userSignup\"}],\"actions\":[{\"type\":\"sendEmail\",\"templateId\":\"welcome1\"},{\"type\":\"wait\",\"durationHours\":24},{\"type\":\"sendEmail\",\"templateId\":\"welcome2\"}],\"outputFormat\":\"JavaScript\",\"description\":\"Sends a two-step welcome email after user signup.\"}", + "description": "Creates a JavaScript component to send a two-step welcome email triggered by user signup." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Component", + "context": null + } + }, + { + "name": "marketing-automation.draftContract", + "description": "Generates a customized marketing campaign contract based on client and campaign details provided. Inputs include client info, scope of services, timelines, payment terms, and special clauses. Processes these inputs to produce a ready-to-review contract document in text format outlining key marketing deliverables and legal terms.", + "category": "marketing-automation", + "parameters": [ + { + "name": "clientName", + "type": "string", + "description": "Full legal name of the client contracting marketing services", + "required": true, + "defaultValue": "" + }, + { + "name": "clientContact", + "type": "object", + "description": "Contact details of the client including email and phone", + "required": true, + "defaultValue": "" + }, + { + "name": "campaignScope", + "type": "string", + "description": "Detailed description of the marketing campaign scope and objectives", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Contract start date in ISO format (YYYY-MM-DD)", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "Contract end date in ISO format (YYYY-MM-DD)", + "required": true, + "defaultValue": "" + }, + { + "name": "paymentTerms", + "type": "string", + "description": "Terms related to payments including amounts, schedule, and methods", + "required": true, + "defaultValue": "" + }, + { + "name": "specialClauses", + "type": "array", + "description": "Optional array of special clauses or conditions to include in the contract", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated contract text and metadata such as contract dates and client name" + }, + "aiAgent": { + "useCase": "Use this tool when preparing formal marketing campaign agreements by inputting client and project-specific details to automate contract drafting. It streamlines contract creation, ensuring all essential legal and operational terms are covered without manual document writing.", + "limitations": "This tool does not provide legal advice or replace professional legal review. It cannot handle complex or jurisdiction-specific legal nuances beyond preset templates.", + "examples": [ + "Draft a marketing campaign contract for a new client launching a three-month digital ad campaign starting next month with specified payment terms.", + "Generate a contract including special clauses about confidentiality and content ownership for a social media marketing project." + ] + }, + "tags": [ + "marketing", + "automation", + "contract", + "document", + "legal", + "campaign", + "drafting" + ], + "examples": [ + { + "inputJson": "{\"clientName\":\"Acme Corp\",\"clientContact\":{\"email\":\"john.doe@acme.com\",\"phone\":\"+1234567890\"},\"campaignScope\":\"Launch of new product XYZ with social media and PPC ads\",\"startDate\":\"2024-07-01\",\"endDate\":\"2024-09-30\",\"paymentTerms\":\"50% upfront, 50% upon completion\",\"specialClauses\":[\"Confidentiality agreement\",\"Content ownership remains with client\"]}", + "description": "Draft contract for a digital product launch campaign with standard payment and confidentiality clauses." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Contract", + "context": null + } + }, + { + "name": "marketing-automation.buildVariable", + "description": "This tool creates a dynamic marketing variable based on specified input criteria, transformation logic, and optional default values. It accepts a variable name, data sources, transformation expressions, and conditions for runtime evaluation. The output is a standardized variable object usable in marketing automation workflows for personalized content and segmentation.", + "category": "marketing-automation", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The unique name identifier for the marketing variable to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceFields", + "type": "array", + "description": "An array of strings representing source data fields or parameters to derive the variable from.", + "required": true, + "defaultValue": "" + }, + { + "name": "transformationLogic", + "type": "string", + "description": "A string expression or formula used to transform sourceFields into the variable's value, supporting simple functions and conditional logic.", + "required": true, + "defaultValue": "" + }, + { + "name": "defaultValue", + "type": "string", + "description": "A fallback value to assign if transformationLogic fails or source data is unavailable.", + "required": false, + "defaultValue": "" + }, + { + "name": "isPersistent", + "type": "boolean", + "description": "Determines whether the variable value should persist across sessions or re-computations.", + "required": false, + "defaultValue": "false" + }, + { + "name": "description", + "type": "string", + "description": "Optional human-readable description of the variable's purpose.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the constructed marketing variable including its name, computed value template, persistence flag, and metadata." + }, + "aiAgent": { + "useCase": "Use this tool when needing to define custom marketing variables dynamically from multiple data inputs for personalization, segmentation, or tracking within campaigns. It enables transforming raw data into actionable variables usable in automation rules or templates.", + "limitations": "This tool does not execute the transformation logic at runtime; it only builds the variable definition. It cannot fetch live data or perform complex parsing beyond expression strings supplied. Computation depends on the marketing platform implementation.", + "examples": [ + "Create a personalized discount code variable based on customer purchase history and current promotions.", + "Define a segmentation variable computing risk level from user behavior metrics.", + "Build a dynamic variable for tracking email engagement scoring from multiple event fields." + ] + }, + "tags": [ + "marketing", + "automation", + "variable", + "dynamic", + "transformation", + "personalization" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"discountEligibility\",\"sourceFields\":[\"purchaseHistory\",\"currentOffers\"],\"transformationLogic\":\"purchaseHistory.totalSpent > 500 ? 'VIP' : currentOffers.defaultTier\",\"defaultValue\":\"Standard\",\"isPersistent\":true,\"description\":\"Determines customer's discount tier eligibility.\"}", + "description": "Builds a variable calculating discount eligibility tier from purchase totals and current offers." + }, + { + "inputJson": "{\"variableName\":\"userRiskScore\",\"sourceFields\":[\"loginFrequency\",\"failedLogins\",\"accountAgeDays\"],\"transformationLogic\":\"(failedLogins > 3 || loginFrequency < 2) ? 'High' : 'Low'\",\"defaultValue\":\"Medium\",\"isPersistent\":false,\"description\":\"Risk score based on login behavior.\"}", + "description": "Creates a risk score variable from login-related metrics for segmentation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Variable", + "context": null + } + }, + { + "name": "marketing-automation.generateSession", + "description": "Generates a simulated user session analytics report by processing input parameters such as user demographics, campaign source, device type, session duration, and page views. It outputs a structured session object containing detailed metrics and session metadata to assist in marketing campaign analysis and optimization.", + "category": "marketing-automation", + "parameters": [ + { + "name": "userId", + "type": "string", + "description": "Unique identifier for the user initiating the session.", + "required": true, + "defaultValue": "" + }, + { + "name": "campaignSource", + "type": "string", + "description": "Identifier of the marketing campaign or traffic source influencing the session.", + "required": true, + "defaultValue": "" + }, + { + "name": "deviceType", + "type": "string", + "description": "Type of device used in the session (e.g., mobile, desktop, tablet).", + "required": false, + "defaultValue": "desktop" + }, + { + "name": "sessionDuration", + "type": "number", + "description": "Duration of the session in seconds.", + "required": false, + "defaultValue": "300" + }, + { + "name": "pageViews", + "type": "number", + "description": "Number of pages viewed in the session.", + "required": false, + "defaultValue": "3" + }, + { + "name": "location", + "type": "string", + "description": "Geographical location or region of the user during the session.", + "required": false, + "defaultValue": "" + }, + { + "name": "converted", + "type": "boolean", + "description": "Indicates whether the session resulted in a conversion action (e.g., purchase, signup).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object representing the generated session analytics data, including user ID, campaign metadata, device details, session metrics (duration, page views), conversion status, and timestamp." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to generate realistic simulated user session data for marketing analytics, such as testing campaign performance models, generating sample datasets for visualization, or performing what-if analysis on user behavior under different campaign scenarios.", + "limitations": "It does not generate real user data or integrate with live traffic sources; the output is simulated based on input parameters only.", + "examples": [ + "Generate a session for a user from campaign 'spring_sale' on mobile device with 5 page views lasting 600 seconds.", + "Create a session report indicating a conversion event for a desktop user from 'email_campaign'.", + "Simulate multiple sessions from different locations to analyze campaign reach." + ] + }, + "tags": [ + "marketing-automation", + "session-generation", + "analytics", + "campaign-analysis", + "user-behavior", + "simulation" + ], + "examples": [ + { + "inputJson": "{\"userId\":\"user123\",\"campaignSource\":\"spring_sale\",\"deviceType\":\"mobile\",\"sessionDuration\":600,\"pageViews\":5,\"location\":\"USA\",\"converted\":false}", + "description": "Simulate a mobile user session from the spring_sale campaign lasting 10 minutes with 5 page views." + }, + { + "inputJson": "{\"userId\":\"user456\",\"campaignSource\":\"email_campaign\",\"deviceType\":\"desktop\",\"sessionDuration\":300,\"pageViews\":3,\"converted\":true}", + "description": "Generate a desktop session with a conversion from an email campaign." + }, + { + "inputJson": "{\"userId\":\"user789\",\"campaignSource\":\"summer_discount\",\"deviceType\":\"tablet\",\"sessionDuration\":450,\"pageViews\":4,\"location\":\"Canada\",\"converted\":false}", + "description": "Create a tablet user session for a summer discount campaign with moderate engagement." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Session", + "context": null + } + }, + { + "name": "marketing-automation.generateTrend", + "description": "Generates marketing trend insights by analyzing historical campaign data, social media metrics, and market conditions. Accepts input data sources and filters; processes these to identify emerging patterns and predicts trending topics, keywords, or product interests. Outputs a structured report with key trends, metrics, and actionable recommendations.", + "category": "marketing-automation", + "parameters": [ + { + "name": "dataSources", + "type": "array", + "description": "List of data sources to analyze, e.g., ['campaignData','socialMedia','searchTrends']", + "required": true, + "defaultValue": "" + }, + { + "name": "timeRange", + "type": "object", + "description": "Time period for trend analysis with 'startDate' and 'endDate' in ISO format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "region", + "type": "string", + "description": "Geographic region to focus trend analysis on, e.g., 'US', 'EU', or 'global'.", + "required": false, + "defaultValue": "global" + }, + { + "name": "categoryFilter", + "type": "array", + "description": "Optional list of marketing categories or product types to filter the trend analysis.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "minTrendScore", + "type": "number", + "description": "Minimum score threshold to consider a trend significant (0 to 1).", + "required": false, + "defaultValue": "0.5" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Whether to include sentiment analysis of social media mentions in trend generation.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing identified trends with details including trend name, score, growth metrics, relevant keywords, sentiment summary if requested, and recommendations for marketing actions." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to analyze diverse marketing data to detect emerging trends, optimize campaign strategies, or forecast interests in products or topics. It's suited for scenarios requiring synthesis of campaign, social, and market data to provide actionable marketing intelligence.", + "limitations": "It cannot access real-time data unless up-to-date inputs are provided; accuracy depends on the quality and relevance of the input data; does not generate creative content but analyzes existing data for trends.", + "examples": [ + "Identify emerging product trends in the US market from Q1 2023 campaign and social media data.", + "Generate a trend report focusing on sports apparel category for the last 6 months including sentiment analysis.", + "Find top trending keywords and topics in the global market based on social media and search trend data over the past year." + ] + }, + "tags": [ + "trend analysis", + "marketing", + "automation", + "analytics", + "campaign optimization", + "social media", + "sentiment" + ], + "examples": [ + { + "inputJson": "{\"dataSources\":[\"campaignData\",\"socialMedia\"],\"timeRange\":{\"startDate\":\"2023-01-01\",\"endDate\":\"2023-03-31\"},\"region\":\"US\",\"categoryFilter\":[\"sportswear\"],\"minTrendScore\":0.6,\"includeSentimentAnalysis\":true}", + "description": "Generate marketing trends for US sportswear category from Q1 2023 data with sentiment." + }, + { + "inputJson": "{\"dataSources\":[\"searchTrends\"],\"timeRange\":{\"startDate\":\"2022-06-01\",\"endDate\":\"2023-05-31\"},\"region\":\"global\",\"categoryFilter\":[],\"minTrendScore\":0.5,\"includeSentimentAnalysis\":false}", + "description": "Find global top search trends over the last year without sentiment analysis." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Trend", + "context": null + } + }, + { + "name": "marketing-automation.generateChart", + "description": "Generates a marketing data visualization chart based on supplied campaign metrics over a specified time period. Accepts input metrics, time range, chart type, and optional filters, then produces a URL pointing to a rendered chart image or embeddable HTML snippet representing campaign performance.", + "category": "marketing-automation", + "parameters": [ + { + "name": "metrics", + "type": "array", + "description": "An array of marketing metrics to visualize (e.g., clicks, impressions, conversions).", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "The ISO 8601 formatted start date for data aggregation (e.g., 2023-01-01).", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "The ISO 8601 formatted end date for data aggregation (e.g., 2023-01-31).", + "required": true, + "defaultValue": "" + }, + { + "name": "chartType", + "type": "string", + "description": "Type of chart to generate (e.g., line, bar, pie).", + "required": true, + "defaultValue": "line" + }, + { + "name": "filters", + "type": "object", + "description": "Optional filtering criteria such as campaign IDs, channels, or regions to narrow the data scope.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "title", + "type": "string", + "description": "Custom title for the generated chart.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Output format for the chart, either 'url' for a link or 'html' for embeddable snippet.", + "required": false, + "defaultValue": "url" + } + ], + "returns": { + "type": "object", + "description": "An object containing the chart output either as a URL to the image or an embeddable HTML snippet depending on outputFormat." + }, + "aiAgent": { + "useCase": "Use this tool when needing to visualize marketing campaign data dynamically by specifying metrics, date ranges, and filters to generate charts that support performance analysis and reporting. It assists in automated marketing analytics workflows requiring graphical data representation.", + "limitations": "Cannot generate charts without valid metrics or date range. Does not perform data aggregation or cleaning itself; requires clean, aggregated input data sources. Chart customization options are limited to provided parameters.", + "examples": [ + "Generate a line chart showing clicks and conversions from January 1 to January 31, 2023.", + "Create a pie chart of impressions distribution by channel for Q1 2023.", + "Produce an embeddable bar chart for conversions filtered by campaign ID and region with a custom title." + ] + }, + "tags": [ + "marketing", + "automation", + "chart", + "visualization", + "data-analysis", + "campaign", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"metrics\":[\"clicks\",\"conversions\"],\"startDate\":\"2023-01-01\",\"endDate\":\"2023-01-31\",\"chartType\":\"line\"}", + "description": "Generate a line chart showing clicks and conversions over January 2023." + }, + { + "inputJson": "{\"metrics\":[\"impressions\"],\"startDate\":\"2023-01-01\",\"endDate\":\"2023-03-31\",\"chartType\":\"pie\",\"filters\":{\"channel\":\"social\"},\"title\":\"Q1 Social Impressions\"}", + "description": "Create a pie chart of impressions by social channel for the first quarter, with a custom title." + }, + { + "inputJson": "{\"metrics\":[\"conversions\"],\"startDate\":\"2023-04-01\",\"endDate\":\"2023-04-30\",\"chartType\":\"bar\",\"filters\":{\"campaignId\":\"camp123\",\"region\":\"NA\"},\"outputFormat\":\"html\"}", + "description": "Produce an embeddable bar chart for conversions in April 2023 filtered by specific campaign and region." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Chart", + "context": null + } + }, + { + "name": "marketing-automation.generateXML", + "description": "Generates a well-structured XML document representing marketing campaign data. Accepts campaign details input as an object including campaign name, schedule, target audience segments, and content items. Processes this data into a standardized XML format suitable for integration with marketing platforms or for archival purposes.", + "category": "marketing-automation", + "parameters": [ + { + "name": "campaignName", + "type": "string", + "description": "The name of the marketing campaign to be included in the XML.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Campaign start date in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "Campaign end date in ISO 8601 format (YYYY-MM-DD).", + "required": false, + "defaultValue": "" + }, + { + "name": "targetAudiences", + "type": "array", + "description": "Array of strings identifying audience segment names targeted by the campaign.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "contentItems", + "type": "array", + "description": "Array of objects describing content elements (e.g., {type:string, value:string}) included in the campaign.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Flag indicating whether to include optional metadata like creation timestamp and author in the XML.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with a single property 'xmlString' containing the generated XML as a string." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert detailed marketing campaign information into a precise XML format for automated deployment on marketing platforms or for exporting campaign data in integration workflows. It is especially useful for preparing standardized campaign data exports or for use in systems that consume XML.", + "limitations": "This tool does not validate the semantics of campaign content or audience segments beyond formatting. It cannot connect to external systems or send the XML; it only generates the XML string representation.", + "examples": [ + "Generate XML for a holiday promotion campaign running between specified dates targeting specific audiences with personalized content items.", + "Create XML output including metadata for a new product launch campaign with content such as emails and banners." + ] + }, + "tags": [ + "marketing", + "automation", + "XML", + "campaign", + "data-export", + "formatting", + "integration" + ], + "examples": [ + { + "inputJson": "{\"campaignName\":\"Holiday Blast\",\"startDate\":\"2024-11-01\",\"endDate\":\"2024-12-31\",\"targetAudiences\":[\"Loyal Customers\",\"Newsletter Subscribers\"],\"contentItems\":[{\"type\":\"email\",\"value\":\"Holiday Sale Announcement\"},{\"type\":\"banner\",\"value\":\"Winter Discounts\"}],\"includeMetadata\":true}", + "description": "Generate XML for a Holiday Blast campaign with specified audiences and content including metadata." + }, + { + "inputJson": "{\"campaignName\":\"Product Launch\",\"startDate\":\"2024-07-15\",\"targetAudiences\":[\"Tech Enthusiasts\"],\"contentItems\":[{\"type\":\"email\",\"value\":\"Launch Invitation\"}],\"includeMetadata\":false}", + "description": "Generate XML for a Product Launch campaign without optional metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "XML", + "context": null + } + }, + { + "name": "marketing-automation.generateSchema", + "description": "Generates a JSON schema for marketing campaign data structures based on provided campaign type and required data fields. Accepts campaign type and an array of field definitions with types and constraints, and produces a JSON Schema to validate data input for automated marketing workflows.", + "category": "marketing-automation", + "parameters": [ + { + "name": "campaignType", + "type": "string", + "description": "Type of marketing campaign (e.g., email, social media, PPC) for which to generate the schema.", + "required": true, + "defaultValue": "" + }, + { + "name": "fields", + "type": "array", + "description": "Array of objects defining each field's name, data type, and validation rules in the schema.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include standard metadata fields (e.g., timestamp, campaignId) in the schema.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "JSON object representing the JSON Schema that can be used to validate marketing campaign data inputs." + }, + "aiAgent": { + "useCase": "Use this tool when building or validating marketing automation pipelines that require standardized data inputs. It helps ensure campaign data conforms to expected formats by generating targeted JSON Schemas for different campaign types and their unique data fields.", + "limitations": "This tool generates generic JSON Schemas based on user-defined field properties but does not itself validate data or generate campaign content. It requires detailed field specification input to produce useful schemas.", + "examples": [ + "Generate a JSON schema for an email campaign with recipient email, subject, and body fields.", + "Create a schema for PPC campaigns including fields for keywords, bid amount, and ad copy.", + "Produce a social media campaign schema with fields for post text, image URL, and scheduled date." + ] + }, + "tags": [ + "marketing", + "automation", + "schema", + "JSON Schema", + "data validation", + "campaign", + "marketing-campaign", + "schema-generation" + ], + "examples": [ + { + "inputJson": "{\"campaignType\":\"email\",\"fields\":[{\"name\":\"recipientEmail\",\"type\":\"string\",\"format\":\"email\",\"required\":true},{\"name\":\"subject\",\"type\":\"string\",\"required\":true},{\"name\":\"body\",\"type\":\"string\",\"required\":true}],\"includeMetadata\":true}", + "description": "Generates a JSON schema for an email marketing campaign requiring recipientEmail (as email string), subject, and body fields, including standard metadata." + }, + { + "inputJson": "{\"campaignType\":\"PPC\",\"fields\":[{\"name\":\"keywords\",\"type\":\"array\",\"itemsType\":\"string\",\"required\":true},{\"name\":\"bidAmount\",\"type\":\"number\",\"minimum\":0.01,\"required\":true},{\"name\":\"adCopy\",\"type\":\"string\",\"required\":true}],\"includeMetadata\":false}", + "description": "Creates a schema for PPC campaigns with required keywords (array of strings), positive bidAmount, and adCopy text, excluding metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Schema", + "context": null + } + }, + { + "name": "marketing-automation.createSession", + "description": "Creates a new marketing session analytics record by accepting session metadata such as user identifiers, timestamps, campaign parameters, and device info. Processes and stores session details to enable subsequent analysis and reporting. Returns an object indicating the created session's unique ID and status.", + "category": "marketing-automation", + "parameters": [ + { + "name": "userId", + "type": "string", + "description": "Unique identifier for the user associated with the session", + "required": true, + "defaultValue": "" + }, + { + "name": "sessionStart", + "type": "string", + "description": "ISO 8601 timestamp marking session start time", + "required": true, + "defaultValue": "" + }, + { + "name": "sessionEnd", + "type": "string", + "description": "ISO 8601 timestamp marking session end time", + "required": false, + "defaultValue": "" + }, + { + "name": "campaignSource", + "type": "string", + "description": "Source of the marketing campaign driving the session (e.g., google, newsletter)", + "required": false, + "defaultValue": "" + }, + { + "name": "campaignMedium", + "type": "string", + "description": "Medium of the marketing campaign (e.g., cpc, email)", + "required": false, + "defaultValue": "" + }, + { + "name": "campaignName", + "type": "string", + "description": "Name or identifier of the marketing campaign", + "required": false, + "defaultValue": "" + }, + { + "name": "deviceInfo", + "type": "object", + "description": "Object containing device data such as type, OS, and browser info", + "required": false, + "defaultValue": "" + }, + { + "name": "customAttributes", + "type": "object", + "description": "Additional key-value pairs for custom session attributes", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object with the created session's unique ID and a status string indicating success or failure" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to log or create a new user session record within a marketing automation system to track user behavior and campaign attribution across sessions. It's suitable for automating session data capture from various sources in real-time or batch processing.", + "limitations": "This tool does not perform session data validation beyond basic type checks, nor does it analyze or aggregate data. It only creates a single session record per call.", + "examples": [ + "Create a new session record for user with ID 'abc123' starting now with campaign source 'google' and medium 'cpc'.", + "Log a session for user 'user456' including device details like browser and OS.", + "Add a custom attribute to a session such as 'loyaltyTier' equal to 'gold'." + ] + }, + "tags": [ + "marketing", + "automation", + "session", + "analytics", + "campaign", + "userTracking" + ], + "examples": [ + { + "inputJson": "{\"userId\":\"user789\",\"sessionStart\":\"2024-06-01T12:00:00Z\",\"campaignSource\":\"newsletter\",\"campaignMedium\":\"email\",\"campaignName\":\"spring_sale\"}", + "description": "Create a session for user 'user789' starting at noon UTC with email newsletter campaign attribution." + }, + { + "inputJson": "{\"userId\":\"user123\",\"sessionStart\":\"2024-06-01T14:30:00Z\",\"sessionEnd\":\"2024-06-01T15:00:00Z\",\"deviceInfo\":{\"type\":\"mobile\",\"os\":\"iOS\",\"browser\":\"Safari\"}}", + "description": "Log a complete session with device details for user 'user123'." + }, + { + "inputJson": "{\"userId\":\"user456\",\"sessionStart\":\"2024-06-01T08:15:00Z\",\"customAttributes\":{\"loyaltyTier\":\"gold\",\"promoCode\":\"SUMMER2024\"}}", + "description": "Create a session with custom attributes for loyalty tier and promo code." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Session", + "context": null + } + }, + { + "name": "marketing-automation.createTrend", + "description": "Analyzes marketing campaign performance data over a specified time range to detect and create actionable marketing trends. Accepts campaign metrics such as clicks, impressions, conversions, and revenue, then processes the data using time series analysis and statistical methods to identify emerging trends, peak performance intervals, or decline patterns. Outputs a summarized trend report highlighting key insights, trend direction, and suggested marketing actions.", + "category": "marketing-automation", + "parameters": [ + { + "name": "campaignId", + "type": "string", + "description": "Unique identifier for the marketing campaign to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date (ISO 8601 format) for the analysis period.", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date (ISO 8601 format) for the analysis period.", + "required": true, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "List of metric names (e.g., clicks, conversions) to include in trend analysis.", + "required": true, + "defaultValue": "[\"clicks\",\"impressions\",\"conversions\"]" + }, + { + "name": "granularity", + "type": "string", + "description": "Time granularity for trend aggregation, such as 'daily', 'weekly', or 'monthly'.", + "required": false, + "defaultValue": "daily" + }, + { + "name": "confidenceLevel", + "type": "number", + "description": "Statistical confidence level (0-1) to determine significance of detected trends.", + "required": false, + "defaultValue": "0.95" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "Whether to include suggested marketing actions based on trend findings.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing summary of identified trends including trend names, metrics involved, trend directions (up/down/stable), confidence scores, time intervals, and optional marketing recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when needing to identify and quantify emerging marketing trends from campaign data over a defined period to inform strategy optimization, budget allocation, or content adjustment decisions. It helps automate the detection of meaningful performance patterns beyond simple metric reporting.", + "limitations": "This tool cannot access raw campaign data on its own and requires structured input data. It does not predict future trend behavior beyond the given data window and does not analyze qualitative marketing factors or external market conditions.", + "examples": [ + "Create a trend report for campaign ID 'camp123' from 2024-01-01 to 2024-03-31 analyzing clicks and conversions with weekly granularity.", + "Generate marketing trend insights highlighting significant changes in impressions and revenue for campaign 'summerSale' in past 2 months.", + "Identify upward or downward trends in key metrics for a new product launch campaign to assess performance." + ] + }, + "tags": [ + "marketing", + "automation", + "trend-analysis", + "campaign-performance", + "analytics", + "time-series" + ], + "examples": [ + { + "inputJson": "{\"campaignId\":\"camp123\",\"startDate\":\"2024-01-01\",\"endDate\":\"2024-03-31\",\"metrics\":[\"clicks\",\"conversions\",\"revenue\"],\"granularity\":\"weekly\",\"confidenceLevel\":0.95,\"includeRecommendations\":true}", + "description": "Analyzes weekly trends in clicks, conversions, and revenue for the specified campaign and period, including actionable recommendations." + }, + { + "inputJson": "{\"campaignId\":\"launch2024\",\"startDate\":\"2024-05-01\",\"endDate\":\"2024-05-31\",\"metrics\":[\"impressions\"],\"granularity\":\"daily\",\"confidenceLevel\":0.90,\"includeRecommendations\":false}", + "description": "Daily impression trend analysis for a product launch campaign without marketing recommendations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Trend", + "context": null + } + }, + { + "name": "marketing-automation.createCluster", + "description": "Creates a marketing data cluster by grouping customer profiles or campaign data based on specified segmentation criteria. Accepts input data such as customer attributes or campaign metrics, applies clustering algorithms, and outputs clusters for targeted marketing actions.", + "category": "marketing-automation", + "parameters": [ + { + "name": "inputData", + "type": "array", + "description": "An array of customer or campaign objects to be clustered, each with relevant attributes (e.g., demographics, behavior metrics).", + "required": true, + "defaultValue": "" + }, + { + "name": "clusteringMethod", + "type": "string", + "description": "The clustering algorithm to use (e.g., kmeans, hierarchical, DBSCAN).", + "required": false, + "defaultValue": "kmeans" + }, + { + "name": "numberOfClusters", + "type": "number", + "description": "Number of clusters to generate (applicable for methods like kmeans).", + "required": false, + "defaultValue": "5" + }, + { + "name": "featureFields", + "type": "array", + "description": "List of object keys from inputData to use as features for clustering.", + "required": true, + "defaultValue": "" + }, + { + "name": "normalizeFeatures", + "type": "boolean", + "description": "Indicates whether to normalize feature values before clustering for better accuracy.", + "required": false, + "defaultValue": "true" + }, + { + "name": "distanceMetric", + "type": "string", + "description": "Distance metric to use for clustering (e.g., euclidean, manhattan).", + "required": false, + "defaultValue": "euclidean" + }, + { + "name": "minClusterSize", + "type": "number", + "description": "Minimum number of elements per cluster (applicable for some clustering methods like DBSCAN).", + "required": false, + "defaultValue": "1" + } + ], + "returns": { + "type": "object", + "description": "An object containing an array of clusters, each with its assigned members and cluster centroid or characteristics." + }, + "aiAgent": { + "useCase": "Use this tool when you want to automatically group marketing data such as customer profiles or campaign responses into meaningful clusters for segmentation and targeted campaigns. It supports various clustering methods to tailor grouping strategy based on data nature and marketing goals.", + "limitations": "The tool depends on the quality and relevance of input features and does not perform feature selection. It may not handle very large datasets efficiently in-memory and requires appropriate choice of parameters for meaningful clusters.", + "examples": [ + "Create customer segments from an array of customer profiles using kmeans with 4 clusters.", + "Group campaign responses into clusters based on engagement metrics using DBSCAN.", + "Segment customers by demographic and purchase behavior for personalized marketing." + ] + }, + "tags": [ + "marketing", + "clustering", + "segmentation", + "customer data", + "campaign analysis", + "automation" + ], + "examples": [ + { + "inputJson": "{\"inputData\":[{\"age\":25,\"income\":50000,\"visits\":10},{\"age\":40,\"income\":80000,\"visits\":5},{\"age\":22,\"income\":48000,\"visits\":12},{\"age\":35,\"income\":75000,\"visits\":7}],\"featureFields\":[\"age\",\"income\",\"visits\"],\"clusteringMethod\":\"kmeans\",\"numberOfClusters\":2,\"normalizeFeatures\":true}", + "description": "Cluster customers into 2 segments using age, income, and visits data with kmeans." + }, + { + "inputJson": "{\"inputData\":[{\"clicks\":100,\"impressions\":1000},{\"clicks\":20,\"impressions\":500},{\"clicks\":150,\"impressions\":1200}],\"featureFields\":[\"clicks\",\"impressions\"],\"clusteringMethod\":\"hierarchical\"}", + "description": "Cluster campaign data based on clicks and impressions using hierarchical clustering." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Cluster", + "context": null + } + }, + { + "name": "marketing-automation.createThread", + "description": "Creates a communication thread for a marketing campaign by accepting campaign ID, participant contacts, initial message content, and optional metadata. The tool sets up the conversation context and returns a unique thread ID along with thread details, enabling automated and organized multi-channel marketing interactions.", + "category": "marketing-automation", + "parameters": [ + { + "name": "campaignId", + "type": "string", + "description": "Unique identifier of the marketing campaign this thread belongs to.", + "required": true, + "defaultValue": "" + }, + { + "name": "participants", + "type": "array", + "description": "List of participant contact objects (e.g., email, phone) involved in the thread.", + "required": true, + "defaultValue": "" + }, + { + "name": "initialMessage", + "type": "string", + "description": "Content of the first message initiating the thread.", + "required": true, + "defaultValue": "" + }, + { + "name": "channel", + "type": "string", + "description": "Communication channel type such as email, SMS, chat, or social media.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional metadata including tags, custom attributes, or scheduling info for the thread.", + "required": false, + "defaultValue": "" + }, + { + "name": "autoArchive", + "type": "boolean", + "description": "Flag to auto-archive the thread after campaign conclusion.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the unique threadId, assigned participants, campaignId, channel, initialMessage, creation timestamp, and any attached metadata." + }, + "aiAgent": { + "useCase": "Use this tool to initiate and structure a new communication thread linked to a specific marketing campaign, facilitating organized dialogues with targeted participants via chosen communication channels. Ideal when automating multi-channel outreach that needs to be tracked and managed programmatically.", + "limitations": "This tool does not send messages or handle replies; it only creates the communication thread metadata and setup. Actual message delivery and tracking require other tools or integrations.", + "examples": [ + "Create a new email thread for campaign ID 'camp123' with participant emails and an initial welcome message.", + "Set up a multi-participant SMS thread for a product launch campaign with metadata tags for segmentation.", + "Start a social media chat thread for a marketing campaign with automated archiving enabled." + ] + }, + "tags": [ + "marketing", + "automation", + "communication", + "thread", + "campaign", + "multi-channel", + "messaging" + ], + "examples": [ + { + "inputJson": "{\"campaignId\":\"camp123\",\"participants\":[{\"type\":\"email\",\"address\":\"user1@example.com\"},{\"type\":\"email\",\"address\":\"user2@example.com\"}],\"initialMessage\":\"Welcome to our summer sale campaign!\",\"channel\":\"email\",\"metadata\":{\"priority\":\"high\",\"scheduledSend\":\"2024-07-01T09:00:00Z\"},\"autoArchive\":true}", + "description": "Create an email communication thread for participants of a summer sale campaign with scheduling and auto-archiving enabled." + }, + { + "inputJson": "{\"campaignId\":\"launch001\",\"participants\":[{\"type\":\"sms\",\"number\":\"+1234567890\"}],\"initialMessage\":\"Introducing our new product line!\",\"channel\":\"sms\",\"metadata\":{},\"autoArchive\":false}", + "description": "Set up an SMS thread for a new product launch campaign targeting a single participant without auto-archiving." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Thread", + "context": null + } + }, + { + "name": "marketing-automation.createThreat", + "description": "Generates and registers a simulated marketing security threat scenario based on input parameters such as threat type, target audience, and potential impact. It processes details to create a structured threat report to aid marketing teams in preparing mitigation strategies against relevant digital threats.", + "category": "marketing-automation", + "parameters": [ + { + "name": "threatType", + "type": "string", + "description": "Type of security threat relevant to marketing operations, such as phishing, data leak, or social engineering.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetAudience", + "type": "string", + "description": "Description of the marketing segment or stakeholders targeted by the threat.", + "required": true, + "defaultValue": "" + }, + { + "name": "potentialImpact", + "type": "string", + "description": "Description of the potential negative effects the threat could have on marketing campaigns or brand reputation.", + "required": true, + "defaultValue": "" + }, + { + "name": "urgencyLevel", + "type": "string", + "description": "Urgency or severity level of the threat, e.g., low, medium, high.", + "required": false, + "defaultValue": "medium" + }, + { + "name": "mitigationSuggestions", + "type": "array", + "description": "List of suggested actions or strategies to mitigate the identified threat, if any.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "A detailed marketing threat report object containing the threat summary, detailed description, impacted segments, urgency level, and recommended mitigation steps." + }, + "aiAgent": { + "useCase": "Use this tool when needing to simulate or generate realistic marketing-related security threat scenarios to help prepare teams, plan defenses, or analyze campaign vulnerabilities. It is ideal for automating the creation of structured threat reports based on user inputs for proactive marketing security management.", + "limitations": "This tool generates simulated threat scenarios and does not detect or analyze real-time security incidents or guarantee actual threat predictions.", + "examples": [ + "Create a phishing threat targeting email marketing subscribers with high impact and provide mitigation steps.", + "Generate a data leak scenario affecting customer data in a loyalty program with medium urgency.", + "Produce a social engineering threat scenario for a digital ad campaign with low urgency and suggested precautions." + ] + }, + "tags": [ + "marketing", + "security", + "threat", + "automation", + "simulation", + "campaignProtection" + ], + "examples": [ + { + "inputJson": "{\"threatType\":\"phishing\",\"targetAudience\":\"email marketing subscribers\",\"potentialImpact\":\"loss of customer trust and data compromise\",\"urgencyLevel\":\"high\",\"mitigationSuggestions\":[\"Implement email authentication protocols\",\"Educate customers on phishing signs\",\"Monitor email campaigns for suspicious activity\"]}", + "description": "Create a high urgency phishing threat targeting email subscribers with mitigation steps." + }, + { + "inputJson": "{\"threatType\":\"data leak\",\"targetAudience\":\"loyalty program customers\",\"potentialImpact\":\"exposure of personal data\",\"urgencyLevel\":\"medium\",\"mitigationSuggestions\":[\"Encrypt stored customer data\",\"Limit access to sensitive information\",\"Conduct regular security audits\"]}", + "description": "Generate a medium urgency data leak threat concerning loyalty customers with recommended mitigations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Threat", + "context": null + } + }, + { + "name": "marketing-automation.createQueue", + "description": "Creates a named marketing message queue to manage and schedule outbound campaign messages. Accepts queueName and optional configuration such as maxQueueSize and retryPolicy. Outputs a queueId and confirmation of queue creation, enabling organized message dispatch within marketing automation systems.", + "category": "marketing-automation", + "parameters": [ + { + "name": "queueName", + "type": "string", + "description": "The unique name of the queue to be created, used to identify the queue within the marketing automation system.", + "required": true, + "defaultValue": "" + }, + { + "name": "maxQueueSize", + "type": "number", + "description": "The maximum number of messages the queue can hold before rejecting new messages; set to 0 or omit for unlimited size.", + "required": false, + "defaultValue": "0" + }, + { + "name": "retryPolicy", + "type": "object", + "description": "An optional object defining retry parameters for failed message sends, including maxRetries (number) and retryIntervalSeconds (number).", + "required": false, + "defaultValue": "" + }, + { + "name": "priorityLevels", + "type": "array", + "description": "Optional array of strings defining priority levels in descending importance (e.g., [\"high\",\"medium\",\"low\"]).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the created queue's unique queueId, the queueName, and the effective configuration parameters confirming successful creation." + }, + "aiAgent": { + "useCase": "Use this tool when initializing or managing marketing campaign infrastructures requiring message queues for controlled delivery, scheduling, and retry logic. It helps structure outbound messaging workflows by creating queues specific to campaigns or message types.", + "limitations": "Does not send or process messages directly, only creates and configures the queue infrastructure. It cannot modify queues after creation; separate tools are required for updates.", + "examples": [ + "Create a queue named 'SpringPromo' with max size 1000 and retry policy of 3 attempts every 60 seconds.", + "Initialize a messaging queue for high-priority notifications with priority levels ['urgent', 'normal', 'low']." + ] + }, + "tags": [ + "marketing", + "automation", + "queue", + "campaign-management", + "message-scheduling", + "infrastructure" + ], + "examples": [ + { + "inputJson": "{\"queueName\":\"SummerSaleQueue\",\"maxQueueSize\":5000,\"retryPolicy\":{\"maxRetries\":5,\"retryIntervalSeconds\":120}}", + "description": "Create a queue named SummerSaleQueue with a maximum size of 5000 messages and a retry policy of 5 attempts every 120 seconds." + }, + { + "inputJson": "{\"queueName\":\"NewsletterDispatch\",\"priorityLevels\":[\"high\",\"medium\",\"low\"]}", + "description": "Create a queue named NewsletterDispatch defining three priority levels to manage message sending order." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Queue", + "context": null + } + }, + { + "name": "marketing-automation.createIncident", + "description": "Creates a security incident record within a marketing automation platform by accepting incident details such as type, severity, description, affected systems, and timestamps. Processes the input to log the incident and outputs a confirmation with the incident ID for tracking and resolution purposes.", + "category": "marketing-automation", + "parameters": [ + { + "name": "incidentType", + "type": "string", + "description": "The category of the security incident (e.g., phishing, data breach).", + "required": true, + "defaultValue": "" + }, + { + "name": "severityLevel", + "type": "string", + "description": "The severity of the incident (e.g., low, medium, high, critical).", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Detailed description of the incident, including observed behavior and impact.", + "required": true, + "defaultValue": "" + }, + { + "name": "affectedSystems", + "type": "array", + "description": "List of systems, platforms, or databases affected by the incident.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "detectedAt", + "type": "string", + "description": "Timestamp when the incident was detected (ISO 8601 format).", + "required": false, + "defaultValue": "" + }, + { + "name": "reportedBy", + "type": "string", + "description": "Identifier or name of the person or system reporting the incident.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Keywords or tags to classify or facilitate searching the incident.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the unique incident ID, status, and a summary message confirming creation." + }, + "aiAgent": { + "useCase": "Use this tool when automating the creation and logging of security incidents related to marketing systems or campaigns, enabling timely tracking and management of threats. Ideal for integration in automated threat detection and incident response workflows within marketing automation environments.", + "limitations": "This tool does not analyze or detect incidents automatically; it requires that the incident details be provided explicitly. It does not perform remediation or notification actions beyond incident creation.", + "examples": [ + "Create a new phishing incident with high severity affecting the email marketing platform.", + "Log a data breach incident including affected databases and detailed description.", + "Record a low severity suspicious activity incident detected by an external monitoring system." + ] + }, + "tags": [ + "marketing", + "security", + "incident-management", + "automation", + "logging", + "threat-detection" + ], + "examples": [ + { + "inputJson": "{\"incidentType\":\"phishing\",\"severityLevel\":\"high\",\"description\":\"Multiple users received suspicious emails requesting credentials.\",\"affectedSystems\":[\"Email Marketing Platform\"],\"detectedAt\":\"2024-06-10T14:30:00Z\",\"reportedBy\":\"SecurityTeamBot\",\"tags\":[\"email\",\"phishing\",\"urgent\"]}", + "description": "Creates a high severity phishing incident affecting the email marketing platform." + }, + { + "inputJson": "{\"incidentType\":\"data breach\",\"severityLevel\":\"critical\",\"description\":\"Unauthorized access detected to customer data databases.\",\"affectedSystems\":[\"CustomerDB\"],\"detectedAt\":\"2024-06-11T02:00:00Z\",\"reportedBy\":\"AutoAlertSystem\",\"tags\":[\"data breach\",\"urgent\"]}", + "description": "Logs a critical data breach incident impacting customer databases." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Incident", + "context": null + } + }, + { + "name": "marketing-automation.createSecret", + "description": "Creates a secure secret token or API key for use within marketing automation campaigns and integrations. Accepts parameters like secret name, type, expiration, and usage scope, then generates a securely stored secret string. Outputs the secret metadata and masked secret value for authorized use in automation workflows.", + "category": "marketing-automation", + "parameters": [ + { + "name": "secretName", + "type": "string", + "description": "Unique name to identify the secret within marketing automation tools.", + "required": true, + "defaultValue": "" + }, + { + "name": "secretType", + "type": "string", + "description": "Specifies the secret type such as 'apiKey', 'token', or 'password'.", + "required": true, + "defaultValue": "apiKey" + }, + { + "name": "expirationDays", + "type": "number", + "description": "Number of days until the secret expires; 0 means no expiration.", + "required": false, + "defaultValue": "0" + }, + { + "name": "usageScope", + "type": "string", + "description": "Defines where the secret can be used, e.g., 'emailCampaigns', 'crmIntegration'.", + "required": false, + "defaultValue": "" + }, + { + "name": "autoRotate", + "type": "boolean", + "description": "Whether the secret should be automatically rotated upon expiration.", + "required": false, + "defaultValue": "false" + }, + { + "name": "description", + "type": "string", + "description": "Optional descriptive text about the secret's purpose.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the secret's metadata including name, type, creation and expiration dates, usage scope, and the masked secret value for secure usage." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to generate and store secure credentials or tokens for marketing automation workflows, ensuring integration security and automated secrets management for campaigns, APIs, or platform connections.", + "limitations": "This tool does not handle secret retrieval after creation, detailed permission management, or integrate directly with external secret management services.", + "examples": [ + "Create a new API key for email campaign integrations with 30 days expiration.", + "Generate a password secret scoped to CRM integration with no expiration and auto-rotation enabled.", + "Create a token named 'socialMediaAccess' for scheduled posts without expiration." + ] + }, + "tags": [ + "marketing", + "automation", + "security", + "secret-management", + "api-key", + "token", + "credential" + ], + "examples": [ + { + "inputJson": "{\"secretName\":\"emailAPIKey\",\"secretType\":\"apiKey\",\"expirationDays\":30,\"usageScope\":\"emailCampaigns\",\"autoRotate\":false,\"description\":\"API key for transactional email provider\"}", + "description": "Generates a 30-day API key for email campaign integration." + }, + { + "inputJson": "{\"secretName\":\"crmPassword\",\"secretType\":\"password\",\"expirationDays\":0,\"usageScope\":\"crmIntegration\",\"autoRotate\":true,\"description\":\"Password for CRM system integration\"}", + "description": "Creates a non-expiring password secret that auto-rotates for CRM system integration." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Secret", + "context": null + } + }, + { + "name": "marketing-automation.createSchema", + "description": "Generates a JSON schema definition for marketing automation data structures such as campaign configurations, user segmentation criteria, or email templates. Accepts input parameters defining fields and their types, validation rules, and nested structures, then produces a JSON schema usable for data validation and interface generation.", + "category": "marketing-automation", + "parameters": [ + { + "name": "schemaName", + "type": "string", + "description": "The name identifier for the schema to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "fields", + "type": "array", + "description": "An array of field definitions describing each field's name, type, and validation constraints.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A human-readable description of the schema purpose and contents.", + "required": false, + "defaultValue": "" + }, + { + "name": "requiredFields", + "type": "array", + "description": "List of field names that are required within the schema.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "allowAdditionalProperties", + "type": "boolean", + "description": "Flag indicating whether properties not defined in the schema are allowed.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A complete JSON schema object representing the defined marketing data structure, conforming to JSON Schema standards." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically generate or validate marketing automation data formats such as campaign configurations, targeting rules, or email content templates. It assists in ensuring data consistency and supports UI form generation.", + "limitations": "The tool does not generate actual marketing content or campaign logic; it only produces schema definitions. Complex conditional validation beyond basic JSON Schema features is not supported.", + "examples": [ + "Create a schema for an email campaign configuration with fields for subject, senderEmail, sendDate, and contentBody.", + "Generate a schema for user segmentation criteria including demographic, behavior, and engagement score fields.", + "Define a schema to validate newsletter subscription data with required email and optional preferences." + ] + }, + "tags": [ + "marketing", + "automation", + "schema", + "json-schema", + "data-validation", + "campaign", + "template" + ], + "examples": [ + { + "inputJson": "{\"schemaName\":\"EmailCampaign\",\"fields\":[{\"name\":\"subject\",\"type\":\"string\"},{\"name\":\"senderEmail\",\"type\":\"string\"},{\"name\":\"sendDate\",\"type\":\"string\",\"format\":\"date-time\"},{\"name\":\"contentBody\",\"type\":\"string\"}],\"requiredFields\":[\"subject\",\"senderEmail\",\"sendDate\"],\"allowAdditionalProperties\":false}", + "description": "Generate JSON schema for an email campaign defining subject, sender email, scheduled send date, and content body fields." + }, + { + "inputJson": "{\"schemaName\":\"UserSegmentation\",\"fields\":[{\"name\":\"ageRange\",\"type\":\"object\",\"properties\":{\"min\":{\"type\":\"number\"},\"max\":{\"type\":\"number\"}}},{\"name\":\"interests\",\"type\":\"array\",\"items\":{\"type\":\"string\"}},{\"name\":\"engagementScore\",\"type\":\"number\",\"minimum\":0,\"maximum\":100}],\"requiredFields\":[\"ageRange\"],\"allowAdditionalProperties\":true}", + "description": "Create a schema for user segmentation including age range, interests list, and numeric engagement score." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Schema", + "context": null + } + }, + { + "name": "marketing-automation.createPackage", + "description": "Creates a marketing package by bundling campaign assets, targeting rules, schedules, and budget settings into a deployable unit. Accepts input details like assets (images, copy), audience segments, campaign timeline, and budget allocations, then processes and outputs a package ID with deployment readiness status and summary.", + "category": "marketing-automation", + "parameters": [ + { + "name": "packageName", + "type": "string", + "description": "The name of the marketing package to identify it uniquely", + "required": true, + "defaultValue": "" + }, + { + "name": "campaignAssets", + "type": "array", + "description": "List of campaign assets including images, videos, and copy used in the marketing package", + "required": true, + "defaultValue": "" + }, + { + "name": "targetAudienceSegments", + "type": "array", + "description": "Audience segments the campaign targets, defined by demographic or behavioral criteria", + "required": true, + "defaultValue": "" + }, + { + "name": "schedule", + "type": "object", + "description": "Start and end dates along with specific times for campaign activation", + "required": true, + "defaultValue": "" + }, + { + "name": "budgetAllocation", + "type": "object", + "description": "Budget details including total spend and distribution across channels", + "required": true, + "defaultValue": "" + }, + { + "name": "deliveryChannels", + "type": "array", + "description": "Channels through which the marketing package will be delivered, e.g., email, social media, search ads", + "required": true, + "defaultValue": "" + }, + { + "name": "autoOptimize", + "type": "boolean", + "description": "Whether to enable automated optimization based on performance metrics", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the unique package ID, deployment readiness status, and a summary of the package details" + }, + "aiAgent": { + "useCase": "Use this tool when you need to create a comprehensive marketing campaign package that bundles all necessary assets, targeting criteria, scheduling, and budget information into a cohesive unit ready for deployment. Ideal for automating campaign setup in marketing platforms.", + "limitations": "Does not deploy the package directly; it only prepares and validates the marketing package. Integration with deployment systems is required for actual campaign launch.", + "examples": [ + "Create a marketing package for a summer sale campaign targeting millennials on email and social media with a budget of $10,000 scheduled for July.", + "Bundle assets and audience segments for a holiday promotion to be delivered via search ads and email with auto-optimization enabled." + ] + }, + "tags": [ + "marketing", + "automation", + "campaign", + "package", + "budgets", + "scheduling", + "audience", + "assets" + ], + "examples": [ + { + "inputJson": "{\"packageName\":\"SummerSale2024\",\"campaignAssets\":[{\"type\":\"image\",\"url\":\"https://example.com/banner.jpg\"},{\"type\":\"copy\",\"text\":\"Big Summer Discounts!\"}],\"targetAudienceSegments\":[{\"ageRange\":\"25-34\",\"interests\":[\"fashion\",\"outdoors\"]}],\"schedule\":{\"startDate\":\"2024-07-01\",\"endDate\":\"2024-07-15\"},\"budgetAllocation\":{\"total\":10000,\"channels\":{\"email\":5000,\"socialMedia\":5000}},\"deliveryChannels\":[\"email\",\"socialMedia\"],\"autoOptimize\":true}", + "description": "Creating a summer sale marketing package targeting young adults with specified assets and budget allocation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Package", + "context": null + } + }, + { + "name": "marketing-automation.createResume", + "description": "Generates a professional resume document based on provided personal details, work experience, education, skills, and optional customization settings. Inputs structured data and outputs a formatted resume as PDF or DOCX file, suitable for job applications in marketing and related domains.", + "category": "marketing-automation", + "parameters": [ + { + "name": "personalInfo", + "type": "object", + "description": "Basic personal details including full name, contact info, and professional summary.", + "required": true, + "defaultValue": "" + }, + { + "name": "workExperience", + "type": "array", + "description": "List of work experience entries, each including job title, company, start/end dates, and descriptions.", + "required": true, + "defaultValue": "" + }, + { + "name": "education", + "type": "array", + "description": "List of educational background entries, such as degrees, institutions, and graduation years.", + "required": true, + "defaultValue": "" + }, + { + "name": "skills", + "type": "array", + "description": "Array of skill strings relevant to the marketing domain or desired roles.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "additionalSections", + "type": "array", + "description": "Optional additional resume sections such as certifications, awards, or volunteer work.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format for the resume document. Supported values: 'pdf', 'docx'.", + "required": false, + "defaultValue": "pdf" + }, + { + "name": "templateStyle", + "type": "string", + "description": "Choice of resume template style to apply, e.g., 'modern', 'classic', or 'creative'.", + "required": false, + "defaultValue": "modern" + } + ], + "returns": { + "type": "object", + "description": "An object containing a base64 encoded string of the generated resume file and its MIME type." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to produce a customized, professional resume document automatically from structured candidate data for marketing roles or related fields, especially when multiple outputs or template variations are needed. It helps automate resume generation to speed up job application or recruitment processes.", + "limitations": "Does not edit existing resumes or parse unstructured text inputs; limited to provided structured input data and predefined template styles; does not provide semantic optimization or keyword tailoring for ATS systems.", + "examples": [ + "Create a resume in PDF for a marketing manager with 5 years experience, skills in SEO and content marketing, using a modern template.", + "Generate a DOCX resume including certifications, with a classic template style for a junior marketing analyst.", + "Produce a simple PDF resume with only education and skills sections filled, for an entry-level marketing role." + ] + }, + "tags": [ + "marketing", + "automation", + "resume", + "document-generation", + "hr-tech", + "job-application", + "pdf", + "docx" + ], + "examples": [ + { + "inputJson": "{\"personalInfo\":{\"fullName\":\"Jane Doe\",\"contactEmail\":\"jane.doe@example.com\",\"phone\":\"555-1234\",\"professionalSummary\":\"Experienced marketing manager with a focus on digital campaigns.\"},\"workExperience\":[{\"jobTitle\":\"Marketing Manager\",\"company\":\"XYZ Corp\",\"startDate\":\"2018-06\",\"endDate\":\"2023-03\",\"description\":\"Led content marketing and SEO strategy, increasing traffic by 40%.\"}],\"education\":[{\"degree\":\"B.A. in Marketing\",\"institution\":\"State University\",\"graduationYear\":\"2017\"}],\"skills\":[\"SEO\",\"Content Marketing\",\"Google Analytics\"],\"outputFormat\":\"pdf\",\"templateStyle\":\"modern\"}", + "description": "Generate a PDF resume with one work experience entry and key skills using the modern template." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Resume", + "context": null + } + }, + { + "name": "sales-automation.analyzeDashboard", + "description": "Analyzes sales performance dashboard data by accepting sales metrics, time range, and filter criteria. Processes the input to generate insights including trend analysis, top-performing products or reps, and anomaly detection. Outputs a structured report with key sales KPIs and recommendations to optimize sales strategies.", + "category": "sales-automation", + "parameters": [ + { + "name": "metrics", + "type": "array", + "description": "List of sales metrics to analyze (e.g., revenue, conversionRate, leadCount).", + "required": true, + "defaultValue": "" + }, + { + "name": "timeRange", + "type": "object", + "description": "Object specifying start and end dates for the analysis period in ISO format.", + "required": true, + "defaultValue": "" + }, + { + "name": "filters", + "type": "object", + "description": "Optional filters to refine data scope such as by region, salesRep, or productCategory.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeTrends", + "type": "boolean", + "description": "Whether to include trend analysis over the specified time range.", + "required": false, + "defaultValue": "true" + }, + { + "name": "detectAnomalies", + "type": "boolean", + "description": "Flag to enable detection and highlighting of anomalies in sales data.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing analyzed sales KPIs, trends, top performers, anomaly reports, and actionable recommendations for improving sales effectiveness." + }, + "aiAgent": { + "useCase": "Use this tool when tasked with evaluating sales dashboards to extract actionable insights from sales KPIs across selected metrics and time periods. Ideal for generating detailed sales performance reports that help refine sales tactics and forecast future trends.", + "limitations": "This tool relies on accurate and complete input sales data and cannot access external CRM systems directly or update the dashboard data sources. It does not perform raw data extraction or integration with third-party platforms.", + "examples": [ + "Analyze sales revenue and conversion rate for Q1 2024 filtered by region 'North America'.", + "Generate a sales performance report for top products over the last 6 months including trend analysis.", + "Detect anomalies in lead conversion rates for a specific sales rep within the last month." + ] + }, + "tags": [ + "sales", + "automation", + "analytics", + "dashboard", + "performance", + "metrics", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"metrics\":[\"revenue\",\"conversionRate\"],\"timeRange\":{\"start\":\"2024-01-01\",\"end\":\"2024-03-31\"},\"filters\":{\"region\":\"North America\"},\"includeTrends\":true,\"detectAnomalies\":true}", + "description": "Analyze revenue and conversion rate in Q1 2024 for North America with trends and anomaly detection." + }, + { + "inputJson": "{\"metrics\":[\"leadCount\",\"closedDeals\"],\"timeRange\":{\"start\":\"2023-10-01\",\"end\":\"2024-03-31\"},\"filters\":{},\"includeTrends\":true,\"detectAnomalies\":false}", + "description": "Evaluate leads and closed deals over the past 6 months with trend analysis only." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Dashboard", + "context": null + } + }, + { + "name": "sales-automation.analyzeTable", + "description": "This tool accepts a sales data table in JSON format and analyzes key sales metrics such as total revenue, lead conversion rates, sales cycle duration, and customer segmentation. It processes the input table to produce a structured summary report highlighting trends, performance indicators, and potential areas for improvement to support sales automation and strategy.", + "category": "sales-automation", + "parameters": [ + { + "name": "salesTable", + "type": "array", + "description": "An array of objects representing sales records, where each record includes fields like leadId, customerSegment, saleAmount, saleDate, and status.", + "required": true, + "defaultValue": "" + }, + { + "name": "dateRange", + "type": "object", + "description": "An object specifying the start and end dates for filtering the sales data to analyze (e.g., {\"start\":\"2023-01-01\",\"end\":\"2023-12-31\"}).", + "required": false, + "defaultValue": "" + }, + { + "name": "groupBy", + "type": "string", + "description": "Optional field name to group analysis results by (e.g., 'customerSegment' or 'region').", + "required": false, + "defaultValue": "" + }, + { + "name": "includeConversionRate", + "type": "boolean", + "description": "Flag to include lead conversion rate statistics in the analysis report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeSalesCycleAnalysis", + "type": "boolean", + "description": "Flag to include average sales cycle duration and related metrics in the summary.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object summarizing analyzed sales metrics including total revenue, conversion rates, sales cycle durations, grouped statistics if requested, and identified trends." + }, + "aiAgent": { + "useCase": "An AI agent should use this tool when it needs to analyze structured sales tabular data to generate summarized insights such as revenue totals, conversion rates, and sales cycle information. This supports automating sales performance evaluation, reporting, and strategy formulation.", + "limitations": "This tool does not generate raw sales forecasts or predictive models. It requires correctly formatted sales data and cannot interpret unstructured or incomplete data tables.", + "examples": [ + "Analyze sales data from the last quarter grouped by customer segment to find conversion rates and revenue.", + "Summarize total sales and average sales cycle duration for leads marked as closed within the current year.", + "Provide a report on sales performance without grouping but including conversion rates." + ] + }, + "tags": [ + "sales", + "automation", + "analysis", + "reporting", + "lead management", + "metrics", + "table" + ], + "examples": [ + { + "inputJson": "{\"salesTable\":[{\"leadId\":\"L001\",\"customerSegment\":\"Enterprise\",\"saleAmount\":50000,\"saleDate\":\"2024-03-15\",\"status\":\"Closed Won\",\"leadCreatedDate\":\"2024-02-01\"},{\"leadId\":\"L002\",\"customerSegment\":\"SMB\",\"saleAmount\":15000,\"saleDate\":\"2024-03-20\",\"status\":\"Closed Lost\",\"leadCreatedDate\":\"2024-01-25\"}],\"dateRange\":{\"start\":\"2024-01-01\",\"end\":\"2024-03-31\"},\"groupBy\":\"customerSegment\",\"includeConversionRate\":true,\"includeSalesCycleAnalysis\":true}", + "description": "Analyze Q1 2024 sales data grouped by customer segment including conversion rates and sales cycle durations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Table", + "context": null + } + }, + { + "name": "sales-automation.analyzeLink", + "description": "Analyzes a given sales-related URL to extract and summarize relevant sales content such as product details, pricing, and promotional offers. Accepts a URL string as input, performs content retrieval and natural language processing to identify key sales information, and returns a structured summary highlighting critical sales elements and potential lead insights.", + "category": "sales-automation", + "parameters": [ + { + "name": "url", + "type": "string", + "description": "The sales-related URL to analyze. Must be a valid, accessible link containing sales or marketing content.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include metadata such as page title, meta description, and keywords in the output summary.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum number of words to include in the sales content summary, to control output length.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "An object containing the extracted sales content summary, main product or service described, pricing details, promotional offers if any, and optional metadata such as page title and keywords." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to quickly extract and summarize actionable sales information from a web link, such as product descriptions or sales offers, facilitating lead qualification or content analysis without manual browsing.", + "limitations": "Cannot analyze private or paywalled content; performance depends on the accessibility and structure of the webpage; does not interact with dynamic or script-heavy pages that require UI rendering.", + "examples": [ + "Analyze the sales page link to extract key product details and pricing.", + "Summarize the promotional offers from this sales URL for lead generation.", + "Get metadata and main sales highlights from a product landing page link." + ] + }, + "tags": [ + "sales", + "automation", + "analysis", + "web-content", + "lead-generation", + "sales-data", + "url-analysis" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://example.com/product123\",\"includeMetadata\":true,\"maxSummaryLength\":150}", + "description": "Analyze a product page URL to extract sales summary, pricing, and metadata with a moderate-length summary." + }, + { + "inputJson": "{\"url\":\"https://promotion.example.com/special-offer\",\"includeMetadata\":false,\"maxSummaryLength\":50}", + "description": "Extract brief promotional offer details from a sales promotion webpage, excluding metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Link", + "context": null + } + }, + { + "name": "sales-automation.analyzeComment", + "description": "Analyzes customer or lead comments to identify sentiment, key topics, and sales intent. Accepts a comment text input and optional metadata. Returns analysis including sentiment score, detected topics, and intent classification to help prioritize and tailor sales follow-up.", + "category": "sales-automation", + "parameters": [ + { + "name": "commentText", + "type": "string", + "description": "The text content of the customer's or lead's comment to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The language code of the comment text for accurate analysis. Defaults to 'en' for English.", + "required": false, + "defaultValue": "en" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional data such as customer ID, timestamp, or context to provide richer analysis.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing sentiment score (range -1 to 1), key topics array, and classified intent string indicating the sales-related purpose of the comment." + }, + "aiAgent": { + "useCase": "Use this tool when processing incoming customer or lead comments in order to automatically understand their emotional tone, identify main topics discussed, and assess their intent regarding sales actions. It helps prioritize leads and tailor responses in sales automation workflows.", + "limitations": "Cannot fully understand highly ambiguous or sarcastic comments; limited by language support specified. Does not provide full conversation context or replace human judgment.", + "examples": [ + "Analyze this customer feedback comment to gauge sentiment and sales intent.", + "Determine the key topics and urgency from this sales inquiry comment.", + "Process a lead's message to classify whether they are willing to purchase, need information, or are just browsing." + ] + }, + "tags": [ + "analysis", + "sales", + "comment", + "sentiment-analysis", + "lead-management", + "intent-detection" + ], + "examples": [ + { + "inputJson": "{\"commentText\":\"I'm really interested in your product but would like to see a demo first.\",\"language\":\"en\"}", + "description": "Detect positive interest and intent to engage from a lead's comment." + }, + { + "inputJson": "{\"commentText\":\"Not happy with the delayed responses last time.\",\"language\":\"en\"}", + "description": "Identify negative sentiment and potential risk for existing customer." + }, + { + "inputJson": "{\"commentText\":\"Can you provide pricing details and bulk order discounts?\",\"language\":\"en\"}", + "description": "Extract intent related to pricing inquiry and possible bulk order interest." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Comment", + "context": null + } + }, + { + "name": "sales-automation.analyzeOpportunity", + "description": "This tool analyzes sales opportunity data provided as input, including deal size, probability, customer engagement metrics, and competitor information. It processes these factors to assess opportunity strength, predict likelihood of closing, and identify potential risks or areas for improvement. The output is a comprehensive report detailing opportunity score, key drivers, and actionable recommendations.", + "category": "sales-automation", + "parameters": [ + { + "name": "opportunityData", + "type": "object", + "description": "Object containing details about the sales opportunity such as dealValue, closeProbability, customerInteractions, competitorPresence, and salesStage.", + "required": true, + "defaultValue": "" + }, + { + "name": "marketContext", + "type": "string", + "description": "Optional description of the current market or industry context relevant to the opportunity.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeRiskAnalysis", + "type": "boolean", + "description": "If true, include detailed risk factors and mitigation suggestions in the analysis report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "confidenceThreshold", + "type": "number", + "description": "A number between 0 and 1 specifying the minimum confidence level to consider the opportunity highly probable to close.", + "required": false, + "defaultValue": "0.75" + } + ], + "returns": { + "type": "object", + "description": "Structured analysis report containing overall opportunity score (0-100), risk level, key factors influencing the outcome, predicted close likelihood, and tailored recommendations for next steps." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent receives opportunity-specific sales data and needs to provide a detailed evaluation to support sales decision-making, prioritizing efforts, or forecasting revenue. Ideal for automating sales pipeline analysis, risk assessment, and opportunity scoring to enhance sales team efficiency.", + "limitations": "This tool cannot access real-time external market data or CRM systems directly and relies solely on the provided input data. It cannot guarantee business outcomes or replace human judgment.", + "examples": [ + "Analyze the opportunity with deal size $500K and 60% close probability based on recent customer meetings.", + "Evaluate the sales deal in the technology sector, considering strong competitor activity and the current economic climate.", + "Provide an opportunity strength report including risk factors for a large enterprise software sale at late sales stage." + ] + }, + "tags": [ + "sales", + "analysis", + "opportunity", + "forecasting", + "risk-assessment", + "automation" + ], + "examples": [ + { + "inputJson": "{\"opportunityData\":{\"dealValue\":500000,\"closeProbability\":0.6,\"customerInteractions\":5,\"competitorPresence\":true,\"salesStage\":\"proposal\"},\"marketContext\":\"Technology sector with moderate growth.\",\"includeRiskAnalysis\":true,\"confidenceThreshold\":0.75}", + "description": "Analyze a mid-sized technology sector deal with moderate close probability and competitor presence, including risk factors." + }, + { + "inputJson": "{\"opportunityData\":{\"dealValue\":1200000,\"closeProbability\":0.85,\"customerInteractions\":8,\"competitorPresence\":false,\"salesStage\":\"negotiation\"},\"includeRiskAnalysis\":false,\"confidenceThreshold\":0.8}", + "description": "Evaluate a large deal deep in negotiation with high close probability and no competitor threat, excluding risk analysis." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Opportunity", + "context": null + } + }, + { + "name": "sales-automation.analyzeRisk", + "description": "Analyzes potential risks in sales leads and accounts by evaluating data such as credit scores, payment history, and market factors. Accepts lead or account data input, processes risk assessment models, and outputs a detailed risk score and categories identifying potential financial or operational risks affecting sales success.", + "category": "sales-automation", + "parameters": [ + { + "name": "leadData", + "type": "object", + "description": "Structured data object containing lead or account information including financial, contact, and transaction history details.", + "required": true, + "defaultValue": "" + }, + { + "name": "riskFactors", + "type": "array", + "description": "List of risk factors or criteria to consider such as credit score thresholds, industry risk levels, or outstanding balances.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeMarketAnalysis", + "type": "boolean", + "description": "Whether to incorporate external market trend and competitor risk data into the analysis.", + "required": false, + "defaultValue": "false" + }, + { + "name": "confidenceThreshold", + "type": "number", + "description": "Minimum confidence level (0-1) for flagging risk issues in the result output.", + "required": false, + "defaultValue": "0.75" + } + ], + "returns": { + "type": "object", + "description": "Risk analysis report including overall risk score (0-1), risk categories flagged, confidence scores for each risk type, and recommended actions for the sales team." + }, + "aiAgent": { + "useCase": "Use this tool when assessing the reliability and riskiness of new or existing sales leads or accounts. Especially helpful in prioritizing outreach and managing exposure to bad debt or fraud. It supports decisions on whether to proceed, request further information, or decline leads based on quantified risk metrics.", + "limitations": "Does not guarantee risk-free leads; depends on quality and completeness of input data. Market analysis may not reflect sudden changes. Not a replacement for compliance checks or legal vetting.", + "examples": [ + "Analyze the credit and payment risk of lead XYZ Corp before scheduling a meeting.", + "Evaluate risk factors for a portfolio of leads to prioritize sales efforts.", + "Determine if a high-value lead shows signs of financial instability based on recent transactions." + ] + }, + "tags": [ + "sales", + "risk-analysis", + "lead-management", + "financial-risk", + "automation" + ], + "examples": [ + { + "inputJson": "{\"leadData\":{\"companyName\":\"XYZ Corp\",\"creditScore\":620,\"paymentHistory\":[{\"date\":\"2024-01-15\",\"amount\":5000,\"status\":\"late\"}],\"industry\":\"manufacturing\",\"outstandingBalance\":12000},\"riskFactors\":[\"creditScore\",\"paymentHistory\",\"outstandingBalance\"],\"includeMarketAnalysis\":true,\"confidenceThreshold\":0.8}", + "description": "Evaluates risk for a manufacturing company lead including payment delays and credit score." + }, + { + "inputJson": "{\"leadData\":{\"companyName\":\"ABC Inc\",\"creditScore\":780,\"paymentHistory\":[{\"date\":\"2024-02-01\",\"amount\":2000,\"status\":\"on-time\"}],\"industry\":\"software\",\"outstandingBalance\":0},\"riskFactors\":[\"creditScore\"],\"includeMarketAnalysis\":false,\"confidenceThreshold\":0.7}", + "description": "Assesses low-risk software industry lead based on strong credit and good payment history." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Risk", + "context": null + } + }, + { + "name": "sales-automation.downloadDataset", + "description": "Downloads a sales dataset based on specified filters such as date range, sales region, and lead source. Accepts parameters to customize data granularity and format, then retrieves and exports the dataset as a CSV or JSON file for further analysis or CRM import.", + "category": "sales-automation", + "parameters": [ + { + "name": "startDate", + "type": "string", + "description": "Start date to filter sales data, in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date to filter sales data, in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "salesRegion", + "type": "array", + "description": "List of sales regions to include in dataset (e.g., ['North America', 'EMEA']).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "leadSource", + "type": "array", + "description": "List of lead sources to filter by (e.g., ['Website', 'Referral']).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeDetails", + "type": "boolean", + "description": "Whether to include detailed lead information (contact info, previous interactions).", + "required": false, + "defaultValue": "false" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the exported dataset file, either 'csv' or 'json'.", + "required": false, + "defaultValue": "csv" + }, + { + "name": "granularity", + "type": "string", + "description": "Level of data aggregation: 'daily', 'weekly', or 'monthly'.", + "required": false, + "defaultValue": "daily" + } + ], + "returns": { + "type": "object", + "description": "An object containing a fileUrl string linking to the downloadable dataset file, plus metadata about the dataset generated." + }, + "aiAgent": { + "useCase": "Use this tool when needing to retrieve historical or current sales data for analysis, reporting, or import into other systems. It allows filtered extraction by date range, region, lead source, and data detail level, supporting export in common formats to automate sales process insights or dashboards.", + "limitations": "Does not perform real-time data streaming, data updating, or integration with external CRMs beyond dataset export. It only fetches pre-aggregated or stored sales data snapshots.", + "examples": [ + "Download sales leads from North America region between 2023-01-01 and 2023-03-31 in CSV format including detailed lead info.", + "Export monthly aggregated sales dataset filtered by referral leads between 2022-10-01 and 2022-12-31 as JSON.", + "Get a weekly sales dataset for all regions excluding detailed info for last quarter in CSV." + ] + }, + "tags": [ + "sales", + "dataset", + "download", + "automation", + "lead management", + "export" + ], + "examples": [ + { + "inputJson": "{\"startDate\":\"2023-01-01\",\"endDate\":\"2023-03-31\",\"salesRegion\":[\"North America\"],\"includeDetails\":true,\"outputFormat\":\"csv\"}", + "description": "Download detailed sales leads for North America from Jan to Mar 2023 as CSV." + }, + { + "inputJson": "{\"startDate\":\"2022-10-01\",\"endDate\":\"2022-12-31\",\"leadSource\":[\"Referral\"],\"granularity\":\"monthly\",\"outputFormat\":\"json\"}", + "description": "Export monthly summarized sales dataset filtered by referral leads for Q4 2022 in JSON." + }, + { + "inputJson": "{\"startDate\":\"2023-04-01\",\"endDate\":\"2023-06-30\",\"granularity\":\"weekly\",\"includeDetails\":false}", + "description": "Get weekly aggregated sales data for all regions with basic info for Q2 2023 in CSV (default)." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Dataset", + "context": null + } + }, + { + "name": "sales-automation.analyzePayment", + "description": "This tool analyzes payment transaction data to provide insights such as payment success rates, failure reasons, average payment amounts, and trends over time. It accepts detailed payment records as input and outputs a structured analysis report for sales and finance teams to optimize payment processes.", + "category": "sales-automation", + "parameters": [ + { + "name": "paymentRecords", + "type": "array", + "description": "List of payment transactions to analyze, each including amount, status, method, and timestamp", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date (ISO 8601) to filter payments for analysis", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date (ISO 8601) to filter payments for analysis", + "required": false, + "defaultValue": "" + }, + { + "name": "groupBy", + "type": "string", + "description": "Field to group results by, such as 'method' or 'status'", + "required": false, + "defaultValue": "status" + } + ], + "returns": { + "type": "object", + "description": "Analysis report including success/failure counts, average amounts, failure reasons breakdown, and trend data" + }, + "aiAgent": { + "useCase": "Use this tool when needing to summarize and gain insights from payment transaction data to identify patterns like payment failures or popular payment methods. Ideal for financial analysis, sales process optimization, or troubleshooting payment issues.", + "limitations": "Does not process raw payment gateway logs directly or initiate payment processing; requires structured transaction data as input.", + "examples": [ + "Analyze payment success rates across different payment methods over the last month.", + "Summarize average payment amounts and identify common failure reasons for recent transactions.", + "Provide trends in payment failures over a custom date range grouped by payment status." + ] + }, + "tags": [ + "sales", + "payment", + "analysis", + "transactions", + "finance", + "automation" + ], + "examples": [ + { + "inputJson": "{\"paymentRecords\":[{\"amount\":100.0,\"status\":\"success\",\"method\":\"credit_card\",\"timestamp\":\"2024-04-01T10:00:00Z\"},{\"amount\":50.0,\"status\":\"failed\",\"method\":\"paypal\",\"timestamp\":\"2024-04-02T12:30:00Z\"},{\"amount\":200.0,\"status\":\"success\",\"method\":\"bank_transfer\",\"timestamp\":\"2024-04-03T15:45:00Z\"}],\"startDate\":\"2024-04-01\",\"endDate\":\"2024-04-30\",\"groupBy\":\"status\"}", + "description": "Analyze payment transaction success and failure counts for April 2024, grouped by payment status." + }, + { + "inputJson": "{\"paymentRecords\":[{\"amount\":75.0,\"status\":\"failed\",\"method\":\"credit_card\",\"timestamp\":\"2024-05-10T09:20:00Z\"},{\"amount\":150.0,\"status\":\"success\",\"method\":\"credit_card\",\"timestamp\":\"2024-05-11T14:00:00Z\"}],\"groupBy\":\"method\"}", + "description": "Summarize payment amounts and success rates grouped by payment method for recent transactions." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Payment", + "context": null + } + }, + { + "name": "sales-automation.downloadJSON", + "description": "This tool downloads sales lead or opportunity data from a specified sales platform or CRM as JSON format. It accepts parameters such as source platform credentials, query filters, and export options, then fetches and returns the matching sales data structured in JSON for easy integration with other systems or analysis.", + "category": "sales-automation", + "parameters": [ + { + "name": "platform", + "type": "string", + "description": "The sales platform or CRM system to download data from (e.g., Salesforce, HubSpot).", + "required": true, + "defaultValue": "" + }, + { + "name": "apiKey", + "type": "string", + "description": "API key or token for authenticating with the sales platform.", + "required": true, + "defaultValue": "" + }, + { + "name": "queryFilters", + "type": "object", + "description": "Filters to apply when querying sales data, such as date range, lead status, or opportunity stage.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "dataType", + "type": "string", + "description": "Type of sales data to download: 'leads', 'opportunities', or 'contacts'.", + "required": true, + "defaultValue": "leads" + }, + { + "name": "includeArchived", + "type": "boolean", + "description": "Whether to include archived or closed records in the download.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxRecords", + "type": "number", + "description": "Maximum number of records to retrieve in the download.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing an array of sales data records formatted as JSON objects matching the query filters." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically export filtered sales data from a CRM or sales platform into JSON format for downstream processing, reporting, or integration with analytics systems. It is ideal for automating lead or opportunity data collection without manual export steps.", + "limitations": "This tool cannot update or modify sales data; it only downloads existing data. It requires valid API credentials and the selected platform must support data exports via API. Large datasets may require pagination handled externally.", + "examples": [ + "Download all new leads from Salesforce from last month as JSON.", + "Fetch up to 500 open opportunities from HubSpot including archived records.", + "Retrieve contacts from a sales platform filtered by industry sector." + ] + }, + "tags": [ + "sales", + "automation", + "data export", + "CRM", + "lead management", + "API", + "JSON" + ], + "examples": [ + { + "inputJson": "{\"platform\":\"Salesforce\",\"apiKey\":\"abc123\",\"queryFilters\":{\"createdDate\":{\"from\":\"2024-05-01\",\"to\":\"2024-05-31\"},\"status\":\"New\"},\"dataType\":\"leads\",\"includeArchived\":false,\"maxRecords\":200}", + "description": "Download up to 200 new leads created in May 2024 from Salesforce excluding archived records." + }, + { + "inputJson": "{\"platform\":\"HubSpot\",\"apiKey\":\"token_xyz\",\"queryFilters\":{\"stage\":\"Open\"},\"dataType\":\"opportunities\",\"includeArchived\":true,\"maxRecords\":500}", + "description": "Fetch up to 500 open and archived opportunities from HubSpot." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "JSON", + "context": null + } + }, + { + "name": "sales-automation.downloadImage", + "description": "Downloads an image from a given URL or from a sales-related online resource, allowing sales automation tools to fetch media assets such as product images, promotional banners, or lead-related visuals. The tool accepts a URL or resource identifier and returns the image data or a saved file path.", + "category": "sales-automation", + "parameters": [ + { + "name": "imageUrl", + "type": "string", + "description": "The URL of the image to download. Required if resourceId is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "resourceId", + "type": "string", + "description": "Identifier for an image resource in a connected sales platform or CMS. Used if imageUrl is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileName", + "type": "string", + "description": "Optional desired file name to save the image as locally or in storage. If omitted, a default or original file name is used.", + "required": false, + "defaultValue": "" + }, + { + "name": "saveToLocal", + "type": "boolean", + "description": "Flag indicating whether to save the downloaded image locally (true) or just return image data (false).", + "required": false, + "defaultValue": "true" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Timeout in seconds for the download operation. Defaults to 30 seconds.", + "required": false, + "defaultValue": "30" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the status of the download, local file path if saved, image metadata such as size and format, or error details if failed." + }, + "aiAgent": { + "useCase": "Use this tool when automating sales workflows that require retrieving images for leads, marketing materials, or product information, such as attaching images to CRM entries or generating sales presentations. It streamlines access to media assets within automated sales processes.", + "limitations": "Does not perform image format conversions beyond what's intrinsically supported by the source. Cannot download images behind authentication without additional credential support. Not for bulk mass download without rate limiting.", + "examples": [ + "Download product image from a URL to attach to a sales lead profile.", + "Fetch promotional banner images from a CMS resource ID to include in automated newsletters.", + "Retrieve and save lead profile pictures from a sales platform for enrichment." + ] + }, + "tags": [ + "sales", + "automation", + "image", + "download", + "media", + "crm", + "marketing", + "asset-management" + ], + "examples": [ + { + "inputJson": "{\"imageUrl\":\"https://example.com/images/product123.jpg\",\"fileName\":\"product123.jpg\",\"saveToLocal\":true}", + "description": "Download product image from URL and save locally with specified file name." + }, + { + "inputJson": "{\"resourceId\":\"promoBanner987\",\"saveToLocal\":false}", + "description": "Download promotional banner image from connected sales platform by resource identifier and return image data without saving." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Image", + "context": null + } + }, + { + "name": "sales-automation.uploadJSON", + "description": "Uploads sales lead data in JSON format to the CRM system, validating and processing the input leads to create or update entries, and returning a summary report of the operation including successes and errors.", + "category": "sales-automation", + "parameters": [ + { + "name": "jsonData", + "type": "string", + "description": "The JSON string containing an array of sales lead objects to be uploaded. Each lead should include necessary fields like name, email, and contact info.", + "required": true, + "defaultValue": "" + }, + { + "name": "updateExisting", + "type": "boolean", + "description": "Whether to update existing leads if a matching identifier is found (true) or skip duplicates (false).", + "required": false, + "defaultValue": "true" + }, + { + "name": "crmEndpoint", + "type": "string", + "description": "The API endpoint URL of the CRM system where the data should be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Authentication token or API key required to authorize the upload request to the CRM system.", + "required": true, + "defaultValue": "" + }, + { + "name": "validateOnly", + "type": "boolean", + "description": "If true, the tool only validates the JSON data without uploading it, returning validation results.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An upload summary object containing total leads processed, number successfully uploaded or updated, an array of errors for failed records, and an overall status message." + }, + "aiAgent": { + "useCase": "Use this tool when given sales lead data in JSON format that needs to be integrated into a CRM system for follow-up and lead management. It is particularly suitable when the agent must ensure data validity before bulk inserting or updating leads automatically.", + "limitations": "This tool does not parse other formats like CSV or XML; it requires correctly structured JSON input. It cannot generate leads or enrich data, only upload it. It also depends on provided CRM endpoint and valid authorization.", + "examples": [ + "Upload a JSON array of new leads to the CRM, updating existing entries if duplicates are found.", + "Validate a JSON lead dataset before a bulk upload to detect errors without modifying the CRM.", + "Upload leads specifying a custom API endpoint and authentication token for a particular sales system." + ] + }, + "tags": [ + "sales", + "automation", + "CRM", + "upload", + "JSON", + "lead management", + "data validation" + ], + "examples": [ + { + "inputJson": "{\"jsonData\":\"[{\\\"name\\\":\\\"Alice Johnson\\\",\\\"email\\\":\\\"alice@example.com\\\",\\\"phone\\\":\\\"+1234567890\\\"},{\\\"name\\\":\\\"Bob Smith\\\",\\\"email\\\":\\\"bob@example.com\\\",\\\"phone\\\":\\\"+0987654321\\\"}]\",\"updateExisting\":true,\"crmEndpoint\":\"https://api.crmexample.com/leads\",\"authToken\":\"abcdef12345\",\"validateOnly\":false}", + "description": "Uploading two new leads with update on duplicates enabled to the specified CRM endpoint." + }, + { + "inputJson": "{\"jsonData\":\"[{\\\"name\\\":\\\"Charlie Brown\\\",\\\"email\\\":\\\"charlie@invalid\\\"}]\",\"updateExisting\":false,\"crmEndpoint\":\"https://api.crmexample.com/leads\",\"authToken\":\"abcdef12345\",\"validateOnly\":true}", + "description": "Validating a single lead with an invalid email to check for data errors before upload." + }, + { + "inputJson": "{\"jsonData\":\"[{\\\"name\\\":\\\"Dana Lee\\\",\\\"email\\\":\\\"dana@example.com\\\",\\\"phone\\\":\\\"+1122334455\\\"}]\",\"updateExisting\":false,\"crmEndpoint\":\"https://custom.crm.com/api/leads\",\"authToken\":\"token6789\",\"validateOnly\":false}", + "description": "Uploading a single lead without updating existing entries, using custom CRM endpoint and auth token." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "JSON", + "context": null + } + }, + { + "name": "sales-automation.formatWord", + "description": "Formats a given word or term according to specified sales-oriented style rules, such as capitalization style, prefix/suffix addition, and punctuation adjustments. It accepts a word and formatting options, processes these instructions, and returns the formatted word string suited for sales automation documents or communications.", + "category": "sales-automation", + "parameters": [ + { + "name": "word", + "type": "string", + "description": "The input word or term to format.", + "required": true, + "defaultValue": "" + }, + { + "name": "capitalize", + "type": "string", + "description": "Capitalization style to apply: 'none', 'first', 'all' (none=leave as is, first=capitalize first letter, all=uppercase all letters).", + "required": false, + "defaultValue": "none" + }, + { + "name": "prefix", + "type": "string", + "description": "A string to prepend to the word (e.g., '$', 'Re:', 'New ').", + "required": false, + "defaultValue": "" + }, + { + "name": "suffix", + "type": "string", + "description": "A string to append to the word (e.g., '%', ' Inc.').", + "required": false, + "defaultValue": "" + }, + { + "name": "trimWhitespace", + "type": "boolean", + "description": "Whether to trim leading and trailing whitespace from the input word before formatting.", + "required": false, + "defaultValue": "true" + }, + { + "name": "addPeriod", + "type": "boolean", + "description": "Whether to append a period '.' at the end if not already present.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted word string under the 'formattedWord' property." + }, + "aiAgent": { + "useCase": "Use this tool when you need to standardize or stylize single words or terms in sales automation contexts, such as formatting pricing tags, product names, discount codes, or captions in automated messages and documents to ensure consistent presentation.", + "limitations": "This tool only formats single words or short terms. It does not handle phrases, sentences, or complex text formatting such as font styles, colors, or markdown. It does not validate spelling or semantic correctness.", + "examples": [ + "Format the word 'discount' by capitalizing the first letter and adding a '%' suffix.", + "Format the word ' revenue' by trimming whitespace and converting all letters to uppercase.", + "Format the word 'offer' by adding prefix 'New ' and suffix '!' with first letter capitalized." + ] + }, + "tags": [ + "sales", + "formatting", + "word", + "text-processing", + "automation" + ], + "examples": [ + { + "inputJson": "{\"word\":\" discount \",\"capitalize\":\"first\",\"prefix\":\"\",\"suffix\":\"%\",\"trimWhitespace\":true,\"addPeriod\":false}", + "description": "Trim whitespace from ' discount ', capitalize first letter, and add suffix '%'." + }, + { + "inputJson": "{\"word\":\"revenue\",\"capitalize\":\"all\",\"prefix\":\"$\",\"suffix\":\"\",\"trimWhitespace\":false,\"addPeriod\":true}", + "description": "Convert 'revenue' to uppercase, add '$' prefix, and add a period at the end if missing." + }, + { + "inputJson": "{\"word\":\"offer\",\"capitalize\":\"first\",\"prefix\":\"New \",\"suffix\":\"!\",\"trimWhitespace\":true,\"addPeriod\":false}", + "description": "Trim whitespace, capitalize first letter of 'offer', add 'New ' prefix and '!' suffix." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Word", + "context": null + } + }, + { + "name": "sales-automation.renderReport", + "description": "Generates a customizable sales report by processing input sales data, filter criteria, and template preferences. It accepts structured sales records and parameters for date range, metrics selection, and output format, then compiles and renders a formatted report summarizing sales performance.", + "category": "sales-automation", + "parameters": [ + { + "name": "salesData", + "type": "array", + "description": "Array of sales record objects including info like date, amount, product, and sales rep.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date (ISO 8601) for filtering sales data included in the report.", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date (ISO 8601) for filtering sales data included in the report.", + "required": false, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "List of desired metrics to include in the report (e.g., totalSales, averageDealSize).", + "required": false, + "defaultValue": "[\"totalSales\", \"averageDealSize\"]" + }, + { + "name": "groupBy", + "type": "string", + "description": "Category by which to group the report data, such as 'salesRep', 'region', or 'product'.", + "required": false, + "defaultValue": "salesRep" + }, + { + "name": "includeCharts", + "type": "boolean", + "description": "Whether to include graphical charts visualizing the metrics in the rendered report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Output format of the report, such as 'pdf', 'html', or 'markdown'.", + "required": false, + "defaultValue": "pdf" + } + ], + "returns": { + "type": "object", + "description": "An object containing the rendered report content as a string and metadata including format and generation timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when detailed, customized sales performance reports are needed based on raw sales data inputs. Ideal for generating summaries grouped by relevant categories, with selectable metrics and date filters, providing formatted reports ready for review or distribution.", + "limitations": "This tool does not perform sales data validation or cleaning; input data must be pre-processed. It cannot execute complex predictive analytics or real-time data streaming. It also cannot customize report templates beyond the predefined grouping, metrics, and output format options.", + "examples": [ + "Create a sales report for Q1 2024 grouped by region including total sales and average deal size, output as PDF.", + "Generate an HTML report of sales grouped by product between January and March 2024 including charts for total sales.", + "Render a markdown sales report grouped by sales rep without charts for the entire sales dataset." + ] + }, + "tags": [ + "sales", + "reporting", + "automation", + "data-processing", + "summary", + "visualization" + ], + "examples": [ + { + "inputJson": "{\"salesData\":[{\"date\":\"2024-03-15\",\"amount\":15000,\"product\":\"Product A\",\"salesRep\":\"Alice\"},{\"date\":\"2024-03-20\",\"amount\":20000,\"product\":\"Product B\",\"salesRep\":\"Bob\"}],\"startDate\":\"2024-03-01\",\"endDate\":\"2024-03-31\",\"metrics\":[\"totalSales\",\"averageDealSize\"],\"groupBy\":\"salesRep\",\"includeCharts\":true,\"outputFormat\":\"pdf\"}", + "description": "Generate a March 2024 sales report grouped by sales representative including total sales and average deal size with charts in PDF format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Report", + "context": null + } + }, + { + "name": "sales-automation.formatJSON", + "description": "Formats sales-related JSON data records according to customizable rules such as indentation, key sorting, and selective key inclusion. Accepts raw JSON strings representing sales leads or contacts, processes formatting preferences, and outputs a clean, standardized JSON string for easier readability and downstream processing.", + "category": "sales-automation", + "parameters": [ + { + "name": "jsonString", + "type": "string", + "description": "Raw JSON string containing sales data to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "indentation", + "type": "number", + "description": "Number of spaces to use for indentation in the output JSON for readability.", + "required": false, + "defaultValue": "2" + }, + { + "name": "sortKeys", + "type": "boolean", + "description": "Whether to alphabetically sort the keys in each JSON object.", + "required": false, + "defaultValue": "false" + }, + { + "name": "includeKeys", + "type": "array", + "description": "List of keys to include in the output JSON objects. If empty or omitted, all keys are included.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "excludeKeys", + "type": "array", + "description": "List of keys to exclude from the output JSON objects. Applied after includeKeys filter.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted JSON string under 'formattedJson' key or an error message under 'error' key if the input was invalid." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to present or process sales-related JSON data such as leads, contacts, or opportunities in a standardized and human-readable format. It helps clean up unformatted JSON inputs, enforce consistent key ordering, and filter data fields to meet downstream requirements or display constraints.", + "limitations": "This tool only formats JSON strings and filters keys; it does not validate data semantics, transform data types, or enrich the content. It also assumes input is valid JSON; invalid JSON will cause an error.", + "examples": [ + "Format a messy JSON string of sales leads with 4 space indentation and sorted keys.", + "Format a contacts JSON excluding sensitive fields like 'ssn' and 'creditCard'.", + "Format opportunity records showing only key info: 'id', 'name', 'value', and 'stage'." + ] + }, + "tags": [ + "sales", + "json", + "formatting", + "automation", + "data-cleaning", + "lead-management" + ], + "examples": [ + { + "inputJson": "{\"jsonString\":\"{\\\"name\\\":\\\"John Doe\\\", \\\"email\\\":\\\"john@example.com\\\", \\\"lead_score\\\":85, \\\"source\\\":\\\"web\\\"}\",\"indentation\":4,\"sortKeys\":true}", + "description": "Format a single lead with 4 spaces indentation and alphabetically sorted keys." + }, + { + "inputJson": "{\"jsonString\":\"[{\\\"id\\\":1,\\\"name\\\":\\\"Alice\\\",\\\"email\\\":\\\"alice@example.com\\\",\\\"ssn\\\":\\\"123-45-6789\\\"},{\\\"id\\\":2,\\\"name\\\":\\\"Bob\\\",\\\"email\\\":\\\"bob@example.com\\\",\\\"ssn\\\":\\\"987-65-4321\\\"}]\",\"excludeKeys\":[\"ssn\"]}", + "description": "Format an array of contact objects excluding the sensitive 'ssn' field." + }, + { + "inputJson": "{\"jsonString\":\"[{\\\"id\\\":101,\\\"name\\\":\\\"Big Deal\\\",\\\"value\\\":100000,\\\"stage\\\":\\\"proposal\\\",\\\"owner\\\":\\\"Jane\\\"}]\",\"includeKeys\":[\"id\",\"name\",\"value\",\"stage\"]}", + "description": "Format opportunity records showing only essential fields." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "JSON", + "context": null + } + }, + { + "name": "sales-automation.uploadDataset", + "description": "Uploads a sales dataset in CSV or JSON format to the sales automation system, validating and processing the data to integrate leads, contacts, or opportunities for further sales analysis and automation tasks. Returns a summary of upload status and data quality issues if any.", + "category": "sales-automation", + "parameters": [ + { + "name": "datasetContent", + "type": "string", + "description": "The raw content of the dataset to upload, as a string in CSV or JSON format.", + "required": true, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "The format of the dataset being uploaded, either 'csv' or 'json'.", + "required": true, + "defaultValue": "" + }, + { + "name": "updateExisting", + "type": "boolean", + "description": "Whether to update existing records if duplicates are found (true) or skip duplicates (false).", + "required": false, + "defaultValue": "false" + }, + { + "name": "validateOnly", + "type": "boolean", + "description": "If true, only validate the dataset without uploading it.", + "required": false, + "defaultValue": "false" + }, + { + "name": "source", + "type": "string", + "description": "Optional source identifier for tracking the origin of the dataset upload.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Summary object including success status, number of records processed, records created, updated, skipped, and a list of validation errors if any." + }, + "aiAgent": { + "useCase": "Use this tool when you need to import bulk sales data from external sources into the sales automation system for lead management or sales analysis. It is ideal for automating data ingestion workflows or integrating with external CRM exports.", + "limitations": "This tool does not perform advanced data cleansing or transformation beyond basic validation. It cannot upload data formats other than CSV or JSON. It also does not handle API authentication or scheduling of uploads.", + "examples": [ + "Upload a CSV file containing new sales leads with instructions to update duplicates.", + "Validate a JSON dataset for correctness before attempting a full upload.", + "Upload a dataset marking its source as 'monthly CRM export' for auditing purposes." + ] + }, + "tags": [ + "sales", + "upload", + "dataset", + "automation", + "lead-management", + "csv", + "json" + ], + "examples": [ + { + "inputJson": "{\"datasetContent\":\"name,email,phone\\nJohn Doe,john@example.com,1234567890\\nJane Smith,jane@example.com,0987654321\",\"format\":\"csv\",\"updateExisting\":true,\"validateOnly\":false,\"source\":\"crm_export_march\"}", + "description": "Upload a CSV dataset of leads with updating duplicates enabled from a CRM export source." + }, + { + "inputJson": "{\"datasetContent\":\"[{\\\"name\\\":\\\"Alice Johnson\\\",\\\"email\\\":\\\"alice@example.com\\\",\\\"phone\\\":\\\"5555555555\\\"}]\",\"format\":\"json\",\"updateExisting\":false,\"validateOnly\":true,\"source\":\"\"}", + "description": "Validate a JSON dataset containing new lead without uploading it." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Dataset", + "context": null + } + }, + { + "name": "sales-automation.formatText", + "description": "Formats raw sales-related text content such as emails, proposals, or lead notes by applying customizable styling options including capitalization, bullet points, line spacing, and insertion of sales-specific templates. Accepts plain text input and formatting preferences, and outputs the transformed, polished text ready for sales communications.", + "category": "sales-automation", + "parameters": [ + { + "name": "inputText", + "type": "string", + "description": "The raw sales text content to be formatted (e.g., an email draft or lead notes).", + "required": true, + "defaultValue": "" + }, + { + "name": "capitalizeSentences", + "type": "boolean", + "description": "Whether to capitalize the first letter of each sentence in the input text.", + "required": false, + "defaultValue": "true" + }, + { + "name": "useBullets", + "type": "boolean", + "description": "If true, converts line-separated items into bullet points for clarity in lists or proposals.", + "required": false, + "defaultValue": "false" + }, + { + "name": "lineSpacing", + "type": "number", + "description": "Number of line breaks to insert between paragraphs or sections (1=single spaced).", + "required": false, + "defaultValue": "1" + }, + { + "name": "insertTemplate", + "type": "string", + "description": "Optional name of a sales text template to prepend or append (e.g., 'followUp', 'introduction'). Use empty string to skip.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formattedText string with the applied styles and templates." + }, + "aiAgent": { + "useCase": "Use this tool when needing to convert raw or unstructured sales text content into polished, professional formats suitable for customer communications, proposals, or lead follow-ups. It automates applying consistent styling and structure to sales texts, saving manual formatting time and improving message clarity.", + "limitations": "This tool does not generate new sales content or rewrite text for tone or style beyond structural formatting. It cannot handle complex language understanding or content sentiment adjustments.", + "examples": [ + "Format my rough sales email draft to capitalize sentences and add bullet points for the product features list.", + "Convert my notes about a lead into a clean, spaced format using the 'followUp' template.", + "Apply single line spacing and no bullets to a sales proposal text block." + ] + }, + "tags": [ + "sales", + "text", + "formatting", + "automation", + "communication", + "lead management" + ], + "examples": [ + { + "inputJson": "{\"inputText\":\"hello potential client\\nour product offers several benefits\\n- easy integration\\n- fast support\\nplease consider our offer\",\"capitalizeSentences\":true,\"useBullets\":true,\"lineSpacing\":1,\"insertTemplate\":\"\"}", + "description": "Capitalizes sentences and formats list items with bullets in a sales email draft." + }, + { + "inputJson": "{\"inputText\":\"thank you for your time\\nwe hope to speak soon\",\"capitalizeSentences\":false,\"useBullets\":false,\"lineSpacing\":2,\"insertTemplate\":\"followUp\"}", + "description": "Formats a short thank you note with double line spacing and adds a follow-up sales template." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Text", + "context": null + } + }, + { + "name": "sales-automation.formatDataset", + "description": "Formats sales lead datasets by standardizing field names, data types, and cleaning entries to ensure consistency and readiness for analysis or CRM import. Accepts datasets as JSON arrays of objects, applies transformations based on specified options, and outputs a cleaned, formatted dataset in JSON.", + "category": "sales-automation", + "parameters": [ + { + "name": "dataset", + "type": "array", + "description": "Array of lead data objects to be formatted; each object represents a lead with multiple fields.", + "required": true, + "defaultValue": "" + }, + { + "name": "fieldMappings", + "type": "object", + "description": "Mapping of input field names to standardized field names to unify dataset schema.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "dateFields", + "type": "array", + "description": "List of field names that should be parsed and formatted as ISO date strings.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "removeDuplicates", + "type": "boolean", + "description": "Whether to remove duplicate leads based on a unique identifier field (e.g., email).", + "required": false, + "defaultValue": "true" + }, + { + "name": "uniqueIdField", + "type": "string", + "description": "Name of the field to consider as unique identifier when removing duplicates.", + "required": false, + "defaultValue": "email" + }, + { + "name": "cleanPhoneNumbers", + "type": "boolean", + "description": "Flag to format and standardize phone number fields if present.", + "required": false, + "defaultValue": "true" + }, + { + "name": "defaultValues", + "type": "object", + "description": "Default values to set for missing fields in each lead record.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "array", + "description": "Array of formatted lead objects with standardized fields, consistent data types, and cleaned entries, ready for analysis or import." + }, + "aiAgent": { + "useCase": "Use this tool when you have raw sales leads data with inconsistent field names, data types, or formatting and you need to standardize and clean it before importing to CRM systems or performing analytics. It is ideal for integrating disparate sales datasets to a uniform schema and ensuring data quality.", + "limitations": "This tool cannot validate the accuracy of lead data beyond basic formatting and deduplication. It requires predefined mappings and field lists for best results and does not perform complex data enrichment or prediction.", + "examples": [ + "Format a raw JSON lead dataset by standardizing field names and removing duplicates based on email.", + "Clean and format sales leads including converting date strings to ISO format and normalizing phone numbers.", + "Apply default values for missing fields and unify dataset schema with custom field mappings." + ] + }, + "tags": [ + "sales", + "automation", + "dataset", + "formatting", + "lead-management", + "data-cleaning", + "crm" + ], + "examples": [ + { + "inputJson": "{\"dataset\":[{\"Name\":\"John Smith\",\"Email\":\"john.smith@example.com\",\"SignupDate\":\"03/12/2023\",\"Phone\":\"(555) 123-4567\"},{\"Name\":\"Jane Doe\",\"Email\":\"jane.doe@example.com\",\"SignupDate\":\"12-01-2023\",\"Phone\":\"5551234568\"}],\"fieldMappings\":{\"Name\":\"fullName\",\"Email\":\"email\",\"SignupDate\":\"signupDate\",\"Phone\":\"phoneNumber\"},\"dateFields\":[\"signupDate\"],\"removeDuplicates\":true,\"uniqueIdField\":\"email\",\"cleanPhoneNumbers\":true,\"defaultValues\":{\"status\":\"new\"}}", + "description": "Standardizes a lead dataset by renaming fields, formatting dates and phone numbers, setting default status, and removing duplicates by email." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Dataset", + "context": null + } + }, + { + "name": "sales-automation.formatTest", + "description": "Formats sales automation test scripts by taking raw test code input, applying standardized formatting and beautification rules aligned with best practices, and producing clean, readable, and consistent test code output suitable for review or execution.", + "category": "sales-automation", + "parameters": [ + { + "name": "testCode", + "type": "string", + "description": "Raw test script code as a string that needs formatting to improve readability and compliance with style guidelines.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language or framework of the test code (e.g., 'JavaScript', 'TypeScript', 'Python').", + "required": false, + "defaultValue": "JavaScript" + }, + { + "name": "indentSize", + "type": "number", + "description": "Number of spaces to use for indentation in the formatted output.", + "required": false, + "defaultValue": "2" + }, + { + "name": "useTabs", + "type": "boolean", + "description": "Whether to use tabs instead of spaces for indentation.", + "required": false, + "defaultValue": "false" + }, + { + "name": "lineWidth", + "type": "number", + "description": "Maximum line length before wrapping code to a new line.", + "required": false, + "defaultValue": "80" + }, + { + "name": "sortImports", + "type": "boolean", + "description": "Whether to alphabetically sort import statements in the test code.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted test code string under the field 'formattedCode' and optionally an array of warnings or notes regarding formatting." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent receives unformatted or poorly formatted test code related to sales automation scenarios and needs to normalize and beautify it for readability, consistency, or further processing such as code analysis or execution.", + "limitations": "This tool does not validate the correctness or functionality of test code logic, nor does it execute the test. It only reformats code style aspects.", + "examples": [ + "Format this raw sales test script for readability.", + "Beautify my sales automation test code with 4 spaces indentation.", + "Sort imports and format the test code to 100 character line width." + ] + }, + "tags": [ + "sales", + "automation", + "testing", + "formatting", + "code", + "beautification", + "testScripts" + ], + "examples": [ + { + "inputJson": "{\"testCode\":\"describe('Sales Test',()=>{it('should create lead',()=>{expect(createLead()).toBe(true);});});\",\"language\":\"JavaScript\",\"indentSize\":2,\"useTabs\":false,\"lineWidth\":80,\"sortImports\":true}", + "description": "Formats a simple JavaScript sales test code snippet to a clean standard style using 2 space indentation." + }, + { + "inputJson": "{\"testCode\":\"import B from './b';import A from './a';describe('Lead Creation',()=>{it('valid input',()=>{expect(createLead()).toBeTruthy();});});\",\"language\":\"JavaScript\",\"indentSize\":4,\"useTabs\":false,\"lineWidth\":100,\"sortImports\":true}", + "description": "Formats JavaScript test code with 4 space indent and sorted imports alphabetically." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Test", + "context": null + } + }, + { + "name": "sales-automation.draftReport", + "description": "Generates a comprehensive sales report draft based on specified criteria such as date range, sales team member, and product categories. It processes raw sales data inputs, applies filters, and summarizes key metrics, producing a structured textual report outline for review or further customization.", + "category": "sales-automation", + "parameters": [ + { + "name": "startDate", + "type": "string", + "description": "The start date for the sales data to include in the report (ISO 8601 format, e.g. 2023-01-01).", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "The end date for the sales data to include in the report (ISO 8601 format, e.g. 2023-01-31).", + "required": true, + "defaultValue": "" + }, + { + "name": "salesTeamMemberIds", + "type": "array", + "description": "Optional list of sales team member IDs to filter the report by specific individuals. If empty, includes all.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "productCategoryIds", + "type": "array", + "description": "Optional list of product category IDs to include in the report. If empty, includes all categories.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Flag to include a summary section with key insights and highlights in the report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code (e.g., USD, EUR) for monetary figures in the report. Defaults to USD.", + "required": false, + "defaultValue": "USD" + } + ], + "returns": { + "type": "object", + "description": "An object containing the textual draft of the sales report including sections for overview, detailed sales data, and optional summary highlights." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a preliminary sales report draft automatically from raw sales data filtered by date, team members, or product categories to assist sales managers in reviewing or presenting sales performance quickly.", + "limitations": "Cannot replace detailed human analysis or integrate external data sources beyond supplied parameters; report content is a draft and should be validated manually.", + "examples": [ + "Generate a sales report draft for January 2024 for the entire sales team.", + "Draft a sales report from last quarter focusing on product categories Electronics and Software.", + "Create a report including only sales made by specific team members in currency EUR." + ] + }, + "tags": [ + "sales", + "automation", + "reporting", + "sales-report", + "drafting", + "data-summary" + ], + "examples": [ + { + "inputJson": "{\"startDate\":\"2024-01-01\",\"endDate\":\"2024-01-31\",\"salesTeamMemberIds\":[],\"productCategoryIds\":[],\"includeSummary\":true,\"currency\":\"USD\"}", + "description": "Generate a full sales report for January 2024 with summary in USD." + }, + { + "inputJson": "{\"startDate\":\"2023-10-01\",\"endDate\":\"2023-12-31\",\"salesTeamMemberIds\":[\"TM123\",\"TM456\"],\"productCategoryIds\":[\"PC789\"],\"includeSummary\":false,\"currency\":\"EUR\"}", + "description": "Draft report for Q4 2023 focusing on specified team members and product category without summary, in EUR." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Report", + "context": null + } + }, + { + "name": "sales-automation.formatAPI", + "description": "Formats a sales automation API request or response object to comply with a specified sales CRM system's API specifications. Accepts raw JSON data representing sales leads, contacts, or deals, applies transformation rules and field mappings, and outputs a correctly structured API payload ready for integration with the target CRM system.", + "category": "sales-automation", + "parameters": [ + { + "name": "inputData", + "type": "object", + "description": "The raw JSON object representing sales data (e.g., lead, contact, deal) to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetCRM", + "type": "string", + "description": "The target CRM system name (e.g., 'Salesforce', 'HubSpot', 'Zoho') for which the API data should be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataType", + "type": "string", + "description": "Type of sales data to format, such as 'lead', 'contact', or 'deal'.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeOptionalFields", + "type": "boolean", + "description": "Whether to include optional fields defined by the target CRM's API schema in the formatted output.", + "required": false, + "defaultValue": "false" + }, + { + "name": "apiVersion", + "type": "string", + "description": "Specific version of the target CRM API to format data for; defaults to current stable version if omitted.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A JSON object fully formatted according to the target CRM API specification, ready for API submission or integration." + }, + "aiAgent": { + "useCase": "Use this tool when you have raw sales data objects that need to be converted into the exact JSON schema required for different CRM sales automation APIs. It enables seamless integration and data interchange with sales platforms by automatically mapping fields and formatting nested structures as per CRM standards.", + "limitations": "Cannot perform data validation beyond formatting rules; does not handle API authentication, request sending, or error responses. Only supports predefined CRMs and may not reflect latest undocumented schema changes.", + "examples": [ + "Format a raw lead object for Salesforce API v50 with optional fields included.", + "Convert a contact JSON payload into HubSpot CRM API formatting for version 3.", + "Prepare a sales deal object for Zoho CRM API without optional fields for a quick integration test." + ] + }, + "tags": [ + "sales", + "automation", + "API", + "formatting", + "CRM", + "integration", + "data transformation" + ], + "examples": [ + { + "inputJson": "{\"inputData\":{\"firstName\":\"Jane\",\"lastName\":\"Doe\",\"email\":\"jane.doe@example.com\",\"company\":\"Acme Corp\"},\"targetCRM\":\"Salesforce\",\"dataType\":\"lead\",\"includeOptionalFields\":true,\"apiVersion\":\"50.0\"}", + "description": "Format a raw lead object with basic contact info for Salesforce API version 50.0 including optional fields." + }, + { + "inputJson": "{\"inputData\":{\"email\":\"john.smith@example.com\",\"phoneNumber\":\"123-456-7890\"},\"targetCRM\":\"HubSpot\",\"dataType\":\"contact\",\"includeOptionalFields\":false,\"apiVersion\":\"\"}", + "description": "Format a contact JSON for HubSpot CRM, using the default API version and excluding optional fields." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "API", + "context": null + } + }, + { + "name": "sales-automation.formatContract", + "description": "Formats a sales contract document by applying predefined or custom templates, adjusting layout elements, standardizing terminology, and preparing the contract text for final review or electronic delivery. Accepts raw contract text or JSON structured content and outputs a formatted document string.", + "category": "sales-automation", + "parameters": [ + { + "name": "contractContent", + "type": "string", + "description": "The raw contract text or JSON string representing contract clauses and metadata to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "templateName", + "type": "string", + "description": "Name of the formatting template to apply, such as 'standardSales' or 'enterpriseDeal'.", + "required": false, + "defaultValue": "standardSales" + }, + { + "name": "includeSignatureBlock", + "type": "boolean", + "description": "Whether to add a signature block with placeholders for client and sales representative signatures.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired output format of the formatted contract, e.g., 'plainText', 'HTML', or 'PDF'.", + "required": false, + "defaultValue": "plainText" + }, + { + "name": "customStyles", + "type": "object", + "description": "Optional styles overriding default template styles such as fonts, colors, or spacing.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted contract document as a string, along with metadata such as applied template and output format." + }, + "aiAgent": { + "useCase": "Use this tool when preparing sales contract documents for presentation or sending, ensuring they meet company style standards and include necessary elements like signature blocks. It automates the formatting step following contract drafting or data input.", + "limitations": "Cannot generate contract content or legal terms; only formats existing contract text/structure. Does not perform legal validation or negotiation.", + "examples": [ + "Format a raw contract text into a standardized sales contract with signature placeholders in plain text format.", + "Convert structured contract JSON content into a polished HTML document using a custom enterprise template.", + "Produce a PDF formatted sales contract applying company branding and including signature blocks." + ] + }, + "tags": [ + "sales", + "contract", + "formatting", + "automation", + "document", + "template", + "legal", + "crm" + ], + "examples": [ + { + "inputJson": "{\"contractContent\":\"This is a draft contract for customer purchase...\",\"templateName\":\"standardSales\",\"includeSignatureBlock\":true,\"outputFormat\":\"plainText\"}", + "description": "Format a draft plain text contract into a styled sales contract with signature blocks in plain text." + }, + { + "inputJson": "{\"contractContent\":\"{\\\"sections\\\": [{\\\"title\\\": \\\"Terms\\\", \\\"content\\\": \\\"Payment due in 30 days...\\\"}]}\",\"templateName\":\"enterpriseDeal\",\"includeSignatureBlock\":false,\"outputFormat\":\"HTML\"}", + "description": "Format structured contract JSON applying an enterprise HTML template without signature block." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Contract", + "context": null + } + }, + { + "name": "sales-automation.buildService", + "description": "This tool sets up and configures a customized sales automation service based on specified parameters. It accepts inputs such as target industry, lead source configurations, workflow automations, and notification preferences, then processes these inputs to generate a ready-to-deploy sales automation infrastructure service configuration and deployment package.", + "category": "sales-automation", + "parameters": [ + { + "name": "targetIndustry", + "type": "string", + "description": "Specifies the industry vertical for which the sales automation service is being built (e.g., technology, retail).", + "required": true, + "defaultValue": "" + }, + { + "name": "leadSources", + "type": "array", + "description": "List of lead source configurations, each specifying source type and connection details (e.g., CRM, website forms).", + "required": true, + "defaultValue": "" + }, + { + "name": "automationWorkflows", + "type": "array", + "description": "Array of sales automation workflow definitions including triggers, conditions, and actions to automate sales processes.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "notificationSettings", + "type": "object", + "description": "Configuration for notifications, including channels (email, SMS) and event triggers.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "serviceName", + "type": "string", + "description": "Name identifier for the sales automation service instance.", + "required": true, + "defaultValue": "" + }, + { + "name": "enableAnalytics", + "type": "boolean", + "description": "Flag to include analytics and reporting features in the service.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxConcurrentUsers", + "type": "number", + "description": "Maximum number of concurrent users supported by the service.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "An object containing deployment details such as serviceId, configuration summary, and access URLs for the newly created sales automation service." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically provision a tailored sales automation infrastructure that fits the client's specific industry, lead sources, and automation needs, facilitating streamlined lead management and sales workflows without manual configuration.", + "limitations": "This tool does not perform lead generation or CRM data analysis. It only builds the service infrastructure and configuration. Integration with external APIs or ongoing operational maintenance must be handled separately.", + "examples": [ + "Build a sales automation service for a technology company with website form leads and email notifications.", + "Create a retail sales automation service with multiple lead sources and customized workflow automations.", + "Set up a new sales automation instance named 'Q3Growth' enabling analytics and supporting up to 200 users." + ] + }, + "tags": [ + "sales", + "automation", + "service", + "build", + "lead management", + "workflow", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"targetIndustry\":\"technology\",\"leadSources\":[{\"type\":\"CRM\",\"details\":{\"provider\":\"Salesforce\",\"apiKey\":\"abc123\"}}],\"automationWorkflows\":[{\"trigger\":\"newLead\",\"actions\":[\"sendWelcomeEmail\",\"assignSalesRep\"]}],\"notificationSettings\":{\"email\":\"sales-team@example.com\"},\"serviceName\":\"TechGrowthService\",\"enableAnalytics\":true,\"maxConcurrentUsers\":150}", + "description": "Build a technology industry service integrating Salesforce leads, basic workflows, notifications, and analytics support." + }, + { + "inputJson": "{\"targetIndustry\":\"retail\",\"leadSources\":[{\"type\":\"websiteForm\",\"details\":{\"url\":\"https://example.com/signup\"}}],\"automationWorkflows\":[],\"notificationSettings\":{\"email\":\"retail-sales@example.com\",\"sms\":\"+1234567890\"},\"serviceName\":\"RetailSalesAutomator\",\"enableAnalytics\":false,\"maxConcurrentUsers\":50}", + "description": "Create a retail sales automation service with website form leads and multi-channel notifications, without analytics." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Service", + "context": null + } + }, + { + "name": "sales-automation.buildPullRequest", + "description": "This tool automates the creation of a GitHub pull request (PR) for sales automation-related code changes. It accepts repository details, branch and base branch names, a title and description for the PR, and optionally commit messages and reviewer information. It processes these inputs to generate a pull request on the specified repository, returning PR metadata including URL and status.", + "category": "sales-automation", + "parameters": [ + { + "name": "repositoryOwner", + "type": "string", + "description": "GitHub username or organization owning the repository to modify.", + "required": true, + "defaultValue": "" + }, + { + "name": "repositoryName", + "type": "string", + "description": "Name of the repository where the pull request will be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "branchName", + "type": "string", + "description": "Name of the branch containing the proposed changes for the pull request.", + "required": true, + "defaultValue": "" + }, + { + "name": "baseBranch", + "type": "string", + "description": "Target branch into which changes will be merged, usually 'main' or 'master'.", + "required": true, + "defaultValue": "main" + }, + { + "name": "pullRequestTitle", + "type": "string", + "description": "Title text for the pull request summarizing the change.", + "required": true, + "defaultValue": "" + }, + { + "name": "pullRequestDescription", + "type": "string", + "description": "Detailed description explaining the purpose of the pull request.", + "required": false, + "defaultValue": "" + }, + { + "name": "commitMessages", + "type": "array", + "description": "List of commit messages associated with the changes (optional).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "reviewers", + "type": "array", + "description": "List of GitHub usernames to request review from (optional).", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing details of the created pull request including its URL, ID, title, and status." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically create a GitHub pull request to propose sales automation code or configuration changes. It supports automated workflows for submitting improvements, bug fixes, or new features to sales tools repositories.", + "limitations": "This tool cannot create or push commits; it requires that the branch with changes already exists. It does not perform code validation or conflict resolution. Access permissions and authentication must be managed separately.", + "examples": [ + "Create a pull request to merge a new sales lead parser to the main branch with a descriptive title and notify team reviewers.", + "Generate a pull request summarizing updates to the sales pipeline automation scripts without specifying reviewers.", + "Open a PR for bugfixes in the sales CRM integration branch with multiple commit messages provided." + ] + }, + "tags": [ + "sales-automation", + "github", + "pull-request", + "automation", + "code-management", + "devops" + ], + "examples": [ + { + "inputJson": "{\"repositoryOwner\":\"sales-team\",\"repositoryName\":\"crm-automation\",\"branchName\":\"feature/lead-parser\",\"baseBranch\":\"main\",\"pullRequestTitle\":\"Add lead parser for new data source\",\"pullRequestDescription\":\"This PR adds code to parse leads from the new lead data source and integrate into CRM.\",\"commitMessages\":[\"Add lead parser module\",\"Update README with parser usage\"],\"reviewers\":[\"jane-doe\",\"john-smith\"]}", + "description": "Create a PR to merge a new lead parser feature branch into main, including a detailed description and reviewers." + }, + { + "inputJson": "{\"repositoryOwner\":\"enterprise\",\"repositoryName\":\"sales-bot\",\"branchName\":\"fix/bug-123\",\"baseBranch\":\"main\",\"pullRequestTitle\":\"Fix bug 123 causing missed notifications\",\"pullRequestDescription\":\"Fixes the notification logic to ensure alerts are sent.\",\"commitMessages\":[\"Fix notification condition in bot logic\"],\"reviewers\":[]}", + "description": "Create a PR for a bug fix in sales bot without requesting reviewers." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "PullRequest", + "context": null + } + }, + { + "name": "sales-automation.buildContainer", + "description": "Builds a scalable containerized environment for sales automation applications. Accepts configuration parameters like container type, resource limits, environment variables, and deployment region. Processes the inputs to provision and configure a container infrastructure optimized for running sales workflow components. Returns deployment details including container ID, status, and endpoint URLs.", + "category": "sales-automation", + "parameters": [ + { + "name": "containerType", + "type": "string", + "description": "Type of container to build (e.g., Docker, Kubernetes pod).", + "required": true, + "defaultValue": "" + }, + { + "name": "cpuLimit", + "type": "number", + "description": "Maximum CPU units allocated to the container.", + "required": false, + "defaultValue": "1" + }, + { + "name": "memoryLimitMb", + "type": "number", + "description": "Maximum memory in megabytes allocated to the container.", + "required": false, + "defaultValue": "512" + }, + { + "name": "environmentVariables", + "type": "object", + "description": "Key-value pairs of environment variables to set inside the container.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "storageSizeGb", + "type": "number", + "description": "Size of attached persistent storage in gigabytes.", + "required": false, + "defaultValue": "0" + }, + { + "name": "deploymentRegion", + "type": "string", + "description": "Cloud region where the container should be deployed (e.g., us-east-1).", + "required": false, + "defaultValue": "us-east-1" + }, + { + "name": "autoScalingEnabled", + "type": "boolean", + "description": "Whether to enable automatic scaling based on load.", + "required": false, + "defaultValue": "false" + }, + { + "name": "startupCommand", + "type": "string", + "description": "Command to run when the container starts.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Information about the built container including id, status, and access URLs." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically provision and configure container infrastructure for deploying sales automation software components. It helps automate environment setup, ensuring consistency and scalability in sales workflows.", + "limitations": "Does not handle orchestration complexities beyond initial container deployment, nor manages in-container application logic.", + "examples": [ + "Deploy a Docker container with 2 CPU units and 1GB RAM in the eu-west-1 region.", + "Create a Kubernetes pod with environment variables for API keys and enable auto-scaling.", + "Build a containerized sales lead processing service with 10GB storage attached." + ] + }, + "tags": [ + "sales", + "automation", + "container", + "infrastructure", + "deployment", + "cloud", + "scalability" + ], + "examples": [ + { + "inputJson": "{\"containerType\":\"Docker\",\"cpuLimit\":2,\"memoryLimitMb\":1024,\"environmentVariables\":{\"API_KEY\":\"abc123\"},\"storageSizeGb\":5,\"deploymentRegion\":\"eu-west-1\",\"autoScalingEnabled\":true,\"startupCommand\":\"npm start\"}", + "description": "Deploy a Docker container with 2 CPU cores, 1GB RAM, environment variable for API key, 5GB storage, in the EU West region with auto-scaling enabled and startup command npm start." + }, + { + "inputJson": "{\"containerType\":\"KubernetesPod\",\"cpuLimit\":4,\"memoryLimitMb\":2048,\"environmentVariables\":{\"DB_HOST\":\"db.sales.local\"},\"storageSizeGb\":10,\"deploymentRegion\":\"us-east-1\",\"autoScalingEnabled\":false,\"startupCommand\":\"./run.sh\"}", + "description": "Create a Kubernetes pod with 4 CPU cores, 2GB RAM, environment variable for database host, 10GB attached storage in US East region without auto-scaling." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Container", + "context": null + } + }, + { + "name": "sales-automation.composeMessage", + "description": "Generates a customized sales message based on recipient information, sales context, and desired tone. Accepts inputs such as recipient details, product or service description, message purpose, and style preferences. Outputs a polished message text ready for outreach or follow-up communication.", + "category": "sales-automation", + "parameters": [ + { + "name": "recipientName", + "type": "string", + "description": "The name of the message recipient to personalize the greeting.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientRole", + "type": "string", + "description": "The professional role or title of the recipient to tailor message content.", + "required": false, + "defaultValue": "" + }, + { + "name": "productDescription", + "type": "string", + "description": "A brief description of the product or service being offered to include in the message.", + "required": true, + "defaultValue": "" + }, + { + "name": "messagePurpose", + "type": "string", + "description": "The main purpose of the message, e.g., initial outreach, follow-up, or closing a sale.", + "required": true, + "defaultValue": "" + }, + { + "name": "tone", + "type": "string", + "description": "The desired tone of the message, such as formal, friendly, or persuasive.", + "required": false, + "defaultValue": "formal" + }, + { + "name": "includeCallToAction", + "type": "boolean", + "description": "Whether to add a clear call to action at the end of the message.", + "required": false, + "defaultValue": "true" + }, + { + "name": "customIntro", + "type": "string", + "description": "Optional custom introductory sentence or phrase to start the message.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated message text and metadata such as tone and message purpose." + }, + "aiAgent": { + "useCase": "Use this tool to automatically generate tailored sales messages for outreach, follow-ups, or closing communications when provided with recipient details and context, accelerating the messaging workflow while maintaining a personalized approach.", + "limitations": "This tool does not guarantee message effectiveness or handle multi-turn conversation adjustments; it only creates a single message draft based on input parameters.", + "examples": [ + "Compose a friendly follow-up message to a marketing manager about our new email automation tool.", + "Generate a formal initial outreach message targeting CTOs explaining our cybersecurity service.", + "Create a persuasive closing message for a sales lead interested in SaaS solutions." + ] + }, + "tags": [ + "sales", + "automation", + "message generation", + "personalization", + "lead management", + "communication" + ], + "examples": [ + { + "inputJson": "{\"recipientName\":\"Jane Doe\",\"recipientRole\":\"Marketing Manager\",\"productDescription\":\"our new AI-powered email automation platform\",\"messagePurpose\":\"initial outreach\",\"tone\":\"friendly\",\"includeCallToAction\":true}", + "description": "Generate a friendly initial outreach message to a marketing manager about a new email automation product." + }, + { + "inputJson": "{\"recipientName\":\"John Smith\",\"productDescription\":\"cybersecurity consulting services\",\"messagePurpose\":\"follow-up\",\"tone\":\"formal\",\"includeCallToAction\":true,\"customIntro\":\"I hope this message finds you well.\"}", + "description": "Create a formal follow-up message with a custom intro for a cybersecurity consulting service prospect." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Message", + "context": null + } + }, + { + "name": "sales-automation.buildBranch", + "description": "Builds a customized sales automation branch of code that integrates lead capture, qualification, and nurturing workflows. Accepts input parameters defining branch name, target CRM system, automation triggers, and lead scoring criteria. Outputs a ready-to-deploy codebase or script for sales process automation customized to provided specifications.", + "category": "sales-automation", + "parameters": [ + { + "name": "branchName", + "type": "string", + "description": "The name of the new sales automation branch to create, reflecting its purpose or campaign.", + "required": true, + "defaultValue": "" + }, + { + "name": "crmIntegration", + "type": "string", + "description": "The CRM system identifier (e.g., Salesforce, HubSpot) to which this branch will connect for data exchange.", + "required": true, + "defaultValue": "" + }, + { + "name": "automationTriggers", + "type": "array", + "description": "List of event triggers (e.g., new lead, lead status change) that activate workflows within the branch.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "leadScoringRules", + "type": "object", + "description": "An object defining rules and weights for scoring leads to prioritize sales actions.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "nurtureSequences", + "type": "array", + "description": "An array of predefined communication sequences (emails, calls) for nurturing leads automatically.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeAnalytics", + "type": "boolean", + "description": "Flag to include lead and workflow analytics modules in the branch.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Outputs an object containing the generated branch name, code repository URL or file path, and a summary of integrations and workflows implemented." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create or update a sales automation branch that integrates with a CRM and includes customized lead handling workflows based on specified triggers and scoring. Suitable for generating deployable code tailored to sales process automation projects.", + "limitations": "Does not deploy the code automatically or handle real-time debugging. It cannot create CRM accounts or manage CRM-side configurations beyond integration coding.", + "examples": [ + "Create a branch named 'Q3Campaign' integrated with Salesforce, triggered on new leads and status updates, with custom lead scoring based on industry and engagement.", + "Build a sales automation branch for HubSpot that includes nurture email sequences and lead scoring, with analytics enabled.", + "Generate a new branch for a startup's CRM with basic triggers and no analytics to test initial lead capture workflows." + ] + }, + "tags": [ + "sales", + "automation", + "branch", + "crm-integration", + "lead-scoring", + "workflows" + ], + "examples": [ + { + "inputJson": "{\"branchName\":\"Q3SalesPush\",\"crmIntegration\":\"Salesforce\",\"automationTriggers\":[\"newLead\",\"leadStatusChange\"],\"leadScoringRules\":{\"industry\":{\"tech\":10,\"finance\":8}},\"nurtureSequences\":[{\"name\":\"WelcomeSequence\",\"steps\":[{\"type\":\"email\",\"delayDays\":0,\"content\":\"Welcome!\"}]}],\"includeAnalytics\":true}", + "description": "Create a Salesforce-integrated branch named 'Q3SalesPush' with triggers on new leads and status changes, lead scoring weighted by industry, nurture email sequences, and analytics enabled." + }, + { + "inputJson": "{\"branchName\":\"HubSpotTest\",\"crmIntegration\":\"HubSpot\",\"automationTriggers\":[\"newLead\"],\"leadScoringRules\":{},\"nurtureSequences\":[],\"includeAnalytics\":false}", + "description": "Build a simple HubSpot sales automation branch triggered on new leads only, without lead scoring or analytics." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Branch", + "context": null + } + }, + { + "name": "sales-automation.buildModule", + "description": "Builds a customizable sales automation module based on provided configuration parameters. Accepts inputs defining lead sources, qualification criteria, sales stages, and communication templates. Processes these inputs to generate a ready-to-deploy module that automates lead capture, nurturing, and conversion tracking workflows.", + "category": "sales-automation", + "parameters": [ + { + "name": "moduleName", + "type": "string", + "description": "The name of the sales automation module to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "leadSources", + "type": "array", + "description": "List of lead source platforms or channels to integrate, e.g., ['LinkedIn','WebsiteForm','EmailCampaign'].", + "required": true, + "defaultValue": "" + }, + { + "name": "qualificationCriteria", + "type": "object", + "description": "Criteria object defining how leads are qualified, with fields like budget, authority, need, timing.", + "required": true, + "defaultValue": "" + }, + { + "name": "salesStages", + "type": "array", + "description": "Ordered list of sales pipeline stages to include in the module, e.g., ['Prospecting','Qualified','Demo','Negotiation','ClosedWon'].", + "required": true, + "defaultValue": "" + }, + { + "name": "communicationTemplates", + "type": "object", + "description": "Key-value pairs of communication templates for emails or messages at various stages.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "enableNotifications", + "type": "boolean", + "description": "Flag to enable notifications on lead updates and stage changes.", + "required": false, + "defaultValue": "true" + }, + { + "name": "assignToUserId", + "type": "string", + "description": "User ID to assign new leads by default in this module.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated module code as a string, module metadata, and deployment instructions." + }, + "aiAgent": { + "useCase": "Use this tool when needing to automate and customize sales workflows by generating modules that handle lead ingestion, qualification, and pipeline management based on specific business rules. Ideal for platforms that allow embedding or deploying tailored sales automation logic.", + "limitations": "This tool does not handle actual deployment or integration with external systems; it only generates the module code and configuration. It also doesn't perform lead analytics or reporting beyond the standard qualification criteria.", + "examples": [ + "Build a sales automation module named 'TechStartupLeads' with lead sources from LinkedIn and Website forms, qualification criteria focusing on budget and timing, sales stages including Prospecting and Demo, and default email templates.", + "Create a module to automate a nonprofit's donor engagement sales process with custom stages and message templates.", + "Generate a module that integrates email campaigns and assigns all leads to a specific sales rep with notifications enabled." + ] + }, + "tags": [ + "sales-automation", + "module-building", + "lead-management", + "workflow", + "pipeline", + "automation", + "customization" + ], + "examples": [ + { + "inputJson": "{\"moduleName\":\"TechStartupLeads\",\"leadSources\":[\"LinkedIn\",\"WebsiteForm\"],\"qualificationCriteria\":{\"budget\":\">5000\",\"authority\":\"true\",\"need\":\"software\",\"timing\":\"<30days\"},\"salesStages\":[\"Prospecting\",\"Qualified\",\"Demo\",\"Negotiation\",\"ClosedWon\"],\"communicationTemplates\":{\"Prospecting\":\"Hi {{name}}, can we discuss your needs?\",\"Demo\":\"Ready to schedule a demo?\"},\"enableNotifications\":true,\"assignToUserId\":\"user_12345\"}", + "description": "Build a module for tech startup leads integrating LinkedIn and website form sources, with detailed qualification rules and communication templates." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Module", + "context": null + } + }, + { + "name": "sales-automation.buildConfig", + "description": "Creates a customized sales automation configuration object based on input parameters such as lead sources, sales stages, notification preferences, and integration options. Processes these inputs to generate a structured config that can be used to automate lead management and sales workflows effectively.", + "category": "sales-automation", + "parameters": [ + { + "name": "leadSources", + "type": "array", + "description": "List of lead source identifiers or names to include in the sales automation.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "salesStages", + "type": "array", + "description": "Ordered list of sales stages defining the pipeline steps.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "notificationPreferences", + "type": "object", + "description": "Settings for sales notifications, e.g., email alert enabled, frequency, platform.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "integrations", + "type": "array", + "description": "List of external tools or CRM systems to integrate with, e.g., ['Salesforce', 'HubSpot'].", + "required": false, + "defaultValue": "[]" + }, + { + "name": "autoAssignLeads", + "type": "boolean", + "description": "Whether leads should be automatically assigned to sales reps based on rules.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxLeadsPerRep", + "type": "number", + "description": "Maximum number of leads assigned to a single sales rep (if auto assignment enabled).", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "A complete sales automation configuration object encapsulating lead sources, sales pipeline stages, notification settings, integration options, and automation rules." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to build or update a sales automation configuration object tailored to specific organizational sales processes, combining lead intake, pipeline stages, and integration preferences into a structured object for deployment or further processing. It helps efficient setup of automated sales workflows.", + "limitations": "This tool does not validate external system credentials or implement the automation workflows themselves; it only generates the configuration data object. It does not perform real-time lead assignment or notify users.", + "examples": [ + "Create a sales automation config for three lead sources with 5 sales stages, email notifications enabled, and Salesforce integration.", + "Build a config with automatic lead assignment enabled and a max of 20 leads per rep, integrating with HubSpot only.", + "Generate config using default notification settings, custom pipeline stages, and no integrations." + ] + }, + "tags": [ + "sales", + "automation", + "configuration", + "lead-management", + "pipeline", + "integration" + ], + "examples": [ + { + "inputJson": "{\"leadSources\":[\"WebsiteForm\",\"TradeShow\",\"Referral\"],\"salesStages\":[\"Lead\",\"Contacted\",\"Qualified\",\"Proposal\",\"Closed\"],\"notificationPreferences\":{\"emailAlerts\":true,\"frequency\":\"daily\"},\"integrations\":[\"Salesforce\"],\"autoAssignLeads\":true,\"maxLeadsPerRep\":15}", + "description": "Configuration including three lead sources, full sales pipeline, daily email alerts, Salesforce integration, and auto lead assignment with 15 leads max per rep." + }, + { + "inputJson": "{\"leadSources\":[\"ColdCall\"],\"salesStages\":[\"Prospect\",\"Negotiation\",\"Won\"],\"notificationPreferences\":{},\"integrations\":[],\"autoAssignLeads\":false}", + "description": "Simplified configuration with a single lead source, minimal sales stages, no notifications, no integrations, and manual lead assignment." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Config", + "context": null + } + }, + { + "name": "sales-automation.buildEndpoint", + "description": "Builds a REST API endpoint for sales automation systems that handles incoming HTTP requests with lead or opportunity data, processes input parameters according to specified business logic, and returns structured JSON responses indicating success, errors, or processed data. Accepts endpoint path, HTTP method, required parameters, and processing rules as inputs and outputs endpoint configuration and sample code.", + "category": "sales-automation", + "parameters": [ + { + "name": "endpointPath", + "type": "string", + "description": "The URI path of the API endpoint to create (e.g., /leads/new).", + "required": true, + "defaultValue": "" + }, + { + "name": "httpMethod", + "type": "string", + "description": "The HTTP method this endpoint should support (GET, POST, PUT, DELETE).", + "required": true, + "defaultValue": "POST" + }, + { + "name": "requiredParameters", + "type": "array", + "description": "An array of strings representing required JSON parameters this endpoint expects in the request body or query.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "processingLogic", + "type": "object", + "description": "An object defining the business logic to apply to the input parameters (e.g., validation rules, transformations).", + "required": false, + "defaultValue": "{}" + }, + { + "name": "authenticationRequired", + "type": "boolean", + "description": "Specifies if the endpoint should enforce authentication before processing requests.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the endpoint configuration details including path, method, and auto-generated sample handler code snippet that implements the specified logic." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically generate standardized API endpoints for integrating sales automation workflows, enabling seamless data intake, processing, and response generation within CRM or lead management platforms. Ideal for rapid prototyping or consistent backend scaffoldings.", + "limitations": "This tool cannot deploy the endpoint to actual servers, handle runtime environments, or perform real-time network communication. It only generates configuration and sample code templates.", + "examples": [ + "Create a POST endpoint at /leads/add that requires 'email' and 'phone' parameters and validates their format.", + "Build a GET endpoint at /opportunities/list that requires authentication but no parameters.", + "Generate a DELETE endpoint at /leads/remove requiring a leadId parameter with authentication." + ] + }, + "tags": [ + "sales automation", + "API", + "endpoint", + "lead management", + "integration", + "REST", + "automation" + ], + "examples": [ + { + "inputJson": "{\"endpointPath\":\"/leads/add\",\"httpMethod\":\"POST\",\"requiredParameters\":[\"email\",\"phone\"],\"processingLogic\":{\"validateEmail\":true,\"validatePhone\":true},\"authenticationRequired\":true}", + "description": "Defines a POST endpoint /leads/add that accepts email and phone parameters with validation and requires authentication." + }, + { + "inputJson": "{\"endpointPath\":\"/opportunities/list\",\"httpMethod\":\"GET\",\"requiredParameters\":[],\"processingLogic\":{},\"authenticationRequired\":true}", + "description": "Defines a GET endpoint /opportunities/list that requires authentication and no input parameters." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Endpoint", + "context": null + } + }, + { + "name": "sales-automation.createKPI", + "description": "Creates a customized sales Key Performance Indicator (KPI) definition based on user inputs, including KPI name, description, calculation formula, relevant sales data fields, and target thresholds. The tool processes these inputs and outputs a structured KPI object suitable for integration into sales dashboards or analytics platforms.", + "category": "sales-automation", + "parameters": [ + { + "name": "kpiName", + "type": "string", + "description": "The name of the KPI to create, e.g., 'Monthly Lead Conversion Rate'.", + "required": true, + "defaultValue": "" + }, + { + "name": "kpiDescription", + "type": "string", + "description": "A detailed description explaining what the KPI measures and why it is important.", + "required": false, + "defaultValue": "" + }, + { + "name": "calculationFormula", + "type": "string", + "description": "A formula expressed as a string using sales data fields and arithmetic operators to compute the KPI value.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataFields", + "type": "array", + "description": "An array of sales data field names (strings) that are inputs to the calculation formula, e.g., ['leadsGenerated', 'leadsConverted'].", + "required": true, + "defaultValue": "" + }, + { + "name": "targetThreshold", + "type": "number", + "description": "The target numeric threshold or benchmark value for this KPI, used for performance evaluation.", + "required": false, + "defaultValue": "" + }, + { + "name": "timePeriod", + "type": "string", + "description": "The time period for measuring this KPI, e.g., 'monthly', 'quarterly', or 'weekly'.", + "required": false, + "defaultValue": "monthly" + }, + { + "name": "isPercentage", + "type": "boolean", + "description": "Indicates whether the KPI value should be expressed as a percentage.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A KPI object containing its name, description, calculation formula, related data fields, target threshold, time period, and formatting metadata suitable for integration into sales analytics tools." + }, + "aiAgent": { + "useCase": "Use this tool when a sales team or automation agent needs to define a custom KPI for monitoring specific sales metrics by specifying how to compute the KPI from available sales data fields. It helps create formal KPI definitions to be tracked and analyzed in dashboards or reporting systems.", + "limitations": "This tool does not connect to live sales data sources or perform actual data calculations. It only creates the KPI definition object. Data ingestion, calculation, and visualization must be handled by other components.", + "examples": [ + "Create a KPI for monthly lead conversion rate using number of converted leads divided by total leads generated as a percentage with a 20% target.", + "Define a quarterly average deal size KPI calculated using total sales revenue divided by number of closed deals with a $5000 target threshold.", + "Generate a weekly number of calls made KPI without a formula, just a direct data field count, marked as a raw number, not a percentage." + ] + }, + "tags": [ + "sales", + "automation", + "KPI", + "analytics", + "metrics", + "performance", + "dashboard" + ], + "examples": [ + { + "inputJson": "{\"kpiName\":\"Monthly Lead Conversion Rate\",\"kpiDescription\":\"Percentage of leads converted to customers each month.\",\"calculationFormula\":\"(leadsConverted / leadsGenerated) * 100\",\"dataFields\":[\"leadsGenerated\",\"leadsConverted\"],\"targetThreshold\":20,\"timePeriod\":\"monthly\",\"isPercentage\":true}", + "description": "Creates a percentage KPI measuring the monthly lead conversion rate with a 20% target." + }, + { + "inputJson": "{\"kpiName\":\"Quarterly Average Deal Size\",\"kpiDescription\":\"Average revenue per closed deal in the quarter.\",\"calculationFormula\":\"totalRevenue / dealsClosed\",\"dataFields\":[\"totalRevenue\",\"dealsClosed\"],\"targetThreshold\":5000,\"timePeriod\":\"quarterly\",\"isPercentage\":false}", + "description": "Defines average deal size KPI measured quarterly with a $5,000 target." + }, + { + "inputJson": "{\"kpiName\":\"Weekly Calls Made\",\"kpiDescription\":\"Total number of sales calls made each week.\",\"calculationFormula\":\"callsMade\",\"dataFields\":[\"callsMade\"],\"timePeriod\":\"weekly\",\"isPercentage\":false}", + "description": "Creates a weekly count KPI for calls made, using a direct data field without calculation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "KPI", + "context": null + } + }, + { + "name": "sales-automation.generateKPI", + "description": "Generates key performance indicators (KPIs) for sales processes based on input sales data and configuration parameters. Accepts raw sales transaction records, lead data, or aggregated metrics, processes them to compute sales KPIs like conversion rate, average deal size, sales cycle length, and outputs a structured KPI report for sales performance analysis.", + "category": "sales-automation", + "parameters": [ + { + "name": "salesData", + "type": "array", + "description": "An array of sales records or transactions, each containing relevant fields such as deal amount, status, dates, and lead info.", + "required": true, + "defaultValue": "" + }, + { + "name": "kpiMetrics", + "type": "array", + "description": "List of KPI metric names to calculate, e.g., ['conversionRate', 'averageDealSize', 'salesCycleLength']. If empty, calculates all supported KPIs.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "timePeriod", + "type": "object", + "description": "An object defining the start and end date for KPI calculation, e.g., {\"startDate\":\"2023-01-01\",\"endDate\":\"2023-12-31\"}. Only sales data within this period will be considered.", + "required": false, + "defaultValue": "" + }, + { + "name": "groupBy", + "type": "string", + "description": "Field name to group KPIs by, such as 'salesRep', 'region', or 'productCategory'. If empty, calculates KPIs for overall data.", + "required": false, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code (e.g., 'USD', 'EUR') to format monetary KPIs appropriately.", + "required": false, + "defaultValue": "USD" + } + ], + "returns": { + "type": "object", + "description": "A structured report object containing requested KPIs as key-value pairs, optionally grouped by specified criteria, with calculated values and summary statistics." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to analyze raw or aggregated sales data to produce actionable KPI reports that summarize sales team performance, lead conversion efficiency, deal sizes, and other critical sales metrics over specific time periods or groupings. It aids automated sales performance monitoring and reporting.", + "limitations": "This tool does not perform data cleansing or validation; input data must be pre-processed to ensure correctness. It does not generate visualization charts, only raw KPI metrics. Advanced predictive KPIs or machine-learning based forecasts are beyond its scope.", + "examples": [ + "Generate KPIs for Q1 sales data grouped by sales representative to assess individual performance.", + "Calculate all supported sales KPIs for data from last year without grouping.", + "Compute only conversion rate and average deal size grouped by product category in EUR currency." + ] + }, + "tags": [ + "sales", + "automation", + "KPI", + "analytics", + "reporting", + "performance", + "metrics" + ], + "examples": [ + { + "inputJson": "{\"salesData\":[{\"dealAmount\":5000,\"status\":\"closedWon\",\"closeDate\":\"2024-03-15\",\"salesRep\":\"Alice\"},{\"dealAmount\":3000,\"status\":\"closedLost\",\"closeDate\":\"2024-02-28\",\"salesRep\":\"Bob\"}],\"kpiMetrics\":[\"conversionRate\",\"averageDealSize\"],\"timePeriod\":{\"startDate\":\"2024-01-01\",\"endDate\":\"2024-03-31\"},\"groupBy\":\"salesRep\",\"currency\":\"USD\"}", + "description": "Calculate conversion rate and average deal size by salesRep for Q1 2024 in USD." + }, + { + "inputJson": "{\"salesData\":[{\"dealAmount\":7500,\"status\":\"closedWon\",\"closeDate\":\"2023-07-20\",\"salesRep\":\"Carol\"},{\"dealAmount\":2000,\"status\":\"closedWon\",\"closeDate\":\"2023-05-15\",\"salesRep\":\"Dave\"}],\"kpiMetrics\":[],\"timePeriod\":{\"startDate\":\"2023-01-01\",\"endDate\":\"2023-12-31\"},\"groupBy\":\"\",\"currency\":\"USD\"}", + "description": "Generate all default KPIs for entire 2023 without grouping." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "KPI", + "context": null + } + }, + { + "name": "sales-automation.generateDashboard", + "description": "Generates a comprehensive sales dashboard by processing input sales data, filters, and metrics preferences. The tool accepts sales records and configuration parameters, aggregates and analyzes key sales performance indicators, and outputs a structured dashboard report displaying trends, KPIs, and visual summaries for decision making.", + "category": "sales-automation", + "parameters": [ + { + "name": "salesData", + "type": "array", + "description": "An array of sales records, each including details like date, amount, product, and salesperson.", + "required": true, + "defaultValue": "" + }, + { + "name": "dateRange", + "type": "object", + "description": "An object with 'start' and 'end' date strings to filter sales data within a specific period.", + "required": false, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "List of performance metrics to include, e.g., 'totalSales', 'averageDealSize', 'conversionRate'.", + "required": false, + "defaultValue": "[\"totalSales\",\"averageDealSize\"]" + }, + { + "name": "groupBy", + "type": "string", + "description": "The sales dimension to group data by, such as 'region', 'product', or 'salesperson'.", + "required": false, + "defaultValue": "region" + }, + { + "name": "includeVisuals", + "type": "boolean", + "description": "Flag to include visual chart data in the dashboard output.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "A structured sales dashboard object containing aggregated metrics, grouped data summaries, and optionally visual chart configurations ready for rendering." + }, + "aiAgent": { + "useCase": "Use this tool when needing to create a detailed, customizable sales performance dashboard from raw sales data. It helps summarize large datasets into actionable insights by filtering, grouping, and calculating key metrics, suitable for sales teams or management reporting.", + "limitations": "This tool does not perform advanced predictive analytics or real-time data streaming. It requires supplied sales data formatted as expected and cannot connect directly to databases or live feeds.", + "examples": [ + "Generate a sales dashboard for Q1 2024, grouped by product, including total sales and conversion rate metrics.", + "Create a dashboard with average deal size and total sales, focus on the last month, grouped by salesperson.", + "Produce a regional sales dashboard including visuals for the entire past year." + ] + }, + "tags": [ + "sales", + "automation", + "dashboard", + "analytics", + "reporting", + "metrics", + "visualization" + ], + "examples": [ + { + "inputJson": "{\"salesData\":[{\"date\":\"2024-01-10\",\"amount\":1200,\"product\":\"Product A\",\"salesperson\":\"Alice\",\"region\":\"North\"},{\"date\":\"2024-01-11\",\"amount\":900,\"product\":\"Product B\",\"salesperson\":\"Bob\",\"region\":\"South\"}],\"dateRange\":{\"start\":\"2024-01-01\",\"end\":\"2024-03-31\"},\"metrics\":[\"totalSales\",\"averageDealSize\"],\"groupBy\":\"product\",\"includeVisuals\":true}", + "description": "Generate a Q1 sales dashboard grouped by product with total sales and average deal size, including charts." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Dashboard", + "context": null + } + }, + { + "name": "sales-automation.generateLink", + "description": "Generates a customized sales tracking link based on input parameters such as target URL, campaign name, lead source, and optional UTM parameters. Processes these inputs to produce a trackable, shareable URL optimized for sales campaigns and lead attribution.", + "category": "sales-automation", + "parameters": [ + { + "name": "targetUrl", + "type": "string", + "description": "The base URL of the product or landing page to which the sales link will redirect.", + "required": true, + "defaultValue": "" + }, + { + "name": "campaignName", + "type": "string", + "description": "The name of the sales campaign to associate with the link for tracking purposes.", + "required": true, + "defaultValue": "" + }, + { + "name": "leadSource", + "type": "string", + "description": "Identifier for the source of the lead, such as 'email', 'social', or 'referral'.", + "required": true, + "defaultValue": "" + }, + { + "name": "utmParameters", + "type": "object", + "description": "Optional UTM parameters (utm_medium, utm_campaign, utm_term, utm_content) to append for detailed analytics.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "expiresAt", + "type": "string", + "description": "Optional ISO 8601 timestamp indicating when the link should expire and become inactive.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated sales tracking link and related metadata including the full URL and expiration info if set." + }, + "aiAgent": { + "useCase": "Use this tool when generating trackable sales links to embed in outreach emails, social media posts, or advertisements. It helps automatically append campaign and source data for accurate lead tracking and performance analytics.", + "limitations": "Does not create short URLs or handle link shortening by itself. Does not validate that the target URL is reachable or safe.", + "examples": [ + "Generate a sales link for an email campaign promoting a new product with specific UTM tags.", + "Create a referral link for social media posts that expires after 30 days.", + "Generate a trackable link to monitor leads from a trade show campaign." + ] + }, + "tags": [ + "sales", + "automation", + "link-generation", + "tracking", + "marketing", + "lead-management" + ], + "examples": [ + { + "inputJson": "{\"targetUrl\":\"https://example.com/product\",\"campaignName\":\"spring_sale\",\"leadSource\":\"email\",\"utmParameters\":{\"utm_medium\":\"email\",\"utm_campaign\":\"spring_sale_2024\",\"utm_term\":\"discount\",\"utm_content\":\"banner\"},\"expiresAt\":\"2024-08-31T23:59:59Z\"}", + "description": "Generate a sales tracking link for an email campaign with full UTM parameters and expiration date." + }, + { + "inputJson": "{\"targetUrl\":\"https://example.com/signup\",\"campaignName\":\"social_launch\",\"leadSource\":\"social\",\"utmParameters\":{\"utm_medium\":\"social\",\"utm_campaign\":\"launch_campaign\"}}", + "description": "Generate a social media referral link without expiration date using minimal UTM parameters." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Link", + "context": null + } + }, + { + "name": "sales-automation.generateQuery", + "description": "Generates optimized database queries or search filters to retrieve sales leads based on specified criteria. Accepts parameters such as lead attributes, filtering conditions, sorting preferences, and limit constraints. Produces a structured query string or object suitable for use in CRM or lead management systems.", + "category": "sales-automation", + "parameters": [ + { + "name": "leadAttributes", + "type": "array", + "description": "List of lead attribute fields to include or filter on (e.g., industry, location, revenue).", + "required": true, + "defaultValue": "" + }, + { + "name": "filterConditions", + "type": "object", + "description": "Key-value pairs defining conditions to filter leads (e.g., {\"industry\":\"Technology\", \"revenue\":{\"gt\":1000000}}).", + "required": true, + "defaultValue": "" + }, + { + "name": "sortBy", + "type": "string", + "description": "Field name to sort the results by (e.g., \"lastContactDate\").", + "required": false, + "defaultValue": "" + }, + { + "name": "sortOrder", + "type": "string", + "description": "Sort order direction: \"asc\" for ascending or \"desc\" for descending.", + "required": false, + "defaultValue": "asc" + }, + { + "name": "limit", + "type": "number", + "description": "Maximum number of leads to return from the query.", + "required": false, + "defaultValue": "50" + }, + { + "name": "queryType", + "type": "string", + "description": "Type/format of the query output, e.g., \"SQL\", \"NoSQL\", or \"filterObject\".", + "required": false, + "defaultValue": "SQL" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated query string or filter object matching the requested format for lead retrieval." + }, + "aiAgent": { + "useCase": "Use this tool when needing to construct precise queries or filters to fetch relevant leads from sales databases or CRM systems based on dynamic criteria and preferences. It supports generating query strings or filter objects compatible with various backends, helping automate lead selection and avoid manual query writing.", + "limitations": "Cannot directly execute the query on databases or return actual lead data; it only generates query strings/objects. It depends on correct input parameters for valid query generation and may not cover all database-specific query syntaxes.", + "examples": [ + "Generate a SQL query to retrieve technology leads with revenue over 1 million sorted by last contact date.", + "Create a filter object to fetch leads in the healthcare industry located in California with recent activity.", + "Produce a NoSQL query to limit results to 100 leads with specified attributes sorted ascending." + ] + }, + "tags": [ + "sales", + "automation", + "lead generation", + "query", + "CRM", + "filtering", + "database" + ], + "examples": [ + { + "inputJson": "{\"leadAttributes\":[\"name\",\"industry\",\"revenue\",\"location\"],\"filterConditions\":{\"industry\":\"Technology\",\"revenue\":{\"gt\":1000000}},\"sortBy\":\"lastContactDate\",\"sortOrder\":\"desc\",\"limit\":100,\"queryType\":\"SQL\"}", + "description": "Generate an SQL query for technology leads with revenue > 1M, sorted by last contact date descending, limit 100." + }, + { + "inputJson": "{\"leadAttributes\":[\"name\",\"industry\",\"location\",\"lastContactDate\"],\"filterConditions\":{\"industry\":\"Healthcare\",\"location\":\"California\"},\"sortBy\":\"lastContactDate\",\"sortOrder\":\"asc\",\"limit\":50,\"queryType\":\"filterObject\"}", + "description": "Create a filter object for healthcare leads located in California, sorted by last contact date ascending, limit 50." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Query", + "context": null + } + }, + { + "name": "sales-automation.createDashboard", + "description": "Creates a customizable sales performance dashboard by accepting sales data sources and user preferences. It processes data to generate visual analytics such as charts and KPIs, outputting a dashboard configuration object for integration in sales platforms.", + "category": "sales-automation", + "parameters": [ + { + "name": "dashboardName", + "type": "string", + "description": "The title to display on the dashboard", + "required": true, + "defaultValue": "" + }, + { + "name": "dataSources", + "type": "array", + "description": "List of data source identifiers or endpoints for sales metrics input", + "required": true, + "defaultValue": "" + }, + { + "name": "dateRange", + "type": "object", + "description": "Start and end dates to filter sales data (format: {start:'YYYY-MM-DD', end:'YYYY-MM-DD'})", + "required": false, + "defaultValue": "{\"start\":\"\",\"end\":\"\"}" + }, + { + "name": "metrics", + "type": "array", + "description": "Key sales metrics to include such as revenue, leads, conversion rate", + "required": true, + "defaultValue": "[\"revenue\",\"leads\",\"conversionRate\"]" + }, + { + "name": "visualizationTypes", + "type": "array", + "description": "Chart types to use for metrics, e.g., bar, line, pie", + "required": false, + "defaultValue": "[\"bar\",\"line\"]" + }, + { + "name": "refreshIntervalMinutes", + "type": "number", + "description": "Frequency in minutes to refresh data on the dashboard", + "required": false, + "defaultValue": "60" + }, + { + "name": "includeTargets", + "type": "boolean", + "description": "Whether to display performance targets/goals alongside actuals", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "DashboardConfig object containing widgets, data bindings, layout and settings for rendering the sales dashboard" + }, + "aiAgent": { + "useCase": "Use this tool to programmatically generate a sales dashboard tailored to specific business needs by specifying data inputs, key metrics, visualization formats, and refresh settings. Ideal for automating dashboard creation in sales platforms or CRMs to provide actionable insights.", + "limitations": "Does not connect directly to data sources; input data identifiers or endpoints must be preconfigured and accessible. Visualization options are limited to predefined chart types. Does not support real-time streaming data or complex drill-downs beyond basic filtering.", + "examples": [ + "Create a sales dashboard named 'Q2 Performance' using our CRM data and including revenue and leads metrics with bar and line charts updated hourly.", + "Generate a sales automation dashboard focusing on conversion rate trends last month using pie charts, without showing targets.", + "Build a dashboard for multiple data sources combining sales and marketing leads, displaying revenue and conversion rates with refresh every 30 minutes." + ] + }, + "tags": [ + "sales", + "automation", + "dashboard", + "analytics", + "performance", + "visualization", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"dashboardName\":\"Q2 Sales Overview\",\"dataSources\":[\"crmApi\",\"salesDb\"],\"dateRange\":{\"start\":\"2024-04-01\",\"end\":\"2024-06-30\"},\"metrics\":[\"revenue\",\"leads\",\"conversionRate\"],\"visualizationTypes\":[\"bar\",\"line\"],\"refreshIntervalMinutes\":60,\"includeTargets\":true}", + "description": "Create a dashboard titled 'Q2 Sales Overview' using CRM API and internal sales database, visualizing revenue, leads, and conversion rate with bar and line charts that refresh every hour, including sales targets." + }, + { + "inputJson": "{\"dashboardName\":\"Last Month Conversion Analysis\",\"dataSources\":[\"crmApi\"],\"dateRange\":{\"start\":\"2024-05-01\",\"end\":\"2024-05-31\"},\"metrics\":[\"conversionRate\"],\"visualizationTypes\":[\"pie\"],\"refreshIntervalMinutes\":120,\"includeTargets\":false}", + "description": "Generate a sales dashboard focusing on conversion rate last month, displayed as a pie chart, updating every two hours, without showing sales targets." + }, + { + "inputJson": "{\"dashboardName\":\"Multi-source Sales Metrics\",\"dataSources\":[\"crmApi\",\"marketingDb\"],\"dateRange\":{\"start\":\"2024-01-01\",\"end\":\"2024-06-30\"},\"metrics\":[\"revenue\",\"conversionRate\"],\"visualizationTypes\":[\"bar\"],\"refreshIntervalMinutes\":30,\"includeTargets\":true}", + "description": "Build a sales automation dashboard aggregating multiple data sources, showing revenue and conversion rate as bar charts, updating every 30 minutes, with performance targets included." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dashboard", + "context": null + } + }, + { + "name": "sales-automation.createComment", + "description": "Creates a comment associated with a specific sales lead or opportunity to document communication, notes, or updates. Accepts identifiers for the target lead/opportunity and comment content, optionally tagging users or setting visibility. Returns confirmation with comment ID and timestamp.", + "category": "sales-automation", + "parameters": [ + { + "name": "entityId", + "type": "string", + "description": "Unique identifier of the sales lead or opportunity to attach the comment to.", + "required": true, + "defaultValue": "" + }, + { + "name": "entityType", + "type": "string", + "description": "Type of entity to comment on, e.g., 'lead' or 'opportunity'.", + "required": true, + "defaultValue": "" + }, + { + "name": "commentText", + "type": "string", + "description": "Text content of the comment to add.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorId", + "type": "string", + "description": "Identifier of the user creating the comment.", + "required": false, + "defaultValue": "" + }, + { + "name": "visibility", + "type": "string", + "description": "Visibility level of the comment, e.g., 'public', 'private', or 'team'.", + "required": false, + "defaultValue": "public" + }, + { + "name": "taggedUserIds", + "type": "array", + "description": "An array of user IDs to tag in the comment notifying them.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing the new comment's ID, the linked entity ID and type, author ID, timestamp of creation, and the text content." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to document interactions, updates, or notes related to a sales lead or opportunity as part of automated CRM updates. It helps maintain an auditable history and promotes team collaboration by tagging relevant users or setting comment visibility.", + "limitations": "This tool does not handle editing or deleting comments once created, nor does it support rich text or media attachments. It assumes valid entity IDs and user permissions are managed externally.", + "examples": [ + "Add a comment saying 'Client requested a product demo next week' to lead with ID 'L12345'.", + "Create a private internal note on opportunity ID 'O9876' mentioning the budget discussion.", + "Post a public comment tagging user ID 'U4321' about the latest follow-up call on lead 'L555'" + ] + }, + "tags": [ + "sales", + "automation", + "comment", + "lead-management", + "CRM", + "collaboration" + ], + "examples": [ + { + "inputJson": "{\"entityId\":\"L12345\",\"entityType\":\"lead\",\"commentText\":\"Client requested a product demo next week.\",\"authorId\":\"U1001\",\"visibility\":\"public\",\"taggedUserIds\":[]}", + "description": "Adding a public comment to a sales lead to record a client request." + }, + { + "inputJson": "{\"entityId\":\"O9876\",\"entityType\":\"opportunity\",\"commentText\":\"Internal note: budget discussion pending approval.\",\"authorId\":\"U2002\",\"visibility\":\"private\",\"taggedUserIds\":[]}", + "description": "Creating a private internal comment on an opportunity about budget matters." + }, + { + "inputJson": "{\"entityId\":\"L555\",\"entityType\":\"lead\",\"commentText\":\"Follow-up call completed, next steps agreed.\",\"authorId\":\"U3003\",\"visibility\":\"public\",\"taggedUserIds\":[\"U4321\"]}", + "description": "Posting a public comment on a lead tagging a colleague for visibility." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Comment", + "context": null + } + }, + { + "name": "sales-automation.generateArticle", + "description": "Generates a sales-focused article based on specified topics, target audience, desired length, and tone. It accepts keywords or themes related to sales, processes the inputs to create a coherent, well-structured article aimed at engaging potential customers or stakeholders, and outputs the article content as text.", + "category": "sales-automation", + "parameters": [ + { + "name": "topic", + "type": "string", + "description": "The main subject or theme of the sales article to be generated.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetAudience", + "type": "string", + "description": "Description of the audience for whom the article is intended, influencing style and content focus.", + "required": false, + "defaultValue": "" + }, + { + "name": "articleLength", + "type": "number", + "description": "Approximate desired length of the article in words.", + "required": false, + "defaultValue": "500" + }, + { + "name": "tone", + "type": "string", + "description": "Preferred tone of the article, such as professional, casual, persuasive, or informative.", + "required": false, + "defaultValue": "professional" + }, + { + "name": "includeCallToAction", + "type": "boolean", + "description": "Whether to include a call-to-action section at the end of the article.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated article's title and its full textual content." + }, + "aiAgent": { + "useCase": "This tool is ideal when an AI agent needs to create engaging sales content automatically to accelerate marketing campaigns, nurture leads, or educate prospects. It can transform raw topics or keywords into comprehensive articles tailored to specific audiences and business goals.", + "limitations": "The tool cannot guarantee topic accuracy or compliance with specific legal or ethical standards. It may not produce highly specialized technical content without domain-specific input. It is not meant for creating very short advertising copy or extremely long-form content beyond typical article lengths.", + "examples": [ + "Generate a persuasive sales article on CRM benefits for small business owners.", + "Create an informative article about cloud security sales points targeting IT managers.", + "Write a casual 700-word article on lead generation trends including a call to action." + ] + }, + "tags": [ + "sales", + "content-generation", + "article", + "automation", + "marketing" + ], + "examples": [ + { + "inputJson": "{\"topic\":\"Benefits of CRM for small businesses\",\"targetAudience\":\"small business owners\",\"articleLength\":600,\"tone\":\"professional\",\"includeCallToAction\":true}", + "description": "Generate a professional article highlighting CRM benefits targeting small business owners with a call to action." + }, + { + "inputJson": "{\"topic\":\"Cloud security solutions\",\"targetAudience\":\"IT managers\",\"articleLength\":800,\"tone\":\"informative\",\"includeCallToAction\":false}", + "description": "Create an informative article about cloud security solutions designed for IT managers without a call to action." + }, + { + "inputJson": "{\"topic\":\"Lead generation trends 2024\",\"targetAudience\":\"marketing professionals\",\"articleLength\":700,\"tone\":\"casual\",\"includeCallToAction\":true}", + "description": "Write a casual 700-word article on latest lead generation trends including a call to action for marketing professionals." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Article", + "context": null + } + }, + { + "name": "sales-automation.createInstance", + "description": "Creates a new sales automation instance that sets up lead management workflows, sales funnels, and automation triggers based on provided parameters. Accepts configuration inputs such as instance name, target sales channels, automation rules, and user access settings. Outputs a confirmation with instance ID and setup details.", + "category": "sales-automation", + "parameters": [ + { + "name": "instanceName", + "type": "string", + "description": "The unique name identifying the sales automation instance to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetChannels", + "type": "array", + "description": "List of sales channels (e.g., email, phone, social media) to include in the automation.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "automationRules", + "type": "array", + "description": "Array of automation rule objects defining triggers and actions for the sales process.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "userAccessRoles", + "type": "object", + "description": "Mapping of user roles to permissions for accessing and managing this instance.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "enableNotifications", + "type": "boolean", + "description": "Flag to enable or disable notifications for sales activities within this instance.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with the newly created instance ID, its configuration summary, creation timestamp, and current status." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically establish a new sales automation environment tailored to specific channels, rules, and user roles. Ideal for setting up scalable lead management and automated sales funnels to streamline workflows.", + "limitations": "Does not handle external integrations setup beyond specified channels; does not manage ongoing lead data or sales analytics after instance creation; requires valid automation rules syntax.", + "examples": [ + "Create a sales automation instance named 'Q2Campaign' targeting email and phone channels with predefined follow-up rules.", + "Set up a new instance with social media as the only channel and custom user access roles for the sales team.", + "Enable notifications off for an instance focused on cold calling with specific automation triggers." + ] + }, + "tags": [ + "sales", + "automation", + "lead management", + "workflow", + "instance creation", + "sales funnel" + ], + "examples": [ + { + "inputJson": "{\"instanceName\":\"Q2Campaign\",\"targetChannels\":[\"email\",\"phone\"],\"automationRules\":[{\"trigger\":\"leadCreated\",\"action\":\"sendEmail\"}],\"userAccessRoles\":{\"salesRep\":\"edit\",\"manager\":\"admin\"},\"enableNotifications\":true}", + "description": "Create an instance named 'Q2Campaign' integrating email and phone sales channels with basic automation and role-based access." + }, + { + "inputJson": "{\"instanceName\":\"SocialPush\",\"targetChannels\":[\"socialMedia\"],\"automationRules\":[{\"trigger\":\"leadAssigned\",\"action\":\"sendSMS\"}],\"userAccessRoles\":{\"agent\":\"edit\"},\"enableNotifications\":false}", + "description": "Create a social media focused sales automation instance with SMS alerts disabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Instance", + "context": null + } + }, + { + "name": "sales-automation.createCredential", + "description": "Creates a new access credential for sales team members or automated sales bots to securely access sales systems. Accepts user or bot identity details, role, and access scopes. Returns a credential object with ID, secret token, and metadata for use in authentication and authorization workflows.", + "category": "sales-automation", + "parameters": [ + { + "name": "entityId", + "type": "string", + "description": "Unique identifier for the sales team member or bot for whom the credential is being created.", + "required": true, + "defaultValue": "" + }, + { + "name": "entityType", + "type": "string", + "description": "Type of entity requesting credential, e.g., 'user' or 'bot'.", + "required": true, + "defaultValue": "" + }, + { + "name": "role", + "type": "string", + "description": "Role assigned to the credential, defining access level (e.g., 'sales_rep', 'manager', 'automation_bot').", + "required": true, + "defaultValue": "" + }, + { + "name": "scopes", + "type": "array", + "description": "List of permission strings defining what actions the credential allows, e.g., ['read_leads','update_pipeline'].", + "required": true, + "defaultValue": "" + }, + { + "name": "expirationHours", + "type": "number", + "description": "Duration in hours after which the credential expires. If omitted or 0, credential does not expire.", + "required": false, + "defaultValue": "0" + }, + { + "name": "notes", + "type": "string", + "description": "Optional notes describing the purpose of the credential or additional info.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created credential, including credentialId, secretToken, creation timestamp, expiration timestamp (if any), role, scopes, and associated entity info." + }, + "aiAgent": { + "useCase": "Use this tool when automating the creation of secure access credentials for sales personnel or bots needing controlled access to sales automation systems, to integrate identity and permissions dynamically into workflows.", + "limitations": "This tool does not manage credential revocation or audit usage logs; separate tools should be used for those functions.", + "examples": [ + "Create a credential for a new sales representative with read and write permissions to lead data.", + "Generate an access token for a sales automation bot with limited scope and a one-week expiration.", + "Issue a credential for a sales manager role without expiration for long-term use." + ] + }, + "tags": [ + "sales", + "automation", + "credentials", + "security", + "access-control", + "authentication" + ], + "examples": [ + { + "inputJson": "{\"entityId\":\"user_789\",\"entityType\":\"user\",\"role\":\"sales_rep\",\"scopes\":[\"read_leads\",\"update_pipeline\"],\"expirationHours\":168,\"notes\":\"Temporary credential for new hire.\"}", + "description": "Create a temporary credential valid for one week for a new sales rep with appropriate permissions." + }, + { + "inputJson": "{\"entityId\":\"bot_123\",\"entityType\":\"bot\",\"role\":\"automation_bot\",\"scopes\":[\"read_leads\"],\"expirationHours\":0,\"notes\":\"Automation script access.\"}", + "description": "Create a non-expiring credential for a sales automation bot with read-only scope." + }, + { + "inputJson": "{\"entityId\":\"user_456\",\"entityType\":\"user\",\"role\":\"manager\",\"scopes\":[\"read_leads\",\"update_pipeline\",\"approve_deals\"],\"expirationHours\":0,\"notes\":\"Permanent manager credential.\"}", + "description": "Issue a permanent credential for a sales manager with extended permissions." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Credential", + "context": null + } + }, + { + "name": "sales-automation.createRisk", + "description": "Creates a sales risk profile based on input data including customer information, deal characteristics, and historical sales performance. The tool processes the inputs to identify potential risks to closing a sale, such as financial instability, competitive threats, or compliance issues, and produces a structured risk assessment report with risk level and detailed factors.", + "category": "sales-automation", + "parameters": [ + { + "name": "customerId", + "type": "string", + "description": "Unique identifier of the customer or lead", + "required": true, + "defaultValue": "" + }, + { + "name": "dealValue", + "type": "number", + "description": "Monetary value of the sales deal in USD", + "required": true, + "defaultValue": "" + }, + { + "name": "dealStage", + "type": "string", + "description": "Current stage of the sales pipeline for this deal (e.g., prospecting, negotiation, closed)", + "required": true, + "defaultValue": "" + }, + { + "name": "industry", + "type": "string", + "description": "Industry sector of the customer or lead", + "required": false, + "defaultValue": "" + }, + { + "name": "historicalWinRate", + "type": "number", + "description": "Percentage representing past win rate with this customer or similar deals (0-100)", + "required": false, + "defaultValue": "50" + }, + { + "name": "competitorPresence", + "type": "boolean", + "description": "Indicates if competitors are actively engaged with this customer on this deal", + "required": false, + "defaultValue": "false" + }, + { + "name": "complianceConcerns", + "type": "boolean", + "description": "Flags if there are known regulatory or compliance issues related to this deal", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing overall risk level (low, medium, high), key risk factors identified, and a confidence score (0-1) indicating assessment reliability" + }, + "aiAgent": { + "useCase": "Use this tool when evaluating the likelihood of successful closure for sales opportunities, especially to automate risk scoring based on deal and customer data before allocating sales resources or planning follow-ups. It helps prioritize deals by potential risk and assists risk mitigation planning.", + "limitations": "This tool cannot predict exact outcomes or account for real-time dynamic market changes; it relies on input data quality and predefined heuristics. It does not replace human judgement or detailed legal/financial risk analysis.", + "examples": [ + "Create a risk profile for a $150K deal in negotiation stage with competitor involvement and compliance concerns.", + "Assess risk level for a prospecting deal valued at $50K with no known competitors and average historical win rate.", + "Generate risk report for a deal in healthcare industry with high deal value and moderate historical win rate." + ] + }, + "tags": [ + "sales", + "risk-assessment", + "automation", + "lead-management", + "deal-evaluation", + "sales-pipeline", + "risk-management" + ], + "examples": [ + { + "inputJson": "{\"customerId\":\"CUST12345\",\"dealValue\":150000,\"dealStage\":\"negotiation\",\"industry\":\"technology\",\"historicalWinRate\":65,\"competitorPresence\":true,\"complianceConcerns\":true}", + "description": "Risk assessment for a $150K technology deal in negotiation with competitors and compliance flags." + }, + { + "inputJson": "{\"customerId\":\"LEAD67890\",\"dealValue\":50000,\"dealStage\":\"prospecting\",\"industry\":\"retail\",\"historicalWinRate\":40,\"competitorPresence\":false,\"complianceConcerns\":false}", + "description": "Risk profile for a $50K retail prospecting deal with no competitor engagement or compliance issues." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Risk", + "context": null + } + }, + { + "name": "sales-automation.createVideo", + "description": "Generates a personalized sales video by combining provided script text, customer data, and optional branding assets. Accepts input script and customization options, then produces a ready-to-share video file URL optimized for outreach campaigns.", + "category": "sales-automation", + "parameters": [ + { + "name": "scriptText", + "type": "string", + "description": "The full text script to be narrated or displayed in the video.", + "required": true, + "defaultValue": "" + }, + { + "name": "customerName", + "type": "string", + "description": "Name of the customer to personalize the video content.", + "required": false, + "defaultValue": "" + }, + { + "name": "brandingAssets", + "type": "object", + "description": "Optional branding elements including logo URL and brand colors.", + "required": false, + "defaultValue": "" + }, + { + "name": "voiceType", + "type": "string", + "description": "Type of synthetic voice for narration (e.g., male, female, or specific voice style).", + "required": false, + "defaultValue": "female" + }, + { + "name": "videoLength", + "type": "number", + "description": "Desired length of the video in seconds; automatically adjusted if script is shorter.", + "required": false, + "defaultValue": "60" + }, + { + "name": "backgroundMusicUrl", + "type": "string", + "description": "URL to background music track to include in the video.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeSubtitles", + "type": "boolean", + "description": "Whether to include subtitles synchronized with narration.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the URL to the generated video file and metadata such as video duration and format." + }, + "aiAgent": { + "useCase": "Use this tool to create personalized sales outreach videos tailored to individual customers or segments by inputting custom scripts and branding details. It is ideal for automated campaign generation where videos enhance engagement and conversion.", + "limitations": "This tool cannot capture live video or real human actor footage; it generates synthesized video content from text and assets only. Video quality depends on input script length and asset resolution.", + "examples": [ + "Create a personalized introduction video for a prospect using their name and our company branding.", + "Generate a product demo video highlighting new features with narration and subtitles.", + "Produce a short sales pitch video with background music and our corporate logo overlay." + ] + }, + "tags": [ + "sales", + "video-creation", + "personalization", + "automation", + "outreach", + "branding" + ], + "examples": [ + { + "inputJson": "{\"scriptText\":\"Hello, [customerName]! We're excited to offer you an exclusive deal.\",\"customerName\":\"Jane\",\"brandingAssets\":{\"logoUrl\":\"https://example.com/logo.png\",\"primaryColor\":\"#0047AB\"},\"voiceType\":\"female\",\"videoLength\":45,\"includeSubtitles\":true}", + "description": "Create a personalized 45-second sales video for a customer named Jane, including company logo and subtitles." + }, + { + "inputJson": "{\"scriptText\":\"Introducing the latest features of our platform. Boost your productivity today.\",\"voiceType\":\"male\",\"backgroundMusicUrl\":\"https://example.com/music.mp3\",\"includeSubtitles\":false}", + "description": "Generate a product demo video narrated by a male voice with background music but no subtitles." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Video", + "context": null + } + }, + { + "name": "sales-automation.createVariable", + "description": "Creates or defines a dynamic variable within the sales automation system. Accepts parameters defining the variable's name, type, initial value, and description. Processes these inputs to register the variable, enabling its use throughout sales workflows and automation scripts. Outputs a confirmation with the variable's details and unique identifier.", + "category": "sales-automation", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The unique name identifier for the variable to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "variableType", + "type": "string", + "description": "Data type of the variable (e.g., string, number, boolean, date).", + "required": true, + "defaultValue": "" + }, + { + "name": "initialValue", + "type": "string", + "description": "Initial value of the variable, expressed as string; must be convertible to variableType.", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Brief explanation about the purpose or use of this variable.", + "required": false, + "defaultValue": "" + }, + { + "name": "isGlobal", + "type": "boolean", + "description": "Determines if this variable is available globally across all sales workflows or localized to a specific workflow.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object confirming the creation of the variable, including the variable's name, type, initial value, description, scope, and a unique variable ID." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically define or register new variables in the sales automation environment to customize or extend sales processes. For instance, when automating lead scoring, tracking custom customer attributes, or integrating third-party data points dynamically.", + "limitations": "This tool only creates variables and does not assign or update variable values during workflow execution. It cannot validate complex data types or execute scripts based on variable values.", + "examples": [ + "Create a new numeric variable named 'leadScore' with initial value 0 to be used globally.", + "Define a boolean variable 'isQualifiedLead' with default false, local to a specific sales automation workflow.", + "Create a string variable 'customerRegion' without an initial value and add a description for contextual use." + ] + }, + "tags": [ + "sales", + "automation", + "variable", + "dynamicData", + "workflow", + "leadManagement" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"leadScore\",\"variableType\":\"number\",\"initialValue\":\"0\",\"description\":\"Stores the calculated lead score.\",\"isGlobal\":true}", + "description": "Create a global numeric variable named 'leadScore' initialized to 0 for scoring leads." + }, + { + "inputJson": "{\"variableName\":\"isQualifiedLead\",\"variableType\":\"boolean\",\"initialValue\":\"false\",\"description\":\"Indicates if lead meets qualification criteria.\",\"isGlobal\":false}", + "description": "Create a local boolean variable 'isQualifiedLead' initialized to false for workflow use only." + }, + { + "inputJson": "{\"variableName\":\"customerRegion\",\"variableType\":\"string\",\"description\":\"Region classification of the customer.\",\"isGlobal\":true}", + "description": "Create a global string variable 'customerRegion' without initial value but with a description." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Variable", + "context": null + } + }, + { + "name": "sales-automation.createOpportunity", + "description": "Creates a new sales opportunity record based on provided customer and deal information. Accepts input details like account name, potential value, expected close date, sales stage, and related contacts. Processes this data to generate a structured opportunity entry suitable for sales pipeline tracking. Returns confirmation including the unique opportunity ID and summary details.", + "category": "sales-automation", + "parameters": [ + { + "name": "accountName", + "type": "string", + "description": "Name of the customer or account this opportunity is associated with", + "required": true, + "defaultValue": "" + }, + { + "name": "opportunityName", + "type": "string", + "description": "Title or name of the sales opportunity", + "required": true, + "defaultValue": "" + }, + { + "name": "potentialValue", + "type": "number", + "description": "Estimated monetary value of the opportunity in dollars", + "required": true, + "defaultValue": "" + }, + { + "name": "expectedCloseDate", + "type": "string", + "description": "Expected date for closing the deal in ISO 8601 format (YYYY-MM-DD)", + "required": false, + "defaultValue": "" + }, + { + "name": "salesStage", + "type": "string", + "description": "Current stage of the opportunity in the sales pipeline (e.g., Qualification, Proposal, Negotiation)", + "required": false, + "defaultValue": "Qualification" + }, + { + "name": "contacts", + "type": "array", + "description": "List of contact objects linked to this opportunity, each containing name and email", + "required": false, + "defaultValue": "[]" + }, + { + "name": "description", + "type": "string", + "description": "Additional notes or description related to the opportunity", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Result object containing opportunityId (string), accountName, opportunityName, potentialValue, salesStage, and confirmation message." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically add a new sales opportunity into a CRM or sales pipeline system, especially when automating lead processing or integrating with sales dashboards. It helps agents formalize deals and track pipeline status automatically.", + "limitations": "This tool does not validate account existence or enrich data from external sources; it assumes provided data is correct and does not manage associated tasks or follow-ups.", + "examples": [ + "Create an opportunity named 'Upgrade Project' with a potential value of $50,000 for Acme Corp, expected to close next month at negotiation stage.", + "Add a new opportunity for 'Beta Inc' with multiple contacts and no expected close date specified.", + "Generate an opportunity for 'Gamma LLC' with the description 'Enterprise deal' and default sales stage." + ] + }, + "tags": [ + "sales", + "automation", + "crm", + "lead management", + "opportunity creation", + "pipeline" + ], + "examples": [ + { + "inputJson": "{\"accountName\":\"Acme Corp\",\"opportunityName\":\"Upgrade Project\",\"potentialValue\":50000,\"expectedCloseDate\":\"2024-07-15\",\"salesStage\":\"Negotiation\",\"contacts\":[{\"name\":\"Jane Doe\",\"email\":\"jane.doe@acme.com\"}],\"description\":\"Upgrade of existing software license.\"}", + "description": "Creating an opportunity for Acme Corp with contacts and specified close date and stage." + }, + { + "inputJson": "{\"accountName\":\"Beta Inc\",\"opportunityName\":\"New Consulting Contract\",\"potentialValue\":150000,\"contacts\":[{\"name\":\"John Smith\",\"email\":\"john.smith@beta.com\"}, {\"name\":\"Alice Brown\",\"email\":\"alice.brown@beta.com\"}]}", + "description": "Opportunity for Beta Inc without expected close date or sales stage (defaults applied)." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Opportunity", + "context": null + } + }, + { + "name": "sales-automation.createTable", + "description": "Creates a structured data table representing sales leads or opportunities from provided input arrays or objects. Accepts column definitions and row data, then outputs a formatted table object suitable for sales data management and reporting.", + "category": "sales-automation", + "parameters": [ + { + "name": "columns", + "type": "array", + "description": "An array of column definitions where each column has a 'name' and 'type' (e.g., 'string', 'number', 'date') representing the sales data fields. Required columns to define the table schema.", + "required": true, + "defaultValue": "" + }, + { + "name": "rows", + "type": "array", + "description": "Array of row data objects matching the column schema, each representing a sales lead or opportunity entry.", + "required": true, + "defaultValue": "" + }, + { + "name": "tableName", + "type": "string", + "description": "Optional friendly name for the sales data table to identify in UI or reports.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeTotals", + "type": "boolean", + "description": "Flag to indicate whether to automatically calculate and include totals (e.g., total value) at the bottom of numeric columns.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns a table object including the original columns, rows, optional totals summary, and the tableName if provided." + }, + "aiAgent": { + "useCase": "Use this tool when you need to transform raw sales lead data or opportunity entries into a structured table format for management, analytics, or export. It helps automate the creation of organized sales datasets from arrays of lead data and column specifications.", + "limitations": "Does not connect to live sales CRM systems or perform data enrichment. It only formats provided data into a table structure and calculates simple totals for numeric columns.", + "examples": [ + "Create a sales leads table with columns for 'Lead Name', 'Status', and 'Estimated Value' including totals for the value column.", + "Generate a table named 'Q2 Opportunities' from a JSON array of opportunity records with specified columns.", + "Build a simple table from given rows with no totals and default name." + ] + }, + "tags": [ + "sales", + "automation", + "table", + "leads", + "data", + "management", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"columns\":[{\"name\":\"Lead Name\",\"type\":\"string\"},{\"name\":\"Status\",\"type\":\"string\"},{\"name\":\"Estimated Value\",\"type\":\"number\"}],\"rows\":[{\"Lead Name\":\"Acme Inc.\",\"Status\":\"Contacted\",\"Estimated Value\":50000},{\"Lead Name\":\"Beta LLC\",\"Status\":\"Qualified\",\"Estimated Value\":75000}],\"tableName\":\"Sales Leads\",\"includeTotals\":true}", + "description": "Create a sales leads table with totals on 'Estimated Value'." + }, + { + "inputJson": "{\"columns\":[{\"name\":\"Opportunity\",\"type\":\"string\"},{\"name\":\"Stage\",\"type\":\"string\"},{\"name\":\"Close Date\",\"type\":\"date\"}],\"rows\":[{\"Opportunity\":\"Project X\",\"Stage\":\"Proposal\",\"Close Date\":\"2024-08-15\"},{\"Opportunity\":\"Project Y\",\"Stage\":\"Negotiation\",\"Close Date\":\"2024-09-01\"}],\"tableName\":\"Q3 Opportunities\",\"includeTotals\":false}", + "description": "Generate opportunity table for Q3 with no totals." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Table", + "context": null + } + }, + { + "name": "sales-automation.createQuery", + "description": "Generates a structured query to retrieve or filter sales leads and customer data based on given criteria such as lead status, geography, product interest, and engagement level. Accepts filter parameters and outputs a JSON query object suitable for use with sales CRM databases or APIs.", + "category": "sales-automation", + "parameters": [ + { + "name": "leadStatus", + "type": "string", + "description": "Filter leads by their current status (e.g., \"new\", \"contacted\", \"qualified\"). Empty means no status filter.", + "required": false, + "defaultValue": "" + }, + { + "name": "regions", + "type": "array", + "description": "List of geographic regions to include (e.g., [\"North America\", \"EMEA\"]). Empty list means all regions.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "productInterest", + "type": "string", + "description": "Filter leads who have shown interest in a specific product or product category. Empty means no product filter.", + "required": false, + "defaultValue": "" + }, + { + "name": "minEngagementScore", + "type": "number", + "description": "Minimum engagement score (0-100) to include leads that meet or exceed this threshold. Zero means no minimum.", + "required": false, + "defaultValue": "0" + }, + { + "name": "includeInactive", + "type": "boolean", + "description": "Whether to include leads marked as inactive. Default is false.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing the constructed query with applied filters, formatted for CRM system compatibility." + }, + "aiAgent": { + "useCase": "Use this tool when the AI agent needs to dynamically generate a query to extract or segment sales leads from CRM data based on variable filtering criteria supplied by user context or sales strategies. It automates query composition to ensure valid and structured filter logic without manual coding.", + "limitations": "Cannot execute the query or fetch results; only builds the query syntax. It does not validate filter values against live CRM data schemas or guarantee compatibility with every CRM system's specific query language.", + "examples": [ + "Create a query for leads in EMEA interested in 'ProductX' with engagement over 70, excluding inactive leads.", + "Generate a query to retrieve new leads from North America without product interest filter.", + "Build a query to include all contacted leads regardless of region or product interest, including inactive leads." + ] + }, + "tags": [ + "sales", + "automation", + "lead-management", + "query-generation", + "crm", + "filtering" + ], + "examples": [ + { + "inputJson": "{\"leadStatus\":\"new\",\"regions\":[\"North America\"],\"productInterest\":\"\",\"minEngagementScore\":0,\"includeInactive\":false}", + "description": "Query for all new leads in North America, no product filter, excluding inactive leads." + }, + { + "inputJson": "{\"leadStatus\":\"contacted\",\"regions\":[],\"productInterest\":\"ProductX\",\"minEngagementScore\":50,\"includeInactive\":false}", + "description": "Query for contacted leads interested in ProductX with engagement score >= 50 across all regions, excluding inactive leads." + }, + { + "inputJson": "{\"leadStatus\":\"\",\"regions\":[\"EMEA\",\"APAC\"],\"productInterest\":\"ProductY\",\"minEngagementScore\":0,\"includeInactive\":true}", + "description": "Query for all leads in EMEA and APAC interested in ProductY including inactive leads, no minimum engagement score filtering." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Query", + "context": null + } + }, + { + "name": "sales-automation.createComponent", + "description": "Creates a reusable sales automation UI component by accepting configuration parameters such as component type, data source, and display options. The tool processes these inputs to generate a ready-to-integrate code snippet or module for use in CRM or sales dashboards, enabling quick assembly of custom sales tools.", + "category": "sales-automation", + "parameters": [ + { + "name": "componentType", + "type": "string", + "description": "Type of sales component to create, e.g., leadList, salesFunnel, contactCard.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataSource", + "type": "string", + "description": "Identifier or URL of the data source for populating the component, such as an API endpoint or database name.", + "required": true, + "defaultValue": "" + }, + { + "name": "displayOptions", + "type": "object", + "description": "Settings controlling the visual presentation, including themes, layout styles, and filters.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "refreshInterval", + "type": "number", + "description": "Time interval in seconds for auto-refreshing component data.", + "required": false, + "defaultValue": "0" + }, + { + "name": "enableInteractions", + "type": "boolean", + "description": "Whether to enable interactive features like sorting, filtering or inline editing within the component.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated component code as a string along with metadata like component ID and preview URL if applicable." + }, + "aiAgent": { + "useCase": "Use this tool when needing to quickly generate customizable sales-related UI components to integrate with CRM systems or sales dashboards, especially when the component requires tailored data feeds and visual settings. It accelerates prototyping and deployment of sales automation interfaces.", + "limitations": "Does not automatically connect components to backend systems; integration must be handled separately. Generated code may require manual adjustments to fit complex custom environments.", + "examples": [ + "Create a lead list component that displays recent leads from our CRM API with a dark theme.", + "Generate a sales funnel visualization component sourcing data from the sales database with refresh every 60 seconds.", + "Make a contact card component with inline editing enabled using a local data source." + ] + }, + "tags": [ + "sales", + "automation", + "component", + "UI", + "CRM", + "dashboard", + "code-generation" + ], + "examples": [ + { + "inputJson": "{\"componentType\":\"leadList\",\"dataSource\":\"https://api.crm.example.com/leads\",\"displayOptions\":{\"theme\":\"dark\",\"columns\":[\"name\",\"status\",\"lastContacted\"]},\"refreshInterval\":120,\"enableInteractions\":true}", + "description": "Generate a dark-themed lead list component pulling lead data from a CRM API with auto-refresh every two minutes." + }, + { + "inputJson": "{\"componentType\":\"salesFunnel\",\"dataSource\":\"sales_db\",\"displayOptions\":{\"layout\":\"vertical\"},\"refreshInterval\":0,\"enableInteractions\":false}", + "description": "Create a vertical-layout sales funnel component using local sales database without auto-refresh and no interactive features." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Component", + "context": null + } + }, + { + "name": "finance-tools.analyzeLead", + "description": "This tool analyzes business lead data to evaluate lead quality, predict conversion likelihood, and segment leads for targeted marketing. It accepts lead attributes such as demographics, engagement metrics, and historical interactions, then applies statistical and ML algorithms to produce a detailed lead score, conversion probability, and recommended next steps to optimize sales efforts.", + "category": "finance-tools", + "parameters": [ + { + "name": "leadData", + "type": "object", + "description": "An object containing lead attributes including demographics, engagement history, and interaction details required for analysis.", + "required": true, + "defaultValue": "" + }, + { + "name": "modelType", + "type": "string", + "description": "The predictive model type to use for conversion likelihood (e.g., 'logisticRegression', 'randomForest').", + "required": false, + "defaultValue": "logisticRegression" + }, + { + "name": "includeSegmentation", + "type": "boolean", + "description": "Whether to perform lead segmentation based on behavior and attributes.", + "required": false, + "defaultValue": "true" + }, + { + "name": "historicalConversionRate", + "type": "number", + "description": "The average historical conversion rate to calibrate the model, if available.", + "required": false, + "defaultValue": "" + }, + { + "name": "engagementThreshold", + "type": "number", + "description": "Numeric threshold defining minimum engagement level to consider a lead active.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing leadScore (number), conversionProbability (number between 0 and 1), segmentationLabel (string), and recommendedNextSteps (string) to guide sales strategy." + }, + "aiAgent": { + "useCase": "Use this tool when evaluating potential sales leads to prioritize outreach and optimize conversion efforts. It helps agents assign meaningful scores and predictions based on historical and behavioral data, aiding in more effective sales funnel management.", + "limitations": "The tool relies on the quality and completeness of input lead data; it does not guarantee conversion but provides probabilistic estimates. It does not replace human judgment or incorporate real-time market conditions beyond provided data.", + "examples": [ + "Analyze this lead's potential for conversion based on their demographic and past engagement.", + "Given a batch of new leads, identify high-value prospects likely to convert.", + "Provide segmentation and next step recommendations to improve sales outreach effectiveness." + ] + }, + "tags": [ + "finance", + "leadAnalysis", + "sales", + "conversion", + "predictiveModeling", + "segmentation" + ], + "examples": [ + { + "inputJson": "{\"leadData\":{\"age\":35,\"industry\":\"Technology\",\"lastContactDaysAgo\":10,\"emailOpens\":5,\"websiteVisits\":12,\"jobTitle\":\"CTO\"},\"modelType\":\"randomForest\",\"includeSegmentation\":true,\"historicalConversionRate\":0.12,\"engagementThreshold\":3}", + "description": "Analyze a technology sector lead with moderate engagement metrics to generate a lead score, conversion probability, segmentation label, and suggested next steps." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Lead", + "context": null + } + }, + { + "name": "finance-tools.analyzeNotification", + "description": "Analyzes financial notification messages to extract and summarize key financial events, alerts, or transactions. Accepts notification text or structured JSON messages, performs natural language understanding and data extraction to identify financial impacts or actions required, and outputs a structured summary highlighting critical financial details and recommended next steps.", + "category": "finance-tools", + "parameters": [ + { + "name": "notificationContent", + "type": "string", + "description": "The text content of the financial notification message to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "notificationFormat", + "type": "string", + "description": "Format of the notification input, e.g., 'text' or 'json'. Defaults to 'text'.", + "required": false, + "defaultValue": "text" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the notification content for accurate parsing and analysis, default is 'en' (English).", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "Whether to include recommended actions or next steps in the analysis output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "sensitivityLevel", + "type": "string", + "description": "Level of financial sensitivity for alert prioritization: 'low', 'medium', or 'high'. Defaults to medium.", + "required": false, + "defaultValue": "medium" + } + ], + "returns": { + "type": "object", + "description": "An object containing extracted key details such as event type, affected accounts, monetary amounts, urgency level, and optionally recommended actions or alerts." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent receives a financial notification (email, SMS, app alert) and needs to interpret its content to extract actionable financial insights and prioritize responses. It helps in automating the understanding of varied financial communications to guide user decision-making or trigger downstream processing.", + "limitations": "Cannot verify the factual accuracy of the notification content or execute financial transactions. May have reduced accuracy with highly ambiguous or poorly formatted inputs.", + "examples": [ + "Analyze notification content about a credit card transaction alert to extract amount, merchant, and potential fraud indication.", + "Interpret an account balance update notification to summarize changes and flag low balance alerts.", + "Process JSON-formatted bank notification messages to extract transaction details and urgency for follow-up." + ] + }, + "tags": [ + "finance", + "notification", + "analysis", + "financial-alerts", + "data-extraction", + "summarization" + ], + "examples": [ + { + "inputJson": "{\"notificationContent\":\"Alert: Your credit card ending 1234 was charged $250.00 at Amazon on 2024-05-25.\",\"notificationFormat\":\"text\",\"language\":\"en\",\"includeRecommendations\":true,\"sensitivityLevel\":\"high\"}", + "description": "Analyze text notification of a credit card transaction alert for amount, merchant, date, and fraud risk." + }, + { + "inputJson": "{\"notificationContent\":\"{\\\"type\\\":\\\"balance_update\\\",\\\"account\\\":\\\"Savings\\\",\\\"new_balance\\\":1500.00,\\\"timestamp\\\":\\\"2024-05-20T14:30:00Z\\\"}\",\"notificationFormat\":\"json\",\"language\":\"en\",\"includeRecommendations\":false}", + "description": "Analyze JSON notification of a savings account balance update without recommendations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Notification", + "context": null + } + }, + { + "name": "sales-automation.createArticle", + "description": "Creates a sales-focused article draft based on input topic, target audience, desired tone, and optional keywords. The tool uses natural language generation to produce a structured article including introduction, body, and conclusion aimed at engaging potential leads and guiding them through the sales funnel.", + "category": "sales-automation", + "parameters": [ + { + "name": "topic", + "type": "string", + "description": "The main subject or theme of the sales article to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetAudience", + "type": "string", + "description": "Description of the intended readership or buyer persona for tailoring content tone and style.", + "required": true, + "defaultValue": "" + }, + { + "name": "tone", + "type": "string", + "description": "Desired writing tone for the article, such as professional, casual, persuasive, or informative.", + "required": false, + "defaultValue": "professional" + }, + { + "name": "keywords", + "type": "array", + "description": "A list of key terms or phrases to be incorporated into the article for SEO and relevance.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "wordCount", + "type": "number", + "description": "Approximate desired length of the article in words.", + "required": false, + "defaultValue": "800" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated article text with structured sections including title, introduction, body, and conclusion." + }, + "aiAgent": { + "useCase": "Use this tool when generating written sales content such as blog articles, whitepapers, or marketing collateral to engage leads and nurture them through the sales funnel. The tool helps automate content creation based on strategic inputs to save time and maintain consistency.", + "limitations": "The tool cannot replace deep domain expertise or human creativity entirely and may require human review and editing to align with specific branding or regulatory requirements.", + "examples": [ + "Create a persuasive sales article on cloud software benefits targeting IT managers.", + "Generate a casual tone article about new sales techniques for small business owners.", + "Write an 800-word informative article on cybersecurity solutions for tech-savvy executives." + ] + }, + "tags": [ + "sales", + "content-generation", + "automation", + "marketing", + "lead-nurturing", + "SEO", + "writing" + ], + "examples": [ + { + "inputJson": "{\"topic\":\"Benefits of CRM Systems\",\"targetAudience\":\"Sales Team Managers\",\"tone\":\"professional\",\"keywords\":[\"CRM\",\"customer relationship management\",\"sales efficiency\"],\"wordCount\":600}", + "description": "Create a professional sales article about CRM benefits targeting sales managers with selected keywords." + }, + { + "inputJson": "{\"topic\":\"Effective Cold Email Strategies\",\"targetAudience\":\"Startup Founders\",\"tone\":\"casual\",\"keywords\":[\"cold email\",\"lead generation\"],\"wordCount\":500}", + "description": "Generate a casual article on cold email strategies aimed at startup founders to boost lead generation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Article", + "context": null + } + }, + { + "name": "finance-tools.analyzeEvent", + "description": "Analyzes financial events such as transactions, investments, or market occurrences. Accepts detailed event data including type, date, amount, and category. Processes this data to provide insights on impact, trends, risk factors, and recommendations. Outputs a structured analysis report highlighting key financial implications and suggested actions.", + "category": "finance-tools", + "parameters": [ + { + "name": "eventType", + "type": "string", + "description": "Type of financial event (e.g., transaction, investment, dividend).", + "required": true, + "defaultValue": "" + }, + { + "name": "eventDate", + "type": "string", + "description": "Date of the financial event in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "amount", + "type": "number", + "description": "Monetary amount related to the event.", + "required": true, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code for the amount (ISO 4217, e.g., USD, EUR).", + "required": true, + "defaultValue": "" + }, + { + "name": "category", + "type": "string", + "description": "Category of the event (e.g., income, expense, investment).", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional data relevant to the event, such as associated accounts, counterparties, or notes.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "riskLevel", + "type": "string", + "description": "Optional risk level associated with the event (e.g., low, medium, high).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Structured report including impact summary, trend identification, risk assessment, and recommended financial actions." + }, + "aiAgent": { + "useCase": "Use this tool when you need to extract actionable financial insights from discrete financial events, such as evaluating a transaction's effect on cash flow, assessing an investment's performance, or understanding market event implications. Suitable for financial planning, accounting review, and investment analysis workflows.", + "limitations": "Cannot replace comprehensive financial advisory; does not perform forecasting based on external market data; analysis is limited to provided event data without broader context.", + "examples": [ + "Analyze the investment event on 2024-04-01 of $10,000 USD in stock purchase.", + "Provide risk assessment and recommendations for a high-value transaction event categorized as expense.", + "Summarize impact and trends from a series of dividend events for portfolio evaluation." + ] + }, + "tags": [ + "finance", + "event-analysis", + "transaction", + "investment", + "risk-assessment", + "financial-insights" + ], + "examples": [ + { + "inputJson": "{\"eventType\":\"investment\",\"eventDate\":\"2024-04-01\",\"amount\":10000,\"currency\":\"USD\",\"category\":\"stock purchase\",\"metadata\":{\"ticker\":\"AAPL\",\"broker\":\"XYZ Investments\"},\"riskLevel\":\"medium\"}", + "description": "Analysis of a stock purchase investment event including amount, date, and associated metadata." + }, + { + "inputJson": "{\"eventType\":\"transaction\",\"eventDate\":\"2024-05-15\",\"amount\":1500,\"currency\":\"EUR\",\"category\":\"expense\",\"metadata\":{\"vendor\":\"Office Supplies Co.\"},\"riskLevel\":\"low\"}", + "description": "Analyzing a business expense transaction to evaluate its impact on budget and cash flow." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Event", + "context": null + } + }, + { + "name": "finance-tools.analyzeMetric", + "description": "Analyzes financial metrics based on provided historical data and parameters. Accepts metric name, array of time-stamped financial values, and optional filters such as date range and comparison benchmarks. Processes trend analysis, calculates key statistics (mean, variance), and optionally compares results against industry benchmarks. Outputs a detailed report with numeric summaries and trend insights.", + "category": "finance-tools", + "parameters": [ + { + "name": "metricName", + "type": "string", + "description": "The name of the financial metric to analyze (e.g., revenue, profit margin)", + "required": true, + "defaultValue": "" + }, + { + "name": "dataPoints", + "type": "array", + "description": "An array of objects representing data points, each with a timestamp and value for the metric", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "ISO 8601 formatted date string to filter data points from this date onward", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "ISO 8601 formatted date string to filter data points up to this date", + "required": false, + "defaultValue": "" + }, + { + "name": "compareToBenchmark", + "type": "boolean", + "description": "Flag indicating whether to compare the metric analysis against industry benchmarks", + "required": false, + "defaultValue": "false" + }, + { + "name": "benchmarkValues", + "type": "object", + "description": "Optional object containing benchmark metric values to compare against, keys are metric names", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing statistical summary (mean, variance, min, max), trend analysis (increasing, decreasing, stable), and optional comparison results highlighting deviations from benchmarks" + }, + "aiAgent": { + "useCase": "Use this tool when analyzing historical financial metrics to understand performance trends, variability, and benchmarking against industry standards. Ideal for financial analysts and decision-makers aiming to extract actionable insights from raw metric data over customizable timeframes.", + "limitations": "This tool analyzes provided numerical financial data points only and does not perform data extraction, collection, or forecasting beyond trend analysis. It relies on proper timestamped data input and does not handle unstructured or incomplete data.", + "examples": [ + "Analyze revenue metric from last fiscal year and compare against industry benchmarks.", + "Evaluate profit margin trends over the past 6 months without benchmarking.", + "Calculate variability and identify trends of operating expenses between two specified dates." + ] + }, + "tags": [ + "financial", + "analysis", + "metrics", + "benchmarking", + "trend", + "statistics" + ], + "examples": [ + { + "inputJson": "{\"metricName\":\"revenue\",\"dataPoints\":[{\"timestamp\":\"2023-01-01\",\"value\":10000},{\"timestamp\":\"2023-02-01\",\"value\":12000},{\"timestamp\":\"2023-03-01\",\"value\":9000}],\"startDate\":\"2023-01-01\",\"endDate\":\"2023-03-31\",\"compareToBenchmark\":true,\"benchmarkValues\":{\"revenue\":11000}}", + "description": "Analyzes revenue metric from Q1 2023 compared to a benchmark value." + }, + { + "inputJson": "{\"metricName\":\"profitMargin\",\"dataPoints\":[{\"timestamp\":\"2023-04-01\",\"value\":0.15},{\"timestamp\":\"2023-05-01\",\"value\":0.14},{\"timestamp\":\"2023-06-01\",\"value\":0.16}],\"compareToBenchmark\":false}", + "description": "Evaluates profit margin trend for the past 3 months without benchmarking." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Metric", + "context": null + } + }, + { + "name": "finance-tools.analyzeParagraph", + "description": "Analyzes a text paragraph related to financial content to extract key financial metrics, sentiments, and thematic topics. Accepts a string paragraph input, processes the text using natural language processing specialized for finance, and returns structured data including detected financial concepts, sentiment score, and summary keywords.", + "category": "finance-tools", + "parameters": [ + { + "name": "paragraphText", + "type": "string", + "description": "The financial text paragraph to analyze for metrics, sentiment, and themes.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language of the paragraph text for proper linguistic analysis. Defaults to 'en' (English).", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeSentiment", + "type": "boolean", + "description": "Whether to include sentiment analysis score in the output. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeKeywords", + "type": "boolean", + "description": "Whether to extract and return key thematic keywords or phrases from the paragraph. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "customFinanceTerms", + "type": "array", + "description": "Optional list of custom finance-related terms or phrases to enhance detection accuracy.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing recognized financial metrics, sentiment score, and key topics extracted from the paragraph." + }, + "aiAgent": { + "useCase": "Use this tool when you need to extract structured financial insights from unstructured text paragraphs, such as summarizing reports, understanding sentiment in earnings call transcripts, or detecting key financial topics in news articles. It helps transform narrative financial content into actionable data points.", + "limitations": "This tool analyzes text but does not verify factual accuracy or perform deep quantitative financial modeling. It may not handle highly technical or niche financial jargon beyond provided custom terms.", + "examples": [ + "Analyze financial paragraph for key metrics and sentiment.", + "Extract main financial themes and sentiment from quarterly earnings text.", + "Summarize key financial elements and sentiment from an investment report section." + ] + }, + "tags": [ + "finance", + "text analysis", + "sentiment", + "financial metrics", + "NLP", + "paragraph", + "financial reporting" + ], + "examples": [ + { + "inputJson": "{\"paragraphText\":\"The company's revenue increased by 15% year-over-year, driven by strong growth in the software division. However, operating expenses rose as well, impacting net income. Overall sentiment remains cautiously optimistic.\",\"language\":\"en\",\"includeSentiment\":true,\"includeKeywords\":true}", + "description": "Analyzing a financial report paragraph to extract growth metrics, expense impact, and sentiment." + }, + { + "inputJson": "{\"paragraphText\":\"Despite a volatile market, the firm managed to maintain stable cash flow and reduce debt levels significantly.\",\"language\":\"en\",\"includeSentiment\":true,\"includeKeywords\":true}", + "description": "Extracting financial stability indicators and sentiment from a brief investment update." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Paragraph", + "context": null + } + }, + { + "name": "finance-tools.formatFunction", + "description": "Formats a financial calculation function expressed as a JavaScript or TypeScript code string. Accepts a raw function string including variables and calculation logic, applies standardized indentation, consistent spacing, and optional numeric formatting style for financial clarity, and outputs a clean, readable formatted function string suitable for documentation or integration.", + "category": "finance-tools", + "parameters": [ + { + "name": "functionCode", + "type": "string", + "description": "The raw JavaScript/TypeScript function code to format, containing financial calculations. Required.", + "required": true, + "defaultValue": "" + }, + { + "name": "indentationSpaces", + "type": "number", + "description": "Number of spaces to use for indentation in the formatted output. Defaults to 2 for readability.", + "required": false, + "defaultValue": "2" + }, + { + "name": "useSemicolons", + "type": "boolean", + "description": "Whether to ensure all statements end with semicolons. Defaults to true for standard syntax.", + "required": false, + "defaultValue": "true" + }, + { + "name": "formatNumericLiterals", + "type": "boolean", + "description": "If true, formats numeric literals to include thousand separators and fixed decimals where applicable.", + "required": false, + "defaultValue": "false" + }, + { + "name": "lineWidth", + "type": "number", + "description": "Maximum line width before wrapping long lines of code. Default is 80 characters.", + "required": false, + "defaultValue": "80" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted function code string with standardized formatting suitable for financial contexts, ensuring both code correctness and clarity." + }, + "aiAgent": { + "useCase": "Use this tool when you have a raw or minified financial calculation function in JavaScript or TypeScript that needs to be cleaned up and formatted for better readability, maintenance, or documentation. Ideal for integrating or presenting financial algorithm code clearly in reports or codebases.", + "limitations": "This tool does not perform code validation, semantic error checking, or financial correctness verification. It only formats code style and numeric literals as specified. It cannot parse or rewrite business logic beyond formatting.", + "examples": [ + "Format a raw financial interest calculation function before embedding in a financial report.", + "Clean up legacy finance-related script code for maintainability in a project.", + "Convert a minified financial function snippet into readable source code for review." + ] + }, + "tags": [ + "finance", + "formatting", + "code", + "JavaScript", + "TypeScript", + "financial-calculations", + "developer-tools" + ], + "examples": [ + { + "inputJson": "{\"functionCode\":\"function calcInterest(principal, rate, time) {return principal*rate*time/100}\",\"indentationSpaces\":4,\"useSemicolons\":true,\"formatNumericLiterals\":false,\"lineWidth\":80}", + "description": "Format a simple interest calculation function with 4 spaces indentation and semicolons." + }, + { + "inputJson": "{\"functionCode\":\"function totalAmount(p,r,t){return p+r*p*t/100}\",\"indentationSpaces\":2,\"useSemicolons\":true,\"formatNumericLiterals\":true,\"lineWidth\":80}", + "description": "Format a total amount calculation function with numeric literals formatted for financial clarity." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Function", + "context": null + } + }, + { + "name": "finance-tools.renderFile", + "description": "Renders a financial document file into a specified output format suitable for viewing or sharing. Accepts file content or file path (PDF, Excel, CSV), processes it by converting or styling financial data, and outputs a rendered document (PDF, HTML, or image) with visualization elements like charts or tables if requested.", + "category": "finance-tools", + "parameters": [ + { + "name": "fileContent", + "type": "string", + "description": "Base64-encoded content of the financial file to render. Optional if filePath is provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "filePath", + "type": "string", + "description": "Local or accessible path/URL of the financial file to render (PDF, XLSX, CSV). Optional if fileContent is provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format of the rendered file. Supported values: pdf, html, png.", + "required": true, + "defaultValue": "pdf" + }, + { + "name": "includeCharts", + "type": "boolean", + "description": "Whether to generate and include charts based on financial data in the rendered output.", + "required": false, + "defaultValue": "false" + }, + { + "name": "pageRange", + "type": "string", + "description": "Page range to render from the document (applies mainly to PDFs), e.g., '1-3'. If empty, renders whole document.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the rendered file content as a base64 string and metadata about the output format and size." + }, + "aiAgent": { + "useCase": "Use this tool when needing to present, share, or visually analyze financial document files by converting raw files into a unified readable format with optional visualization. Useful for generating previews, reports, or embedding financial documents in presentations or web pages.", + "limitations": "Cannot edit underlying financial data or extract detailed analytical data; focuses on rendering visual representation only. Limited support for complex proprietary file formats beyond PDF, XLSX, and CSV.", + "examples": [ + "Render the attached Excel financial report as a PDF file including charts for visualization.", + "Convert an uploaded CSV file containing financial transactions into an HTML table for embedding in a webpage.", + "Generate a PNG image preview of the first two pages of a financial PDF document without charts." + ] + }, + "tags": [ + "finance", + "document rendering", + "file conversion", + "visualization", + "pdf", + "excel", + "csv", + "report" + ], + "examples": [ + { + "inputJson": "{\"filePath\":\"https://example.com/reports/quarterly_report.xlsx\",\"outputFormat\":\"pdf\",\"includeCharts\":true}", + "description": "Render an Excel financial report from a URL into a PDF with charts included." + }, + { + "inputJson": "{\"fileContent\":\"JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlIC9DYXRhbG9n\",\"outputFormat\":\"html\",\"includeCharts\":false}", + "description": "Convert base64 encoded PDF content into an HTML format without charts." + }, + { + "inputJson": "{\"filePath\":\"/files/finance_data.csv\",\"outputFormat\":\"png\",\"pageRange\":\"1-2\",\"includeCharts\":false}", + "description": "Create PNG previews from pages 1 to 2 of a CSV file rendered as table images without charts." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "File", + "context": null + } + }, + { + "name": "finance-tools.sendMessage", + "description": "Sends a financial-related message such as payment reminders, invoice notifications, or account alerts to specified recipients via email or SMS. Takes message content, recipient details, channel preference, and optional scheduling data as input, processes delivery through integrated communication channels, and returns status of message dispatch including success or failure and timestamps.", + "category": "finance-tools", + "parameters": [ + { + "name": "recipient", + "type": "string", + "description": "The email address or phone number of the message recipient.", + "required": true, + "defaultValue": "" + }, + { + "name": "messageContent", + "type": "string", + "description": "The body of the message to be sent, including any financial details or instructions.", + "required": true, + "defaultValue": "" + }, + { + "name": "channel", + "type": "string", + "description": "Preferred communication channel: 'email' or 'sms'.", + "required": true, + "defaultValue": "email" + }, + { + "name": "scheduledTime", + "type": "string", + "description": "Optional ISO 8601 formatted date-time to schedule message sending; sends immediately if not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "priority", + "type": "string", + "description": "Message priority level, e.g., 'normal' or 'high'.", + "required": false, + "defaultValue": "normal" + } + ], + "returns": { + "type": "object", + "description": "An object indicating the delivery status, message ID, timestamp of sending, and any error details if applicable." + }, + "aiAgent": { + "useCase": "Use this tool when needing to send financial messages such as payment reminders, alerts about invoice status, or account notifications to clients or internal users, ensuring communication is delivered via preferred channels with optional scheduling.", + "limitations": "Cannot generate message content automatically; relies on provided content. Limited to sending via email or SMS channels only. Does not handle message retries or failure corrections beyond reporting status.", + "examples": [ + "Send a payment reminder email to a client next Monday at 9 AM.", + "Notify a customer immediately via SMS about a failed transaction.", + "Send an invoice notification email with high priority to an accounting department." + ] + }, + "tags": [ + "finance", + "communication", + "messaging", + "notifications", + "email", + "sms", + "alerts" + ], + "examples": [ + { + "inputJson": "{\"recipient\":\"client@example.com\",\"messageContent\":\"Your payment of $500 is due on 2024-07-10.\",\"channel\":\"email\",\"scheduledTime\":\"2024-07-08T09:00:00Z\",\"priority\":\"normal\"}", + "description": "Schedule an email payment reminder to a client for a future date." + }, + { + "inputJson": "{\"recipient\":\"+15551234567\",\"messageContent\":\"Alert: Your recent transaction of $1200 was declined.\",\"channel\":\"sms\",\"priority\":\"high\"}", + "description": "Send an immediate high-priority SMS alert about a declined transaction to a phone number." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Message", + "context": null + } + }, + { + "name": "finance-tools.renderDocument", + "description": "This tool accepts structured financial data and a document template type, then renders a formatted financial document such as an invoice, report, or statement as a PDF or HTML output. It processes input data to populate the template, applies styling, and returns a downloadable document for financial management or client presentation.", + "category": "finance-tools", + "parameters": [ + { + "name": "documentType", + "type": "string", + "description": "Type of financial document to render (e.g., 'invoice', 'report', 'statement').", + "required": true, + "defaultValue": "" + }, + { + "name": "financialData", + "type": "object", + "description": "Structured financial data object containing fields relevant to the chosen document type.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the rendered document: 'pdf' or 'html'.", + "required": false, + "defaultValue": "pdf" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Whether to include a summary section in the document.", + "required": false, + "defaultValue": "true" + }, + { + "name": "locale", + "type": "string", + "description": "Locale code for formatting currencies and dates (e.g., 'en-US', 'fr-FR').", + "required": false, + "defaultValue": "en-US" + } + ], + "returns": { + "type": "object", + "description": "An object containing the rendered document as a base64 string, filename, and mime type for download or display." + }, + "aiAgent": { + "useCase": "Use this tool when you have financial data and need to generate a professional financial document such as invoices, financial reports, or statements for clients or internal use. It helps automate document creation by populating templates according to data and formatting preferences.", + "limitations": "Cannot generate documents without properly structured financial data or unsupported document types. It does not perform data validation or financial calculations, only rendering.", + "examples": [ + "Generate an invoice PDF for client billing using provided financial data.", + "Render a quarterly financial report in HTML format with localized currency and date formats.", + "Create a financial statement document including a summary section in English locale." + ] + }, + "tags": [ + "finance", + "document rendering", + "pdf", + "html", + "invoices", + "reports", + "statements" + ], + "examples": [ + { + "inputJson": "{\"documentType\":\"invoice\",\"financialData\":{\"clientName\":\"Acme Corp\",\"invoiceNumber\":\"INV-1001\",\"date\":\"2024-06-01\",\"items\":[{\"description\":\"Consulting services\",\"quantity\":10,\"unitPrice\":150}],\"currency\":\"USD\"},\"outputFormat\":\"pdf\",\"includeSummary\":true,\"locale\":\"en-US\"}", + "description": "Render a PDF invoice document for Acme Corp using given financial data." + }, + { + "inputJson": "{\"documentType\":\"report\",\"financialData\":{\"title\":\"Q2 Financial Report\",\"periodStart\":\"2024-04-01\",\"periodEnd\":\"2024-06-30\",\"totalRevenue\":120000,\"totalExpenses\":80000,\"netIncome\":40000},\"outputFormat\":\"html\",\"includeSummary\":false,\"locale\":\"en-US\"}", + "description": "Generate an HTML quarterly financial report without summary for internal review." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Document", + "context": null + } + }, + { + "name": "finance-tools.formatReport", + "description": "Formats a financial report provided as structured data into a clean, well-organized textual or HTML report for presentation or record-keeping. Accepts input data including sections, figures, and metadata, applies customizable formatting options such as currency style, decimal precision, date formats, and output format, returning a formatted report string ready for display or export.", + "category": "finance-tools", + "parameters": [ + { + "name": "reportData", + "type": "object", + "description": "The financial report data structured with sections, titles, figures, and notes to format", + "required": true, + "defaultValue": "" + }, + { + "name": "currencySymbol", + "type": "string", + "description": "Currency symbol to use for monetary values in the report (e.g., $, €, ¥)", + "required": false, + "defaultValue": "$" + }, + { + "name": "decimalPlaces", + "type": "number", + "description": "Number of decimal places to format financial figures", + "required": false, + "defaultValue": "2" + }, + { + "name": "dateFormat", + "type": "string", + "description": "Date format string to display dates in the report (e.g., YYYY-MM-DD, MM/DD/YYYY)", + "required": false, + "defaultValue": "YYYY-MM-DD" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Whether to include a summary section at the end of the report", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired output format for the report, such as \"text\" or \"html\"", + "required": false, + "defaultValue": "text" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted report as a string and its format type." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to transform raw or semi-structured financial data into a presentable, standardized financial report for stakeholders, clients, or record-keeping. It is suitable for generating monthly, quarterly, or annual financial summaries in text or HTML formats with customizable numeric and date formatting.", + "limitations": "This tool cannot generate report content or analyze financial data; it only formats provided data. It does not perform calculations or validate financial accuracy.", + "examples": [ + "Format a quarterly financial report into an HTML document with Euro currency and 2 decimal places.", + "Generate a text financial report summary including a totals section with US Dollar currency formatting.", + "Create a financial report formatted with dates shown in MM/DD/YYYY style and omit the summary section." + ] + }, + "tags": [ + "finance", + "report", + "formatting", + "financial-report", + "presentation", + "data-formatting" + ], + "examples": [ + { + "inputJson": "{\"reportData\":{\"title\":\"Q1 2024 Financial Report\",\"date\":\"2024-03-31\",\"sections\":[{\"heading\":\"Revenue\",\"items\":[{\"label\":\"Product Sales\",\"amount\":125000.5},{\"label\":\"Service Income\",\"amount\":45000}]},{\"heading\":\"Expenses\",\"items\":[{\"label\":\"Salaries\",\"amount\":70000},{\"label\":\"Office Rent\",\"amount\":10000}]}]},\"currencySymbol\":\"€\",\"decimalPlaces\":2,\"dateFormat\":\"DD/MM/YYYY\",\"includeSummary\":true,\"outputFormat\":\"html\"}", + "description": "Format a quarterly financial report into HTML using Euro currency symbol, two decimal places, and date format DD/MM/YYYY including a summary section." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Report", + "context": null + } + }, + { + "name": "finance-tools.buildServer", + "description": "This tool assists in provisioning and configuring a secure financial data processing server. It accepts configuration details such as hardware specs, software stack, security settings, and compliance options, then simulates the build process and outputs a detailed server setup plan including estimated costs, security configurations, and deployment steps.", + "category": "finance-tools", + "parameters": [ + { + "name": "serverName", + "type": "string", + "description": "The desired name or identifier for the financial server.", + "required": true, + "defaultValue": "" + }, + { + "name": "cpuCores", + "type": "number", + "description": "Number of CPU cores to allocate for the server, influencing processing capacity.", + "required": true, + "defaultValue": "4" + }, + { + "name": "memoryGB", + "type": "number", + "description": "Amount of RAM in gigabytes to assign to the server for optimal performance.", + "required": true, + "defaultValue": "16" + }, + { + "name": "storageGB", + "type": "number", + "description": "Disk storage size in gigabytes for financial data and applications.", + "required": true, + "defaultValue": "500" + }, + { + "name": "os", + "type": "string", + "description": "Operating system to install on the server (e.g., Linux, Windows Server).", + "required": true, + "defaultValue": "Linux" + }, + { + "name": "softwareStack", + "type": "array", + "description": "List of software components and financial tools to install (e.g., database, analytics).", + "required": false, + "defaultValue": "[\"PostgreSQL\",\"Python\",\"FinanceAnalytics\"]" + }, + { + "name": "enableFirewall", + "type": "boolean", + "description": "Whether to configure firewall settings to secure the server by default.", + "required": false, + "defaultValue": "true" + }, + { + "name": "backupPlan", + "type": "string", + "description": "Type of backup strategy for financial data (e.g., daily, weekly, none).", + "required": false, + "defaultValue": "daily" + }, + { + "name": "complianceStandards", + "type": "array", + "description": "Compliance standards the server must meet (e.g., PCI-DSS, GDPR).", + "required": false, + "defaultValue": "[\"PCI-DSS\"]" + } + ], + "returns": { + "type": "object", + "description": "An object detailing the server configuration summary, estimated build cost, security setup, and step-by-step deployment instructions." + }, + "aiAgent": { + "useCase": "Use this tool when needing to plan or simulate the building of a specialized financial server infrastructure. It helps in designing the hardware and software environment, ensuring compliance with financial regulations, and producing detailed deployment plans without deploying real resources initially. Useful for budgeting, compliance checks, and architectural design in financial IT projects.", + "limitations": "This tool does not perform actual server provisioning or deployment. It cannot handle real-time infrastructure changes or manage cloud resources directly. It simulates and outputs plans and recommendations only.", + "examples": [ + "Build a financial server named 'FinProd1' with 8 CPU cores, 32GB RAM, Linux OS, and PCI-DSS compliance.", + "Set up a backup plan with weekly backups on a server with Windows Server OS and SQL Server installed.", + "Create a secure financial analytics server with firewall enabled and software stack including PostgreSQL and Python." + ] + }, + "tags": [ + "finance", + "server", + "infrastructure", + "configuration", + "planning", + "compliance", + "security" + ], + "examples": [ + { + "inputJson": "{\"serverName\":\"FinProd1\",\"cpuCores\":8,\"memoryGB\":32,\"storageGB\":1000,\"os\":\"Linux\",\"softwareStack\":[\"PostgreSQL\",\"Python\",\"FinanceAnalytics\"],\"enableFirewall\":true,\"backupPlan\":\"daily\",\"complianceStandards\":[\"PCI-DSS\"]}", + "description": "Configure a high-performance financial server for compliance and analytics." + }, + { + "inputJson": "{\"serverName\":\"BackupServer\",\"cpuCores\":4,\"memoryGB\":16,\"storageGB\":500,\"os\":\"Windows Server\",\"softwareStack\":[\"SQL Server\"],\"enableFirewall\":false,\"backupPlan\":\"weekly\",\"complianceStandards\":[]}", + "description": "Setup a Windows-based financial server optimized for weekly backups." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Server", + "context": null + } + }, + { + "name": "finance-tools.buildDatabase", + "description": "This tool creates a structured financial database schema based on user-defined parameters including database type, tables, and indexing options. It processes the schema design inputs and outputs ready-to-deploy SQL DDL statements or a JSON schema representation, facilitating integrated financial data management.", + "category": "finance-tools", + "parameters": [ + { + "name": "databaseType", + "type": "string", + "description": "Specifies the type of database to build the schema for, e.g., 'PostgreSQL', 'MySQL', 'SQLite'.", + "required": true, + "defaultValue": "" + }, + { + "name": "tables", + "type": "array", + "description": "An array of table definitions including table name, columns (with types and constraints), and primary keys.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeIndexes", + "type": "boolean", + "description": "Indicates whether to automatically generate indexes on foreign keys and frequently queried columns.", + "required": false, + "defaultValue": "true" + }, + { + "name": "schemaName", + "type": "string", + "description": "An optional namespace or schema name for organizing tables within the database.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the generated output schema: either 'SQL' to produce DDL statements or 'JSON' for a structured schema object.", + "required": false, + "defaultValue": "SQL" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated database schema in the specified format, including SQL DDL statements or JSON schema, ready for deployment." + }, + "aiAgent": { + "useCase": "Use this tool when needing to quickly define and generate financial database schemas that include tables for transactions, accounts, budgets, and reports. Ideal for automating setup of financial data infrastructure in various popular RDBMS systems without manually writing extensive database creation code.", + "limitations": "Does not support NoSQL databases or complex stored procedures/triggers. Assumes user provides correct table structures and types; does not validate business logic or financial rules.", + "examples": [ + "Generate PostgreSQL schema for financial tables including charts of accounts and transaction records with indexing enabled.", + "Create a JSON schema for a SQLite financial database with tables for invoices and payments without adding indexes.", + "Build MySQL database schema for budgeting app with custom schema name 'financeApp' and output as SQL DDL statements." + ] + }, + "tags": [ + "finance", + "database", + "schema", + "SQL", + "financial-management", + "automation" + ], + "examples": [ + { + "inputJson": "{\"databaseType\":\"PostgreSQL\",\"tables\":[{\"tableName\":\"accounts\",\"columns\":[{\"name\":\"account_id\",\"type\":\"SERIAL\",\"constraints\":[\"PRIMARY KEY\"]},{\"name\":\"account_name\",\"type\":\"VARCHAR(255)\",\"constraints\":[\"NOT NULL\"]},{\"name\":\"balance\",\"type\":\"DECIMAL(15,2)\"}]},{\"tableName\":\"transactions\",\"columns\":[{\"name\":\"transaction_id\",\"type\":\"SERIAL\",\"constraints\":[\"PRIMARY KEY\"]},{\"name\":\"account_id\",\"type\":\"INT\",\"constraints\":[\"NOT NULL\"]},{\"name\":\"amount\",\"type\":\"DECIMAL(15,2)\",\"constraints\":[\"NOT NULL\"]},{\"name\":\"transaction_date\",\"type\":\"DATE\"}]}],\"includeIndexes\":true,\"outputFormat\":\"SQL\"}", + "description": "Generate a PostgreSQL schema for accounts and transactions tables with indexes enabled, outputting SQL DDL." + }, + { + "inputJson": "{\"databaseType\":\"SQLite\",\"tables\":[{\"tableName\":\"invoices\",\"columns\":[{\"name\":\"invoice_id\",\"type\":\"INTEGER\",\"constraints\":[\"PRIMARY KEY AUTOINCREMENT\"]},{\"name\":\"client_name\",\"type\":\"TEXT\"},{\"name\":\"amount_due\",\"type\":\"REAL\"}]}],\"includeIndexes\":false,\"outputFormat\":\"JSON\"}", + "description": "Generate a SQLite schema for invoices table without indexes, output JSON schema." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Database", + "context": null + } + }, + { + "name": "finance-tools.buildTest", + "description": "Creates financial unit tests to validate calculations, formulas, and logic for accounting or budgeting code. Accepts financial code snippets or calculation descriptions, generates test cases with input values and expected outputs, and returns structured test scripts in JavaScript or Python format for automated testing frameworks.", + "category": "finance-tools", + "parameters": [ + { + "name": "codeSnippet", + "type": "string", + "description": "Financial calculation code or formula to build tests for.", + "required": true, + "defaultValue": "" + }, + { + "name": "testFramework", + "type": "string", + "description": "Target testing framework (e.g., Jest, Mocha, PyTest).", + "required": false, + "defaultValue": "Jest" + }, + { + "name": "testCases", + "type": "array", + "description": "Array of input-output objects defining test inputs and expected results.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language of the code snippet (e.g., JavaScript, Python).", + "required": false, + "defaultValue": "JavaScript" + }, + { + "name": "includeEdgeCases", + "type": "boolean", + "description": "Whether to automatically generate edge case tests.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing generated test code as a string usable in the specified language and test framework." + }, + "aiAgent": { + "useCase": "Use when needing to verify financial calculations in accounting, budgeting, or financial reporting software. Helps automate generation of unit tests for formulas and logic ensuring correctness and preventing regressions.", + "limitations": "Cannot interpret undocumented or highly complex business domain logic. Generated tests rely on provided input-output pairs or simple code analysis; may require manual refinement.", + "examples": [ + "Create unit tests for a loan interest calculation function.", + "Generate PyTest tests for a budget allocation formula with sample inputs.", + "Build automated tests including edge cases for VAT calculation code snippet." + ] + }, + "tags": [ + "finance", + "testing", + "automation", + "unit-tests", + "code-generation", + "javascript", + "python" + ], + "examples": [ + { + "inputJson": "{\"codeSnippet\":\"function calculateInterest(principal, rate, time) { return principal * rate * time / 100; }\",\"testFramework\":\"Jest\",\"testCases\":[{\"inputs\":{\"principal\":1000,\"rate\":5,\"time\":2},\"expected\":100}],\"language\":\"JavaScript\",\"includeEdgeCases\":true}", + "description": "Generate Jest unit tests validating a simple interest calculation function with sample inputs and edge cases." + }, + { + "inputJson": "{\"codeSnippet\":\"def calculate_vat(price, vat_rate):\\n return price * vat_rate / 100\",\"testFramework\":\"PyTest\",\"language\":\"Python\",\"includeEdgeCases\":false}", + "description": "Create PyTest tests for a Python VAT calculation function without automatic edge cases." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Test", + "context": null + } + }, + { + "name": "finance-tools.generateSummary", + "description": "Generates a comprehensive financial summary report from raw transactional data or accounting records. Accepts transactions as input along with optional parameters such as date range, grouping criteria, and summary type. Processes data to produce aggregated outputs like totals, averages, and categorized financial insights in a structured report format.", + "category": "finance-tools", + "parameters": [ + { + "name": "transactions", + "type": "array", + "description": "An array of financial transaction objects each containing amount, date, category, and description fields to be summarized.", + "required": true, + "defaultValue": "" + }, + { + "name": "summaryType", + "type": "string", + "description": "Type of summary to generate, e.g., 'monthly', 'quarterly', 'yearly', or 'custom'.", + "required": true, + "defaultValue": "monthly" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date (ISO 8601 format) for filtering transactions. Required if summaryType is 'custom'.", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date (ISO 8601 format) for filtering transactions. Required if summaryType is 'custom'.", + "required": false, + "defaultValue": "" + }, + { + "name": "groupByCategory", + "type": "boolean", + "description": "Whether to group and aggregate the summary totals by transaction categories.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeCharts", + "type": "boolean", + "description": "If true, includes basic charts (e.g., pie chart of category spending) in the summary output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A structured summary report object containing aggregated financial metrics such as total income, total expenses, net balance, breakdowns by category if requested, and optionally visual data representations." + }, + "aiAgent": { + "useCase": "Use this tool when you need to generate detailed financial summaries from raw transaction data to analyze performance over defined periods or categories. Ideal for budgeting, accounting, or financial review tasks requiring concise aggregated insights.", + "limitations": "This tool does not perform advanced forecasting, anomaly detection, or audit functions. It requires properly formatted transaction input and does not handle multi-currency conversions automatically.", + "examples": [ + "Generate a monthly financial summary grouped by category for the past 3 months.", + "Create a custom summary report between 2023-01-01 and 2023-03-31 including charts.", + "Produce a yearly summary without category grouping to see overall financial performance." + ] + }, + "tags": [ + "finance", + "summary", + "reporting", + "aggregation", + "transactions", + "accounting" + ], + "examples": [ + { + "inputJson": "{\"transactions\":[{\"amount\":1000,\"date\":\"2023-05-01\",\"category\":\"Salary\",\"description\":\"May Salary\"},{\"amount\":-200,\"date\":\"2023-05-05\",\"category\":\"Groceries\",\"description\":\"Supermarket shopping\"},{\"amount\":-50,\"date\":\"2023-05-07\",\"category\":\"Transport\",\"description\":\"Bus pass\"}],\"summaryType\":\"monthly\",\"groupByCategory\":true,\"includeCharts\":true}", + "description": "Generate a monthly summary for May 2023 grouped by category including charts." + }, + { + "inputJson": "{\"transactions\":[{\"amount\":1500,\"date\":\"2023-01-15\",\"category\":\"Freelance\",\"description\":\"Project payment\"},{\"amount\":-300,\"date\":\"2023-02-10\",\"category\":\"Rent\",\"description\":\"February rent\"}],\"summaryType\":\"custom\",\"startDate\":\"2023-01-01\",\"endDate\":\"2023-02-28\",\"groupByCategory\":false}", + "description": "Create a custom financial summary covering January and February 2023 without category grouping." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Summary", + "context": null + } + }, + { + "name": "finance-tools.generateEvent", + "description": "Generates a financial analytics event record based on provided transaction data and contextual parameters. Accepts inputs such as transaction type, amount, currency, timestamp, and optional metadata, then constructs a structured event object used for downstream financial analytics and reporting systems.", + "category": "finance-tools", + "parameters": [ + { + "name": "transactionType", + "type": "string", + "description": "Type of the financial transaction (e.g., payment, refund, chargeback).", + "required": true, + "defaultValue": "" + }, + { + "name": "amount", + "type": "number", + "description": "Monetary value associated with the event, in the specified currency.", + "required": true, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "ISO 4217 currency code for the transaction amount (e.g., USD, EUR).", + "required": true, + "defaultValue": "USD" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted timestamp of when the event occurred.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Additional optional key-value pairs providing context such as user ID, location, payment method.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "eventCategory", + "type": "string", + "description": "Category grouping the event for analytics purposes (e.g., revenue, cost).", + "required": false, + "defaultValue": "transaction" + } + ], + "returns": { + "type": "object", + "description": "A structured financial event object containing the enriched and validated input fields with standardized formatting suitable for ingestion by analytics platforms." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create standardized financial event records from raw transaction data to enable consistent analytics, monitoring, or reporting within financial software systems. The agent should provide essential transaction details and optional metadata to generate enriched event objects.", + "limitations": "This tool does not perform validation beyond basic input formatting, currency conversion, or complex fraud detection. It does not store events or handle batch processing.", + "examples": [ + "Create a payment event of $150 USD for a user purchase with metadata including user ID and location.", + "Generate a refund event with amount 20 EUR and timestamp for reporting.", + "Produce a chargeback event categorized under 'disputes' with payment method details." + ] + }, + "tags": [ + "finance", + "analytics", + "event-generation", + "transaction", + "reporting", + "financial-data" + ], + "examples": [ + { + "inputJson": "{\"transactionType\":\"payment\",\"amount\":150.00,\"currency\":\"USD\",\"timestamp\":\"2024-06-01T14:30:00Z\",\"metadata\":{\"userId\":\"user123\",\"location\":\"NY\"},\"eventCategory\":\"revenue\"}", + "description": "Payment event recording a user purchase with metadata for user and location." + }, + { + "inputJson": "{\"transactionType\":\"refund\",\"amount\":20.00,\"currency\":\"EUR\",\"timestamp\":\"2024-05-28T09:15:00Z\"}", + "description": "Refund event with amount and timestamp for analytics reporting." + }, + { + "inputJson": "{\"transactionType\":\"chargeback\",\"amount\":50.00,\"currency\":\"USD\",\"timestamp\":\"2024-06-02T12:00:00Z\",\"metadata\":{\"paymentMethod\":\"credit_card\"},\"eventCategory\":\"disputes\"}", + "description": "Chargeback event categorized as 'disputes' with extra payment method metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Event", + "context": null + } + }, + { + "name": "finance-tools.generateCSV", + "description": "Generates a CSV file string representing financial data, such as transactions or account summaries, from structured input objects. Accepts an array of financial records and optional configuration like custom columns, delimiter, and whether to include headers. Outputs a CSV-formatted string ready for download or storage.", + "category": "finance-tools", + "parameters": [ + { + "name": "data", + "type": "array", + "description": "Array of objects representing financial records, each object containing key-value pairs for columns and values.", + "required": true, + "defaultValue": "" + }, + { + "name": "columns", + "type": "array", + "description": "Optional array of strings specifying the order and subset of object keys to include as CSV columns.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "delimiter", + "type": "string", + "description": "Delimiter character to separate CSV values, typically comma or semicolon.", + "required": false, + "defaultValue": "," + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include a header row with column names at the top of the CSV.", + "required": false, + "defaultValue": "true" + }, + { + "name": "quoteValues", + "type": "boolean", + "description": "Whether to enclose all CSV values in double quotes, useful for values containing delimiters or special characters.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated CSV data as a single string under the 'csvString' property." + }, + "aiAgent": { + "useCase": "Use this tool when needing to convert structured financial data arrays into CSV format for export, reporting, or integration with accounting software that accepts CSV files. It helps transform JSON-like financial datasets into a universally readable CSV string with customizable options.", + "limitations": "Does not validate financial data integrity, perform calculations, or format dates; relies on input data being correctly structured. Not designed to generate very large CSV files efficiently (e.g., millions of records).", + "examples": [ + "Generate a CSV string from an array of transaction objects to download as financial report.", + "Create CSV export of filtered account summary data with custom columns.", + "Convert daily expenses JSON array into a CSV file with semicolon delimiters." + ] + }, + "tags": [ + "finance", + "csv", + "export", + "data-format", + "financial-reporting", + "accounting" + ], + "examples": [ + { + "inputJson": "{\"data\":[{\"date\":\"2024-04-01\",\"description\":\"Office Supplies\",\"amount\":150.0,\"category\":\"Office\"},{\"date\":\"2024-04-02\",\"description\":\"Client Lunch\",\"amount\":75.5,\"category\":\"Meals\"}],\"columns\":[\"date\",\"description\",\"amount\"],\"delimiter\":\",\",\"includeHeaders\":true,\"quoteValues\":true}", + "description": "Generate CSV with date, description, and amount columns, including headers, using commas and quoted values." + }, + { + "inputJson": "{\"data\":[{\"date\":\"2024-05-10\",\"vendor\":\"Utility Company\",\"amount\":120,\"paid\":true},{\"date\":\"2024-05-11\",\"vendor\":\"Internet Provider\",\"amount\":60,\"paid\":false}],\"columns\":[],\"delimiter\":\";\",\"includeHeaders\":true,\"quoteValues\":false}", + "description": "Generate CSV with all keys from financial records, using semicolon delimiter and no quotes around values." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "CSV", + "context": null + } + }, + { + "name": "finance-tools.createOrder", + "description": "Creates a new financial purchase order based on customer, product, quantity, pricing, and shipping details. Accepts structured input with order metadata and line items, validates required fields, calculates totals, applies discounts or taxes if specified, and returns a complete order confirmation with order ID and summarized data.", + "category": "finance-tools", + "parameters": [ + { + "name": "customerId", + "type": "string", + "description": "Unique identifier for the customer placing the order", + "required": true, + "defaultValue": "" + }, + { + "name": "orderDate", + "type": "string", + "description": "Date when the order was created, in ISO 8601 format (e.g., 2024-04-27)", + "required": true, + "defaultValue": "" + }, + { + "name": "lineItems", + "type": "array", + "description": "List of products included in the order; each item includes productId, quantity, and unitPrice", + "required": true, + "defaultValue": "" + }, + { + "name": "shippingAddress", + "type": "object", + "description": "Shipping address details including street, city, state, postalCode, and country", + "required": true, + "defaultValue": "" + }, + { + "name": "billingAddress", + "type": "object", + "description": "Billing address details, if different from shipping address", + "required": false, + "defaultValue": "" + }, + { + "name": "discountCode", + "type": "string", + "description": "Optional discount code to apply promotional discounts", + "required": false, + "defaultValue": "" + }, + { + "name": "taxRate", + "type": "number", + "description": "Applicable tax rate percentage to apply to the order subtotal (e.g., 7.5 for 7.5%)", + "required": false, + "defaultValue": "0" + }, + { + "name": "notes", + "type": "string", + "description": "Additional notes or instructions for the order", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the orderId, order summary including calculated subtotal, tax, discount, total amount, and the original input data for reference." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate and confirm a complete purchase order record from given customer and product inputs, ensuring data validation, accurate calculations for totals including tax and discounts, and producing a formalized order record for financial or inventory processing.", + "limitations": "This tool does not handle payment processing or inventory availability checks. It assumes valid input references (customer IDs, product IDs) exist in external systems.", + "examples": [ + "Create a purchase order for customer 123 with 3 units of product A priced at $15 each, include shipping address and a 5% tax.", + "Generate an order for customer 789 with two different products, apply a discount code SAVE10, and provide billing address if different from shipping.", + "Produce a new order dated today for customer 456 with one product, no discount, and add special instructions in notes." + ] + }, + "tags": [ + "finance", + "order", + "create", + "purchase", + "billing", + "discount", + "tax", + "shipping" + ], + "examples": [ + { + "inputJson": "{\"customerId\":\"CUST123\",\"orderDate\":\"2024-04-27\",\"lineItems\":[{\"productId\":\"PROD01\",\"quantity\":3,\"unitPrice\":15.00}],\"shippingAddress\":{\"street\":\"123 Elm St\",\"city\":\"Springfield\",\"state\":\"IL\",\"postalCode\":\"62704\",\"country\":\"USA\"},\"taxRate\":5.0}", + "description": "Create an order for customer CUST123 purchasing 3 units of PROD01 at $15 each with 5% tax applied." + }, + { + "inputJson": "{\"customerId\":\"CUST789\",\"orderDate\":\"2024-04-27\",\"lineItems\":[{\"productId\":\"PROD02\",\"quantity\":1,\"unitPrice\":100.00},{\"productId\":\"PROD03\",\"quantity\":2,\"unitPrice\":50.00}],\"shippingAddress\":{\"street\":\"456 Oak Ave\",\"city\":\"Seattle\",\"state\":\"WA\",\"postalCode\":\"98101\",\"country\":\"USA\"},\"billingAddress\":{\"street\":\"789 Pine Rd\",\"city\":\"Seattle\",\"state\":\"WA\",\"postalCode\":\"98102\",\"country\":\"USA\"},\"discountCode\":\"SAVE10\",\"taxRate\":8.25}", + "description": "Generate an order with two products, billing address differing from shipping, applying discount code SAVE10 and 8.25% tax." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Order", + "context": null + } + }, + { + "name": "finance-tools.createKey", + "description": "Generates a secure cryptographic key for financial transactions or data encryption. Accepts parameters defining key type, length, and usage constraints, then outputs the key material in a secure encoded format along with metadata for safe storage and usage within financial systems.", + "category": "finance-tools", + "parameters": [ + { + "name": "keyType", + "type": "string", + "description": "Type of cryptographic key to generate, such as 'RSA', 'AES', or 'ECDSA'.", + "required": true, + "defaultValue": "" + }, + { + "name": "keyLength", + "type": "number", + "description": "Length in bits of the key to generate, e.g., 256 for AES or 2048 for RSA. Must be compatible with keyType.", + "required": true, + "defaultValue": "" + }, + { + "name": "usage", + "type": "array", + "description": "Intended usage scenarios for the key, e.g., ['encryption', 'signing'], to set usage policies metadata.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "exportable", + "type": "boolean", + "description": "Flag indicating whether the generated key material can be exported or if it must remain protected in hardware or secure storage.", + "required": false, + "defaultValue": "true" + }, + { + "name": "passphrase", + "type": "string", + "description": "Optional passphrase to protect the key material when exporting or storing, enabling encrypted key extraction.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Object containing the generated key encoded in base64 or hex, key metadata including type, length, usage, exportability, and optional encrypted private key if passphrase provided." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create cryptographic keys for securing financial data or transactions, such as generating keys for encrypting sensitive records, signing digital documents, or securing communication channels in financial applications.", + "limitations": "This tool does not manage key storage lifecycle or integrate with hardware security modules directly; it only generates keys and returns them securely encoded.", + "examples": [ + "Generate a 256-bit AES key for encrypting financial transaction data.", + "Create an RSA 2048-bit key pair for signing digital contracts.", + "Produce an ECDSA key for secure transaction verification with export disabled." + ] + }, + "tags": [ + "cryptography", + "finance", + "key-management", + "security", + "encryption", + "digital-signature" + ], + "examples": [ + { + "inputJson": "{\"keyType\":\"AES\",\"keyLength\":256,\"usage\":[\"encryption\"],\"exportable\":true}", + "description": "Generate an exportable 256-bit AES key for encryption use case." + }, + { + "inputJson": "{\"keyType\":\"RSA\",\"keyLength\":2048,\"usage\":[\"signing\"],\"exportable\":false,\"passphrase\":\"strongpass123\"}", + "description": "Create a non-exportable RSA 2048-bit key pair for signing operations with passphrase protection." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Key", + "context": null + } + }, + { + "name": "finance-tools.createInvoice", + "description": "Generates a detailed invoice document based on provided client, service, and payment details. Accepts inputs including client information, list of items or services with quantities and prices, tax and discount rates, and payment terms. Processes the data to calculate totals, taxes, and discounts, outputting a structured invoice ready for review or dispatch in JSON format.", + "category": "finance-tools", + "parameters": [ + { + "name": "clientName", + "type": "string", + "description": "Full name or company name of the client to invoice.", + "required": true, + "defaultValue": "" + }, + { + "name": "clientAddress", + "type": "string", + "description": "Mailing address of the client for the invoice.", + "required": false, + "defaultValue": "" + }, + { + "name": "invoiceDate", + "type": "string", + "description": "Date of invoice creation in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "dueDate", + "type": "string", + "description": "Payment due date in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "items", + "type": "array", + "description": "List of items or services, each with description, quantity, and unit price.", + "required": true, + "defaultValue": "" + }, + { + "name": "taxRate", + "type": "number", + "description": "Applicable tax rate as a percentage (e.g., 10 for 10%).", + "required": false, + "defaultValue": "0" + }, + { + "name": "discountRate", + "type": "number", + "description": "Discount rate as a percentage applied on subtotal before tax.", + "required": false, + "defaultValue": "0" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code (e.g., USD, EUR) for the invoice amounts.", + "required": false, + "defaultValue": "USD" + }, + { + "name": "paymentTerms", + "type": "string", + "description": "Text describing payment terms (e.g., 'Net 30 days').", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured JSON object representing the complete invoice, including client details, itemized charges, tax and discount calculations, totals, currency, and payment terms." + }, + "aiAgent": { + "useCase": "Use this tool to generate precise and professional invoices from structured billing data. Ideal for automating billing workflows, preparing invoices for client billing, or integrating with accounting software. It ensures consistent invoice formatting and accurate financial calculations including taxes and discounts.", + "limitations": "Does not generate visual PDF or printable layout formats. Does not validate legal compliance of invoice format or tax rules specific to jurisdictions. Does not send invoices via email or other channels.", + "examples": [ + "Create an invoice for client ACME Corp dated 2024-06-01 with two products, applying a 5% tax and no discount.", + "Generate an invoice for freelance consulting services provided to John Doe with payment terms net 15 days.", + "Prepare an invoice including itemized charges, 10% discount, and currency in EUR." + ] + }, + "tags": [ + "finance", + "invoice", + "billing", + "accounting", + "document-generation", + "tax-calculation" + ], + "examples": [ + { + "inputJson": "{\"clientName\":\"ACME Corporation\",\"clientAddress\":\"123 Business Rd, Commerce City\",\"invoiceDate\":\"2024-06-01\",\"dueDate\":\"2024-06-15\",\"items\":[{\"description\":\"Consulting Services\",\"quantity\":10,\"unitPrice\":150},{\"description\":\"Travel Reimbursement\",\"quantity\":1,\"unitPrice\":300}],\"taxRate\":5,\"discountRate\":0,\"currency\":\"USD\",\"paymentTerms\":\"Net 15 days\"}", + "description": "Invoice for a client including consulting services and travel reimbursement with 5% tax applied and payment due in 15 days." + }, + { + "inputJson": "{\"clientName\":\"John Doe\",\"invoiceDate\":\"2024-06-10\",\"dueDate\":\"2024-06-25\",\"items\":[{\"description\":\"Web Design Project\",\"quantity\":1,\"unitPrice\":2000}],\"taxRate\":0,\"discountRate\":10,\"currency\":\"USD\",\"paymentTerms\":\"Net 15 days\"}", + "description": "Single-item invoice for web design with a 10% discount, no tax, and payment terms of 15 days." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Invoice", + "context": null + } + }, + { + "name": "finance-tools.createAlert", + "description": "Creates a financial alert based on user-defined criteria such as transaction amount thresholds, suspicious activity patterns, or account balance limits. Accepts parameters to specify alert conditions and notification preferences, then generates an alert configuration that can be activated to monitor financial activities and notify users accordingly.", + "category": "finance-tools", + "parameters": [ + { + "name": "alertName", + "type": "string", + "description": "A unique name identifier for the alert to distinguish it from others.", + "required": true, + "defaultValue": "" + }, + { + "name": "criteria", + "type": "object", + "description": "Defines conditions triggering the alert, such as minimum or maximum transaction amounts, specific transaction types, or unusual activity flags.", + "required": true, + "defaultValue": "" + }, + { + "name": "notificationMethods", + "type": "array", + "description": "Preferred channels to receive alert notifications, e.g., email, SMS, or push notification.", + "required": true, + "defaultValue": "[\"email\"]" + }, + { + "name": "enabled", + "type": "boolean", + "description": "Whether the alert is active immediately after creation.", + "required": false, + "defaultValue": "true" + }, + { + "name": "severityLevel", + "type": "string", + "description": "Priority level of the alert such as low, medium, or high to categorize its urgency.", + "required": false, + "defaultValue": "medium" + }, + { + "name": "description", + "type": "string", + "description": "Optional detailed explanation of the alert purpose or conditions.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created alert including its ID, name, criteria, notification settings, status, and metadata." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically set up customized financial alerts for monitoring transactions or account activities that could signify risk, fraud, or financial thresholds being crossed. It enables automation of vigilance and faster response to critical financial events.", + "limitations": "This tool does not perform the actual monitoring or notification delivery itself; it only generates alert configurations. Integration with monitoring engines and notification services is required to operationalize alerts.", + "examples": [ + "Create an alert for transactions exceeding $10,000 with SMS notification.", + "Set up a low balance alert sending email notification when account balance drops below $500.", + "Configure a fraud suspicion alert that triggers on specific flagged transaction types with high severity." + ] + }, + "tags": [ + "finance", + "alerts", + "security", + "monitoring", + "notifications", + "fraud-detection" + ], + "examples": [ + { + "inputJson": "{\"alertName\":\"HighValueTransaction\",\"criteria\":{\"minTransactionAmount\":10000},\"notificationMethods\":[\"sms\"],\"enabled\":true,\"severityLevel\":\"high\",\"description\":\"Alert for transactions exceeding ten thousand dollars.\"}", + "description": "Create an alert for transactions greater than $10,000 with SMS notifications enabled." + }, + { + "inputJson": "{\"alertName\":\"LowBalance\",\"criteria\":{\"maxAccountBalance\":500},\"notificationMethods\":[\"email\"],\"enabled\":true,\"severityLevel\":\"medium\",\"description\":\"Notify when account balance falls below $500.\"}", + "description": "Set up a medium severity alert for low account balance with email notification." + }, + { + "inputJson": "{\"alertName\":\"FraudSuspicion\",\"criteria\":{\"transactionTypes\":[\"suspicious\"],\"minTransactionAmount\":1000},\"notificationMethods\":[\"email\",\"push\"],\"enabled\":false,\"severityLevel\":\"high\",\"description\":\"Alert for suspicious transactions over $1000, initially disabled.\"}", + "description": "Configure a high severity fraud suspicion alert on flagged suspicious transactions, initially disabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Alert", + "context": null + } + }, + { + "name": "finance-tools.createCSV", + "description": "Generates a CSV file content string from provided financial data objects, with optional filtering of fields and custom delimiters. Accepts an array of financial records and outputs a correctly formatted CSV string suitable for reports, exports, or data processing.", + "category": "finance-tools", + "parameters": [ + { + "name": "data", + "type": "array", + "description": "Array of financial record objects to be converted into CSV rows.", + "required": true, + "defaultValue": "" + }, + { + "name": "fields", + "type": "array", + "description": "List of object keys to include as columns in the CSV, in order. If omitted, all keys from the first record are included.", + "required": false, + "defaultValue": "" + }, + { + "name": "delimiter", + "type": "string", + "description": "Delimiter character to separate values, default is comma (,).", + "required": false, + "defaultValue": "," + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include the CSV header row with column names.", + "required": false, + "defaultValue": "true" + }, + { + "name": "quoteChar", + "type": "string", + "description": "Character to use for quoting fields containing delimiters or special characters, default is double quote (\").", + "required": false, + "defaultValue": "\"" + } + ], + "returns": { + "type": "object", + "description": "Object containing the generated CSV content string under 'csvContent' key." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert structured financial data into CSV format for purposes such as export, report generation, or integration with accounting software. Ideal when input is a structured array of records and output must be CSV text.", + "limitations": "Does not write CSV data to files or streams, only returns CSV string. It does not validate financial data correctness beyond basic CSV formatting. Complex nested objects are not flattened automatically.", + "examples": [ + "Create CSV with all fields and default comma delimiter", + "Create CSV for only selected fields with tab delimiter", + "Generate CSV without header row for export integration" + ] + }, + "tags": [ + "csv", + "finance", + "data-export", + "reporting", + "formatting" + ], + "examples": [ + { + "inputJson": "{\"data\":[{\"date\":\"2024-01-01\",\"category\":\"Income\",\"amount\":1000},{\"date\":\"2024-01-02\",\"category\":\"Expense\",\"amount\":-200}],\"includeHeaders\":true}", + "description": "Generate CSV of full financial records with default settings including headers." + }, + { + "inputJson": "{\"data\":[{\"date\":\"2024-01-01\",\"category\":\"Income\",\"amount\":1000},{\"date\":\"2024-01-02\",\"category\":\"Expense\",\"amount\":-200}],\"fields\":[\"date\",\"amount\"],\"delimiter\":\"\\t\",\"includeHeaders\":true}", + "description": "Generate CSV including only date and amount fields, using tab delimiter." + }, + { + "inputJson": "{\"data\":[{\"date\":\"2024-01-01\",\"category\":\"Income\",\"amount\":1000}],\"includeHeaders\":false}", + "description": "Generate CSV with no header row for a single record." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "CSV", + "context": null + } + }, + { + "name": "finance-tools.createBranch", + "description": "Creates a new financial branch entity within an organization's accounting system. Accepts parameters such as branch name, location, manager, and initial budget allocations. Processes input by validating details, generating a unique branch ID, and setting up initial financial records. Outputs the created branch details including branch ID, name, and assigned manager.", + "category": "finance-tools", + "parameters": [ + { + "name": "branchName", + "type": "string", + "description": "The official name of the new financial branch.", + "required": true, + "defaultValue": "" + }, + { + "name": "location", + "type": "string", + "description": "Physical or geographical location of the branch office.", + "required": true, + "defaultValue": "" + }, + { + "name": "managerName", + "type": "string", + "description": "Name of the person responsible for managing the branch.", + "required": true, + "defaultValue": "" + }, + { + "name": "initialBudget", + "type": "number", + "description": "Initial budget allocated to the branch for operational activities, in the organization's currency.", + "required": false, + "defaultValue": "0" + }, + { + "name": "parentCompanyId", + "type": "string", + "description": "Identifier of the parent company to which this branch belongs.", + "required": true, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the created branch's details, including unique branchId, branchName, location, managerName, initialBudget, and parentCompanyId." + }, + "aiAgent": { + "useCase": "This tool should be used when a financial management agent needs to programmatically add a new branch office or division within an organization’s financial system, ensuring proper linkage and initial funding allocation. It is essential for scaling business units or adding locations in accounting software.", + "limitations": "This tool does not manage ongoing financial transactions, accounting entries, or branch closure. It only creates a branch entity and sets initial parameters.", + "examples": [ + "Create a new branch called 'Midwest Operations' located in Chicago with John Doe as manager and an initial budget of 500,000 USD for the parent company with ID 'COMP123'.", + "Add a branch for 'European Sales' located in Berlin without specifying an initial budget, under parent company 'COMP456'." + ] + }, + "tags": [ + "finance", + "branch management", + "organizational structure", + "accounting", + "financial setup" + ], + "examples": [ + { + "inputJson": "{\"branchName\":\"Midwest Operations\",\"location\":\"Chicago, IL\",\"managerName\":\"John Doe\",\"initialBudget\":500000,\"parentCompanyId\":\"COMP123\"}", + "description": "Creates 'Midwest Operations' branch in Chicago with John Doe as manager and a 500,000 initial budget under company COMP123." + }, + { + "inputJson": "{\"branchName\":\"European Sales\",\"location\":\"Berlin, Germany\",\"managerName\":\"Anna Schmidt\",\"initialBudget\":0,\"parentCompanyId\":\"COMP456\"}", + "description": "Adds a 'European Sales' branch in Berlin with Anna Schmidt, no initial budget, linked to company COMP456." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Branch", + "context": null + } + }, + { + "name": "finance-tools.createEndpoint", + "description": "Creates a configurable REST API endpoint for financial management applications that processes incoming requests with specified HTTP methods, validates and transforms input data, executes financial operations or queries, and returns structured JSON responses. Accepts endpoint path, HTTP methods, input schema, and business logic definitions to generate backend API handlers.", + "category": "finance-tools", + "parameters": [ + { + "name": "endpointPath", + "type": "string", + "description": "The URL path for the endpoint (e.g., /api/invoice/create).", + "required": true, + "defaultValue": "" + }, + { + "name": "httpMethods", + "type": "array", + "description": "List of HTTP methods the endpoint supports (e.g., [\"GET\",\"POST\"]).", + "required": true, + "defaultValue": "[\"POST\"]" + }, + { + "name": "inputSchema", + "type": "object", + "description": "JSON schema defining required and optional input parameters for request validation.", + "required": true, + "defaultValue": "" + }, + { + "name": "businessLogic", + "type": "string", + "description": "Code snippet or declarative logic defining the financial operations the endpoint performs (e.g., create invoice, query account balance).", + "required": true, + "defaultValue": "" + }, + { + "name": "authenticationRequired", + "type": "boolean", + "description": "Indicates if the endpoint requires authentication/authorization.", + "required": false, + "defaultValue": "true" + }, + { + "name": "responseSchema", + "type": "object", + "description": "JSON schema defining structure of the endpoint response data.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the generated API endpoint configuration including path, methods, validation rules, and executable business logic." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically generate backend REST API endpoints for financial applications that handle specific financial operations, ensuring input validation and consistent output structures without manual coding of each endpoint. Ideal for dynamic API generation, automated financial service provision, or prototyping financial microservices.", + "limitations": "This tool does not implement the full backend infrastructure, security layering beyond simple authentication flags, or database connectivity. Complex business logic requiring external integration or asynchronous workflows must be handled separately.", + "examples": [ + "Create an endpoint for submitting new invoices via POST at /api/invoice/create with validated inputs.", + "Generate a GET endpoint at /api/account/balance that returns the current user's account balance after authentication.", + "Build a multi-method endpoint supporting GET and POST to allow both querying and updating financial records with defined input and response schemas." + ] + }, + "tags": [ + "finance", + "API", + "endpoint", + "automation", + "backend", + "financial-management", + "REST" + ], + "examples": [ + { + "inputJson": "{\"endpointPath\":\"/api/invoice/create\",\"httpMethods\":[\"POST\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"customerId\":{\"type\":\"string\"},\"amount\":{\"type\":\"number\"},\"dueDate\":{\"type\":\"string\",\"format\":\"date\"}},\"required\":[\"customerId\",\"amount\"]},\"businessLogic\":\"createInvoice(customerId, amount, dueDate)\",\"authenticationRequired\":true,\"responseSchema\":{\"type\":\"object\",\"properties\":{\"invoiceId\":{\"type\":\"string\"},\"status\":{\"type\":\"string\"}},\"required\":[\"invoiceId\",\"status\"]}}", + "description": "Create a POST endpoint /api/invoice/create accepting customerId, amount, and dueDate, that creates a new invoice and returns invoiceId and status." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Endpoint", + "context": null + } + }, + { + "name": "finance-tools.createConfig", + "description": "Creates a financial management configuration object for budgeting and accounting software. Accepts inputs defining currency, fiscal year start, default tax rates, and enabled modules. Generates a standardized config object for initializing financial applications or workflows.", + "category": "finance-tools", + "parameters": [ + { + "name": "currency", + "type": "string", + "description": "ISO 4217 currency code used in financial calculations (e.g., USD, EUR).", + "required": true, + "defaultValue": "" + }, + { + "name": "fiscalYearStartMonth", + "type": "number", + "description": "Starting month of the fiscal year (1-12).", + "required": true, + "defaultValue": "" + }, + { + "name": "defaultTaxRate", + "type": "number", + "description": "Default tax rate percentage applied to transactions (e.g., 7.5 for 7.5%).", + "required": false, + "defaultValue": "0" + }, + { + "name": "enableBudgetingModule", + "type": "boolean", + "description": "Whether to enable budgeting features in the configuration.", + "required": false, + "defaultValue": "true" + }, + { + "name": "enabledModules", + "type": "array", + "description": "List of enabled financial modules (e.g., ['accountsPayable','reports']).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "dateFormat", + "type": "string", + "description": "Preferred date format string (e.g., 'YYYY-MM-DD').", + "required": false, + "defaultValue": "YYYY-MM-DD" + } + ], + "returns": { + "type": "object", + "description": "A configuration object containing all specified financial settings formatted for use by financial management systems." + }, + "aiAgent": { + "useCase": "Use this tool when you need to generate or initialize a configuration object for financial management software or workflows, setting parameters like currency, fiscal year, tax rate, and enabled modules. It helps ensure consistent financial settings across tools or processes.", + "limitations": "This tool does not validate tax rates for jurisdictions or handle complex tax rules. It only creates a config object, not the financial software itself.", + "examples": [ + "Create a config for a US company with fiscal year starting in October and 8% tax rate.", + "Generate a config enabling budgeting and accounts payable modules with Euro currency.", + "Set a config with fiscal year starting January, default tax 0%, and custom date format." + ] + }, + "tags": [ + "finance", + "configuration", + "budgeting", + "accounting", + "initialization" + ], + "examples": [ + { + "inputJson": "{\"currency\":\"USD\",\"fiscalYearStartMonth\":10,\"defaultTaxRate\":8,\"enableBudgetingModule\":true,\"enabledModules\":[\"budgeting\",\"accountsPayable\"],\"dateFormat\":\"MM/DD/YYYY\"}", + "description": "Create a config for a US company with fiscal year starting in October and 8% tax rate, enabling budgeting and accounts payable modules." + }, + { + "inputJson": "{\"currency\":\"EUR\",\"fiscalYearStartMonth\":1,\"defaultTaxRate\":20,\"enableBudgetingModule\":false,\"enabledModules\":[\"reports\"],\"dateFormat\":\"DD.MM.YYYY\"}", + "description": "Generate a config for a European company with fiscal year starting January, 20% tax, disabled budgeting, enabling reports module." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Config", + "context": null + } + }, + { + "name": "human-resources.analyzeWord", + "description": "Analyzes a given word or term commonly used in human resources contexts to provide insight into its sentiment, relevance, and connotation within recruitment and employee management. Accepts a single word string, processes linguistic and HR-specific sentiment analysis, and outputs interpretive metrics and related HR themes.", + "category": "human-resources", + "parameters": [ + { + "name": "word", + "type": "string", + "description": "The single HR-related word to analyze for sentiment and contextual relevance.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeSentiment", + "type": "boolean", + "description": "Whether to include a sentiment score analysis of the word (positive, negative, neutral).", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeThemes", + "type": "boolean", + "description": "Whether to provide related HR themes or topics the word is commonly associated with.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the input word for accurate semantic interpretation, default is 'en' for English.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing the original word, sentiment score and label (if requested), related HR themes, and a brief explanation of the word's typical usage or connotation in human resources." + }, + "aiAgent": { + "useCase": "Use this tool when you need to understand the nuanced sentiment and contextual meaning of specific HR-related words, such as 'engagement' or 'turnover', to better interpret employee feedback, recruitment communications, or job descriptions.", + "limitations": "This tool analyzes only single words, not phrases or sentences. Sentiment and themes are generalized and may not capture all contextual nuances or company-specific jargon.", + "examples": [ + "Analyze the sentiment and themes of the word 'motivation' in an HR context.", + "Check what common HR topics the word 'compliance' relates to.", + "Get sentiment and usage details for the word 'retention' in employee management." + ] + }, + "tags": [ + "human-resources", + "analysis", + "word", + "sentiment", + "recruitment", + "employee-management" + ], + "examples": [ + { + "inputJson": "{\"word\":\"engagement\",\"includeSentiment\":true,\"includeThemes\":true}", + "description": "Analyze the word 'engagement' for sentiment and related HR themes." + }, + { + "inputJson": "{\"word\":\"turnover\",\"includeSentiment\":true,\"includeThemes\":false}", + "description": "Analyze the sentiment of the word 'turnover' without additional theme context." + }, + { + "inputJson": "{\"word\":\"compliance\",\"includeSentiment\":false,\"includeThemes\":true,\"language\":\"en\"}", + "description": "Identify related HR topics associated with the word 'compliance'." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Word", + "context": null + } + }, + { + "name": "human-resources.analyzeDataset", + "description": "This tool accepts employee or recruitment datasets in JSON or CSV format and performs comprehensive analysis including statistical summaries, trend identification, and anomaly detection related to hiring, attrition, diversity, and performance metrics. It outputs structured reports with visual data insights and recommendations.", + "category": "human-resources", + "parameters": [ + { + "name": "dataset", + "type": "object", + "description": "The employee or recruitment dataset to analyze, provided as an array of records or parsed JSON objects.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataFormat", + "type": "string", + "description": "The format of the dataset, e.g., 'json' or 'csv'.", + "required": true, + "defaultValue": "json" + }, + { + "name": "analysisType", + "type": "array", + "description": "Types of analysis to perform, such as ['attrition', 'diversity', 'performance', 'recruitmentTrends'].", + "required": false, + "defaultValue": "[\"attrition\",\"diversity\",\"performance\"]" + }, + { + "name": "includeVisuals", + "type": "boolean", + "description": "Flag to include charts and graphs in the output report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "dateRange", + "type": "object", + "description": "Optional date range filter with 'startDate' and 'endDate' in ISO format to limit data analyzed.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output report format, e.g., 'json' or 'pdf'.", + "required": false, + "defaultValue": "json" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing statistical summaries, insights based on selected analysis types, and visual data representations if requested." + }, + "aiAgent": { + "useCase": "Use this tool when needing an automated deep analysis of HR-related datasets to extract meaningful metrics about workforce composition, recruitment effectiveness, attrition patterns, diversity, and employee performance trends. Ideal for generating actionable insights to support HR decision-making and strategic planning.", + "limitations": "The tool cannot process unstructured data inputs, does not perform predictive modeling beyond trend extrapolation, and requires clean, well-structured datasets for accurate analysis. It does not provide legal or compliance advice based on data.", + "examples": [ + "Analyze employee attrition and diversity trends in a JSON dataset from the last 3 years.", + "Evaluate recruitment funnel efficiency and candidate demographics from a CSV input.", + "Generate a performance summary report with visuals for employees hired in the last year." + ] + }, + "tags": [ + "analysis", + "human-resources", + "employee-data", + "reporting", + "diversity", + "attrition", + "performance", + "recruitment" + ], + "examples": [ + { + "inputJson": "{\"dataset\":[{\"employeeId\":1,\"hireDate\":\"2019-01-15\",\"attrition\":false,\"department\":\"Sales\",\"performanceScore\":8,\"gender\":\"F\"},{\"employeeId\":2,\"hireDate\":\"2020-04-22\",\"attrition\":true,\"department\":\"Engineering\",\"performanceScore\":6,\"gender\":\"M\"}],\"dataFormat\":\"json\",\"analysisType\":[\"attrition\",\"diversity\"],\"includeVisuals\":true,\"dateRange\":{\"startDate\":\"2018-01-01\",\"endDate\":\"2021-12-31\"},\"outputFormat\":\"json\"}", + "description": "Analyze attrition and diversity from a JSON dataset of employee records spanning 2018-2021, including charts in a JSON report." + }, + { + "inputJson": "{\"dataset\":\"employee_data.csv\",\"dataFormat\":\"csv\",\"analysisType\":[\"performance\"],\"includeVisuals\":false,\"outputFormat\":\"json\"}", + "description": "Analyze employee performance scores from a CSV file producing a JSON summary without visuals." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Dataset", + "context": null + } + }, + { + "name": "human-resources.analyzeAccount", + "description": "Analyzes a business account's HR data by processing employee records, recruitment statistics, and performance metrics over a specified period, producing a comprehensive report detailing workforce composition, turnover rates, recruitment effectiveness, and performance trends.", + "category": "human-resources", + "parameters": [ + { + "name": "accountId", + "type": "string", + "description": "Unique identifier of the business account to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date for the analysis period in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date for the analysis period in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "includeRecruitmentStats", + "type": "boolean", + "description": "Whether to include recruitment metrics such as number of hires and time-to-fill.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includePerformanceMetrics", + "type": "boolean", + "description": "Whether to include employee performance data and trends.", + "required": false, + "defaultValue": "true" + }, + { + "name": "departmentFilter", + "type": "array", + "description": "Optional list of department names to filter analysis on specific parts of the organization.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "A detailed report object including total employee count, turnover rate, recruitment statistics, department breakdowns, and aggregated performance scores." + }, + "aiAgent": { + "useCase": "Use this tool when needing to provide a summarized analysis of a business account's HR data over a certain time frame to inform workforce planning, recruitment strategies, or performance review cycles. Particularly useful for generating insights across departments and tracking trends over time.", + "limitations": "Does not provide real-time data; analysis is limited to the data quality and completeness within the specified time range. Does not forecast future HR needs or predict employee behaviors.", + "examples": [ + "Analyze the HR data of account 'acct123' from 2023-01-01 to 2023-06-30 including recruitment and performance metrics.", + "Generate a department-specific analysis for the marketing and sales departments of account 'acct789' for Q1 2024.", + "Provide a summary report of employee turnover and recruitment effectiveness for account 'acct456' from 2022-07-01 to 2023-07-01, excluding performance metrics." + ] + }, + "tags": [ + "analysis", + "human-resources", + "account", + "recruitment", + "performance", + "report" + ], + "examples": [ + { + "inputJson": "{\"accountId\":\"acct123\",\"startDate\":\"2023-01-01\",\"endDate\":\"2023-06-30\",\"includeRecruitmentStats\":true,\"includePerformanceMetrics\":true}", + "description": "Analyze HR data for account 'acct123' from Jan to June 2023 including recruitment and performance." + }, + { + "inputJson": "{\"accountId\":\"acct789\",\"startDate\":\"2024-01-01\",\"endDate\":\"2024-03-31\",\"departmentFilter\":[\"Marketing\",\"Sales\"],\"includeRecruitmentStats\":true,\"includePerformanceMetrics\":false}", + "description": "Department-specific HR analysis for Marketing and Sales of account 'acct789' in Q1 2024 excluding performance data." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Account", + "context": null + } + }, + { + "name": "human-resources.analyzeMessage", + "description": "Analyzes employee or candidate messages (emails, chat, or feedback) to extract sentiment, detect key topics, and identify communication style. Accepts plain text input and optional metadata, processes natural language understanding techniques, and outputs a structured summary of sentiment scores, topic tags, and communication tone to inform HR decision-making.", + "category": "human-resources", + "parameters": [ + { + "name": "messageContent", + "type": "string", + "description": "The full text content of the message to analyze. Required for processing.", + "required": true, + "defaultValue": "" + }, + { + "name": "messageType", + "type": "string", + "description": "Type of message (e.g., 'email', 'chat', 'feedback'). Helps tune analysis. Optional.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the message content, for accurate NLP processing. Defaults to 'en'.", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeKeywords", + "type": "boolean", + "description": "Whether to extract and return key keywords or phrases from the message. Defaults to true.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an analysis result object including sentiment score (numeric), predominant sentiment label, a list of key topics, detected communication style (formal, informal, assertive, passive), and optionally extracted keywords." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to analyze textual communications from employees or candidates to understand sentiment, key concerns or topics, and communication style. Useful in recruitment screening, employee feedback analysis, and improving HR communications.", + "limitations": "It cannot interpret messages with multiple languages mixed in or highly technical jargon without prior domain adaptation. Does not provide deep psychological profiling or guarantee 100% accurate sentiment detection in ambiguous texts.", + "examples": [ + "Analyze the sentiment and main concerns in this candidate's email.", + "Summarize key topics and tone in a recent employee feedback chat message.", + "Detect if the communication style in this email is formal or informal." + ] + }, + "tags": [ + "analysis", + "human-resources", + "sentiment", + "communication", + "NLP", + "employee-feedback", + "candidate-evaluation" + ], + "examples": [ + { + "inputJson": "{\"messageContent\":\"I appreciate the opportunity but the position doesn't align with my career goals after further reflection.\",\"messageType\":\"email\",\"language\":\"en\",\"includeKeywords\":true}", + "description": "Analyzing a candidate's polite decline email to identify sentiment and key reasons." + }, + { + "inputJson": "{\"messageContent\":\"The new software rollout is causing delays and frustration in our team meetings.\",\"messageType\":\"chat\",\"language\":\"en\",\"includeKeywords\":true}", + "description": "Analyzing team chat feedback about software issues to extract sentiment and key topics." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Message", + "context": null + } + }, + { + "name": "human-resources.analyzeJSON", + "description": "This tool accepts JSON-formatted human resources data such as employee records, recruitment applicants, or performance reviews. It analyzes the data to extract key insights like average tenure, skill distribution, candidate demographics, and identifies trends or anomalies. The output is a structured summary report with statistics and analytical highlights in JSON format.", + "category": "human-resources", + "parameters": [ + { + "name": "inputJson", + "type": "string", + "description": "The JSON string containing HR data to analyze, which may include employee profiles, candidate applications, or performance metrics.", + "required": true, + "defaultValue": "" + }, + { + "name": "analysisType", + "type": "string", + "description": "Type of analysis to perform such as 'summary', 'trend', or 'anomalyDetection'.", + "required": false, + "defaultValue": "summary" + }, + { + "name": "focusFields", + "type": "array", + "description": "Optional list of fields within input JSON to focus the analysis on (e.g., ['tenure', 'department']).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeCharts", + "type": "boolean", + "description": "Whether to include base64-encoded chart data visualizing key insights in the report.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A JSON object containing analysis results including summary statistics, identified trends, anomalies if any, and optionally charts encoded as base64 strings." + }, + "aiAgent": { + "useCase": "Use this tool when needing to extract meaningful insights from raw HR data formatted in JSON, such as summarizing employee demographics, analyzing recruitment applicants, or detecting unusual patterns in performance data. It helps automate understanding large sets of HR-related data without manual processing.", + "limitations": "Cannot perform natural language interpretation of unstructured text fields or integrate data from multiple disconnected sources automatically. Analysis depends on the structure and completeness of input JSON data.", + "examples": [ + "Analyze a JSON list of employee records to summarize average tenure by department.", + "Detect anomalies in monthly recruitment application counts from JSON data.", + "Generate a skill set distribution summary from employee JSON profiles, including charts." + ] + }, + "tags": [ + "analysis", + "human-resources", + "JSON", + "employee-data", + "recruitment", + "performance", + "insights" + ], + "examples": [ + { + "inputJson": "[{\"employeeId\":101,\"department\":\"Sales\",\"tenureMonths\":36,\"skills\":[\"communication\",\"negotiation\"]},{\"employeeId\":102,\"department\":\"Engineering\",\"tenureMonths\":48,\"skills\":[\"java\",\"python\"]}]", + "description": "Analyze employee records JSON to summarize average tenure by department and skill distributions." + }, + { + "inputJson": "[{\"applicationId\":201,\"position\":\"Developer\",\"yearsExperience\":3,\"status\":\"pending\"},{\"applicationId\":202,\"position\":\"Developer\",\"yearsExperience\":5,\"status\":\"rejected\"}]", + "description": "Analyze recruitment applications JSON to find average years of experience of applicants and application status distribution." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "JSON", + "context": null + } + }, + { + "name": "human-resources.downloadFile", + "description": "Downloads a specified file from the human resources system, such as employee documents, recruitment files, or reports. Accepts file identifier and optionally the file type and version. Processes authorization and fetches the latest or specified version of the file, returning the file content and metadata for storage or further processing.", + "category": "human-resources", + "parameters": [ + { + "name": "fileId", + "type": "string", + "description": "Unique identifier of the file to download from the HR system.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileType", + "type": "string", + "description": "Optional filter specifying the type of file (e.g., 'resume', 'contract', 'policy').", + "required": false, + "defaultValue": "" + }, + { + "name": "version", + "type": "string", + "description": "Specific version of the file to download, if versioning is supported.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include metadata about the file (e.g., creation date, uploader).", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing file content as base64 encoded string and metadata if requested, such as file name, size, type, and upload date." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to retrieve files related to human resources, such as employee contracts, resumes, policy documents, or recruitment files, from an internal HR management system. It is suitable for automating document retrieval for review, processing, or archival purposes.", + "limitations": "This tool cannot upload or modify files; it only supports downloading existing files by identifier. It also cannot handle authentication itself and requires valid permissions to access requested files.", + "examples": [ + "Download the latest resume file for candidate with ID 'cand123'.", + "Fetch the contract document version 'v2' for employee with file ID 'emp456'.", + "Retrieve the policy document file for HR compliance review." + ] + }, + "tags": [ + "download", + "human-resources", + "file-management", + "document", + "employee-data" + ], + "examples": [ + { + "inputJson": "{\"fileId\":\"emp123_resume\",\"fileType\":\"resume\"}", + "description": "Download the resume file for employee with ID 'emp123'." + }, + { + "inputJson": "{\"fileId\":\"cand789_interview_notes\",\"includeMetadata\":false}", + "description": "Download interview notes file for candidate ID 'cand789' without metadata." + }, + { + "inputJson": "{\"fileId\":\"policy_handbook\",\"version\":\"2023Q2\"}", + "description": "Download specific version '2023Q2' of the HR policy handbook file." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "File", + "context": null + } + }, + { + "name": "human-resources.downloadCode", + "description": "Downloads source code files related to human resources recruitment or employee management projects from a specified repository, branch, or path. Accepts repository details and outputs a compressed archive file containing the selected code files for offline review or integration into HR tools.", + "category": "human-resources", + "parameters": [ + { + "name": "repositoryUrl", + "type": "string", + "description": "The URL of the repository hosting the source code to download.", + "required": true, + "defaultValue": "" + }, + { + "name": "branch", + "type": "string", + "description": "The branch name to download code from. Defaults to the main branch if not specified.", + "required": false, + "defaultValue": "main" + }, + { + "name": "path", + "type": "string", + "description": "The path within the repository to the human resources code files or directory.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileTypes", + "type": "array", + "description": "List of file extensions to include in the download (e.g., ['.js', '.py']). If empty, downloads all file types.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeSubdirectories", + "type": "boolean", + "description": "Whether to include code files from subdirectories recursively under the specified path.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing a URL or binary stream to download the compressed archive file (.zip or .tar.gz) of the requested code files, and metadata such as archive size and file count." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically retrieve specific human resources related code (such as recruitment management scripts or employee database interfaces) from version control repositories for review, deployment, or integration. It is useful for automating code downloads to build or update HR systems without manual repository browsing.", + "limitations": "This tool cannot edit, analyze, or run the code; it only downloads files. It requires valid repository URLs and proper access permissions (e.g., public repos or authorized credentials). It does not handle binary or proprietary package downloads.", + "examples": [ + "Download the latest recruitment automation scripts from the HR project repository's main branch.", + "Retrieve all Python files related to employee analytics located in the /hr-analytics directory of the repo.", + "Get a compressed archive of JavaScript and JSON files under the /src/hr-ui path, including subdirectories." + ] + }, + "tags": [ + "human-resources", + "download", + "code", + "repository", + "automation", + "recruitment", + "employee-management" + ], + "examples": [ + { + "inputJson": "{\"repositoryUrl\":\"https://github.com/example/hr-management\",\"branch\":\"develop\",\"path\":\"/scripts/recruitment\",\"fileTypes\":[\".js\",\".py\"],\"includeSubdirectories\":true}", + "description": "Download all JavaScript and Python recruitment script files from the 'develop' branch's recruitment scripts directory, including all subfolders." + }, + { + "inputJson": "{\"repositoryUrl\":\"https://gitlab.com/company/hr-system\",\"path\":\"/src/employee\",\"fileTypes\":[],\"includeSubdirectories\":false}", + "description": "Download all code files from the employee source folder in the default branch, without traversing subdirectories." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Code", + "context": null + } + }, + { + "name": "human-resources.generateDataset", + "description": "This tool generates synthetic employee datasets for human resources purposes based on specified parameters such as number of records, attributes (e.g., age, department, salary), and data distribution constraints. It accepts configuration inputs to produce realistic, anonymized HR datasets useful for testing, training models, and analysis without exposing real employee data.", + "category": "human-resources", + "parameters": [ + { + "name": "numberOfRecords", + "type": "number", + "description": "The total number of employee records to generate in the dataset.", + "required": true, + "defaultValue": "" + }, + { + "name": "attributes", + "type": "array", + "description": "An array of employee attribute names to include in the dataset, such as ['age', 'department', 'salary', 'hireDate'].", + "required": true, + "defaultValue": "" + }, + { + "name": "distributionRules", + "type": "object", + "description": "Optional distribution rules to control data generation for attributes, e.g., age range, salary range, categorical department frequencies.", + "required": false, + "defaultValue": "" + }, + { + "name": "includePII", + "type": "boolean", + "description": "Whether to include pseudo personally-identifiable information fields like employee ID, email, or phone number.", + "required": false, + "defaultValue": "false" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Output dataset format, e.g., 'JSON', 'CSV'.", + "required": false, + "defaultValue": "JSON" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated dataset in the specified format, including metadata about the dataset schema and generation parameters." + }, + "aiAgent": { + "useCase": "Use this tool when needing a large, realistic, and customizable dataset of employee records for testing HR software, performing data analysis experiments, or training machine learning models without using sensitive real employee data. Ideal for scenarios requiring diverse attribute combinations and controlled data distributions.", + "limitations": "This tool cannot generate real employee records or guarantee compliance with legal regulations regarding real personal data since it only produces synthetic data. It may not simulate extremely complex interdependencies between attributes without explicit distribution rules.", + "examples": [ + "Generate a dataset with 1000 employee records including age, department, and salary with salary ranging between 50,000 and 120,000.", + "Create 500 employee records that include hireDate and department with departments distributed unevenly to mimic a real company.", + "Produce a CSV formatted dataset with 200 records including all standard employee attributes without PII for machine learning model training." + ] + }, + "tags": [ + "human-resources", + "dataset", + "synthetic-data", + "employee", + "data-generation", + "testing", + "training-data" + ], + "examples": [ + { + "inputJson": "{\"numberOfRecords\":1000,\"attributes\":[\"age\",\"department\",\"salary\"],\"distributionRules\":{\"age\":{\"min\":22,\"max\":65},\"salary\":{\"min\":50000,\"max\":120000}},\"includePII\":false,\"outputFormat\":\"JSON\"}", + "description": "Generate 1000 employee records with age, department, salary fields, controlling age and salary ranges, excluding PII, in JSON format." + }, + { + "inputJson": "{\"numberOfRecords\":500,\"attributes\":[\"hireDate\",\"department\"],\"distributionRules\":{\"department\":{\"values\":[\"Sales\",\"Engineering\",\"HR\"],\"probabilities\":[0.5,0.3,0.2]}},\"includePII\":false,\"outputFormat\":\"JSON\"}", + "description": "Generate 500 employee records including hireDate and department with custom department distribution, no PII, JSON format." + }, + { + "inputJson": "{\"numberOfRecords\":200,\"attributes\":[\"employeeId\",\"age\",\"email\",\"salary\"],\"includePII\":true,\"outputFormat\":\"CSV\"}", + "description": "Create a CSV dataset with 200 records including employeeId and email as PII fields with age and salary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Dataset", + "context": null + } + }, + { + "name": "human-resources.generateTest", + "description": "Generates customized recruitment or employee evaluation tests based on specified job roles and skill focus areas. Accepts input parameters defining the job title, test type, skill categories, and difficulty level, then compiles a tailored set of questions and tasks. Outputs a structured test package including questions, answer keys, and scoring guidelines.", + "category": "human-resources", + "parameters": [ + { + "name": "jobTitle", + "type": "string", + "description": "The target job title for which the test is being generated, to tailor relevant content.", + "required": true, + "defaultValue": "" + }, + { + "name": "testType", + "type": "string", + "description": "Type of test to generate such as 'technical', 'personality', or 'aptitude'.", + "required": true, + "defaultValue": "" + }, + { + "name": "skillAreas", + "type": "array", + "description": "Array of skill categories to focus on in the test, e.g., ['JavaScript', 'Problem Solving'].", + "required": true, + "defaultValue": "" + }, + { + "name": "difficultyLevel", + "type": "string", + "description": "Desired difficulty level of the test: 'beginner', 'intermediate', or 'advanced'.", + "required": false, + "defaultValue": "intermediate" + }, + { + "name": "numberOfQuestions", + "type": "number", + "description": "Approximate number of questions the test should contain.", + "required": false, + "defaultValue": "20" + }, + { + "name": "includeAnswerKey", + "type": "boolean", + "description": "Whether to include an answer key with explanations in the output.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated test composed of questions, answer key if requested, and scoring guidelines tailored to the inputs." + }, + "aiAgent": { + "useCase": "This tool is used when needing to quickly create relevant and role-specific assessment tests for candidates or employees, enabling standardized evaluation in recruitment or performance reviews without manual test creation. It supports various job types and skill focuses, improving efficiency.", + "limitations": "It cannot generate entirely novel test questions beyond its predefined database of templates and question variations. It also does not administer the test or evaluate completed responses.", + "examples": [ + "Generate a technical coding test for a JavaScript developer focusing on algorithms and data structures, intermediate level, with 25 questions.", + "Create a personality assessment test for a project manager role including communication and leadership skills, beginner difficulty.", + "Produce an aptitude test targeting logical reasoning and problem-solving for entry-level analyst position, 15 questions, include answer key." + ] + }, + "tags": [ + "human-resources", + "recruitment", + "test-generation", + "assessment", + "employee-evaluation", + "skills-testing" + ], + "examples": [ + { + "inputJson": "{\"jobTitle\":\"JavaScript Developer\",\"testType\":\"technical\",\"skillAreas\":[\"JavaScript\",\"Algorithms\",\"Data Structures\"],\"difficultyLevel\":\"intermediate\",\"numberOfQuestions\":25,\"includeAnswerKey\":true}", + "description": "Generate a 25-question intermediate technical test for a JavaScript developer focusing on JavaScript and algorithms." + }, + { + "inputJson": "{\"jobTitle\":\"Project Manager\",\"testType\":\"personality\",\"skillAreas\":[\"Communication\",\"Leadership\"],\"difficultyLevel\":\"beginner\",\"numberOfQuestions\":20,\"includeAnswerKey\":true}", + "description": "Create a personality test aimed at assessing communication and leadership skills for a project manager." + }, + { + "inputJson": "{\"jobTitle\":\"Business Analyst\",\"testType\":\"aptitude\",\"skillAreas\":[\"Logical Reasoning\",\"Problem Solving\"],\"difficultyLevel\":\"beginner\",\"numberOfQuestions\":15,\"includeAnswerKey\":false}", + "description": "Produce a 15-question aptitude test with focus on logical reasoning and problem solving for an entry-level analyst." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Test", + "context": null + } + }, + { + "name": "human-resources.generateWord", + "description": "Generates a relevant single word based on specified HR-related contexts such as recruitment phases, employee attributes, or corporate values. Accepts context keywords and optional word style preferences, then produces a single word that aligns with the input to assist in content creation or brainstorming.", + "category": "human-resources", + "parameters": [ + { + "name": "contextKeywords", + "type": "array", + "description": "An array of keywords indicating the HR-related context for the desired word (e.g., ['recruitment','teamwork']).", + "required": true, + "defaultValue": "" + }, + { + "name": "wordType", + "type": "string", + "description": "Specifies the preferred type of word to generate, such as 'noun', 'adjective', or 'verb'.", + "required": false, + "defaultValue": "noun" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length of the generated word in characters.", + "required": false, + "defaultValue": "20" + }, + { + "name": "capitalize", + "type": "boolean", + "description": "Whether the generated word should start with a capital letter.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated word as a string." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create concise HR-related content, labels, or keywords, such as naming recruitment stages, describing employee qualities, or generating motivational terms relevant to human resources. This helps automate and standardize terminology generation for HR documentation, communications, or software interfaces.", + "limitations": "This tool generates single words only, not phrases or sentences. It does not ensure trademark availability or cultural appropriateness of generated terms.", + "examples": [ + "Generate a word related to recruitment that is a noun.", + "Generate an adjective describing a positive employee attribute.", + "Generate a capitalized motivational word related to teamwork." + ] + }, + "tags": [ + "human-resources", + "generate", + "word", + "recruitment", + "employee", + "content-creation", + "labeling" + ], + "examples": [ + { + "inputJson": "{\"contextKeywords\":[\"recruitment\"],\"wordType\":\"noun\"}", + "description": "Generate a noun related to recruitment" + }, + { + "inputJson": "{\"contextKeywords\":[\"employee\",\"motivation\"],\"wordType\":\"adjective\",\"capitalize\":true}", + "description": "Generate a capitalized adjective describing employee motivation" + }, + { + "inputJson": "{\"contextKeywords\":[\"corporate\",\"values\"],\"maxLength\":10}", + "description": "Generate a noun related to corporate values with maximum length 10 characters" + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Word", + "context": null + } + }, + { + "name": "human-resources.createServer", + "description": "Creates a virtual server instance tailored for the human resources department to manage recruitment and employee data. Accepts parameters including server type, operating system, storage size, and network configuration. Provisions the server and returns its access credentials and status.", + "category": "human-resources", + "parameters": [ + { + "name": "serverType", + "type": "string", + "description": "Type of server instance required (e.g., 'application', 'database', 'file').", + "required": true, + "defaultValue": "" + }, + { + "name": "operatingSystem", + "type": "string", + "description": "Operating system to install on the server (e.g., 'Ubuntu 22.04', 'Windows Server 2019').", + "required": true, + "defaultValue": "" + }, + { + "name": "storageSizeGB", + "type": "number", + "description": "Amount of storage in gigabytes to allocate for the server.", + "required": true, + "defaultValue": "" + }, + { + "name": "ramSizeGB", + "type": "number", + "description": "Amount of RAM in gigabytes to allocate to the server.", + "required": true, + "defaultValue": "" + }, + { + "name": "cpuCores", + "type": "number", + "description": "Number of CPU cores to allocate to the server.", + "required": true, + "defaultValue": "" + }, + { + "name": "networkConfiguration", + "type": "object", + "description": "Network setup details like subnet, IP assignment, and firewall rules.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "enableBackup", + "type": "boolean", + "description": "Whether to enable automated backups for the server.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Information about the created server including its ID, IP address, status, and access credentials." + }, + "aiAgent": { + "useCase": "Use this tool when establishing dedicated server infrastructure for HR systems managing recruitment pipelines or employee data storage. It helps automate provisioning specific server resources and configurations to meet HR department requirements.", + "limitations": "This tool does not manage higher-level HR software installation or ongoing server maintenance tasks.", + "examples": [ + "Create a Linux application server with 100GB storage and 16GB RAM for recruitment database.", + "Set up a Windows file server with backup enabled for storing employee documents.", + "Provision a database server with 8 CPU cores and 64GB RAM for employee data analytics." + ] + }, + "tags": [ + "infrastructure", + "human-resources", + "server-provisioning", + "hr-systems", + "virtual-server", + "cloud", + "automation" + ], + "examples": [ + { + "inputJson": "{\"serverType\":\"application\",\"operatingSystem\":\"Ubuntu 22.04\",\"storageSizeGB\":100,\"ramSizeGB\":16,\"cpuCores\":4,\"networkConfiguration\":{\"subnet\":\"192.168.1.0/24\",\"assignPublicIP\":true,\"firewallRules\":[{\"protocol\":\"tcp\",\"portRange\":\"80-443\",\"action\":\"allow\"}]},\"enableBackup\":true}", + "description": "Provision a Linux application server with web ports open and backups enabled for HR recruitment software." + }, + { + "inputJson": "{\"serverType\":\"file\",\"operatingSystem\":\"Windows Server 2019\",\"storageSizeGB\":500,\"ramSizeGB\":32,\"cpuCores\":8,\"enableBackup\":false}", + "description": "Create a large Windows file server for storing HR employee documents without backups." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Server", + "context": null + } + }, + { + "name": "human-resources.createDataset", + "description": "Creates a structured dataset of employee or recruitment information by accepting detailed input parameters such as employee attributes, recruitment data fields, and filtering options. It processes this input to generate a curated, clean dataset formatted for HR analytics or reporting purposes, outputting the dataset as an array of employee or candidate objects.", + "category": "human-resources", + "parameters": [ + { + "name": "dataType", + "type": "string", + "description": "Type of dataset to create, e.g., 'employee' or 'recruitment'.", + "required": true, + "defaultValue": "" + }, + { + "name": "fields", + "type": "array", + "description": "List of fields/attributes to include in the dataset (e.g., ['name', 'department', 'hireDate']).", + "required": true, + "defaultValue": "" + }, + { + "name": "filters", + "type": "object", + "description": "Optional filtering criteria to select specific records, specified as key-value pairs (e.g., {department:'Engineering'}).", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeInactive", + "type": "boolean", + "description": "Whether to include inactive employees or candidates in the dataset.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxRecords", + "type": "number", + "description": "Maximum number of records to include in the dataset. If omitted, includes all matching records.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the requested dataset as an array of records matching the given parameters, and metadata like totalRecords and fieldsIncluded." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a customized dataset of employee or recruitment information to support analytics, reporting, or decision-making. It enables creating a filtered, focused data extract based on specified attributes, improving the relevance and usability of human resources data.", + "limitations": "This tool does not perform data validation beyond structural compliance and does not connect to external HR systems; it relies on provided data sources being up-to-date and accurate.", + "examples": [ + "Create a dataset of active employees including their names, departments, and hire dates.", + "Generate a recruitment dataset with candidate names, applied positions, and application statuses filtered for the 'Sales' department.", + "Produce a dataset of all employees including inactive staff limited to 100 records." + ] + }, + "tags": [ + "human-resources", + "dataset", + "employee-data", + "recruitment", + "filtering", + "analytics", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"dataType\":\"employee\",\"fields\":[\"name\",\"department\",\"hireDate\"],\"filters\":{\"department\":\"Engineering\"},\"includeInactive\":false}", + "description": "Dataset of active employees in Engineering with their name, department, and hire date." + }, + { + "inputJson": "{\"dataType\":\"recruitment\",\"fields\":[\"candidateName\",\"positionApplied\",\"applicationStatus\"],\"filters\":{\"positionApplied\":\"Sales Manager\"},\"includeInactive\":false}", + "description": "Dataset of recruitment candidates who applied for Sales Manager position with application status included." + }, + { + "inputJson": "{\"dataType\":\"employee\",\"fields\":[\"name\",\"status\"],\"includeInactive\":true,\"maxRecords\":100}", + "description": "Dataset of first 100 employees including inactive staff with their names and employment status." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dataset", + "context": null + } + }, + { + "name": "human-resources.createJSON", + "description": "Creates a structured JSON object representing an employee or candidate profile from provided employee details. Accepts inputs such as personal information, job details, contact info, and skills, then generates a standardized JSON string suitable for storing or processing in HR systems.", + "category": "human-resources", + "parameters": [ + { + "name": "personalInfo", + "type": "object", + "description": "Object containing personal details like first name, last name, date of birth, and gender.", + "required": true, + "defaultValue": "" + }, + { + "name": "jobDetails", + "type": "object", + "description": "Object containing job-related information such as position, department, employment type, and start date.", + "required": true, + "defaultValue": "" + }, + { + "name": "contactInfo", + "type": "object", + "description": "Object including contact details such as email, phone number, and address.", + "required": false, + "defaultValue": "" + }, + { + "name": "skills", + "type": "array", + "description": "Array of skill strings representing the employee's or candidate's professional skills.", + "required": false, + "defaultValue": "" + }, + { + "name": "employeeId", + "type": "string", + "description": "Unique identifier for the employee if applicable.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "string", + "description": "A JSON string that consolidates all the provided input into a standardized employee or candidate profile JSON object." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a well-structured JSON profile for an employee or candidate from specified details, especially for integration with HR management or applicant tracking systems. It helps in creating data records automatically from raw or semi-structured personnel input.", + "limitations": "This tool does not validate the input data beyond type correctness and does not handle updating existing records or deep normalization of content such as address verification or duplicate detection.", + "examples": [ + "Create a JSON employee profile with basic personal and job info.", + "Generate a candidate JSON profile including contact info and skills list.", + "Produce a JSON string for an existing employee record identified by employeeId." + ] + }, + "tags": [ + "human-resources", + "json", + "employee-profile", + "candidate-profile", + "data-generation", + "hr-management" + ], + "examples": [ + { + "inputJson": "{\"personalInfo\":{\"firstName\":\"John\",\"lastName\":\"Doe\",\"dateOfBirth\":\"1985-04-12\",\"gender\":\"male\"},\"jobDetails\":{\"position\":\"Software Engineer\",\"department\":\"Engineering\",\"employmentType\":\"Full-time\",\"startDate\":\"2023-05-01\"},\"contactInfo\":{\"email\":\"john.doe@example.com\",\"phone\":\"555-1234\",\"address\":\"123 Main St, Anytown, USA\"},\"skills\":[\"JavaScript\",\"React\",\"Node.js\"]}", + "description": "Creating a full employee profile JSON with personal info, job details, contact info, and skills." + }, + { + "inputJson": "{\"personalInfo\":{\"firstName\":\"Maria\",\"lastName\":\"Gonzalez\"},\"jobDetails\":{\"position\":\"HR Manager\",\"department\":\"Human Resources\",\"employmentType\":\"Contractor\",\"startDate\":\"2024-01-15\"}}", + "description": "Creating a simple employee JSON profile with required personal and job details only." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "JSON", + "context": null + } + }, + { + "name": "human-resources.createCommit", + "description": "Creates a commit record for code changes related to human resources projects. Accepts details such as commit message, author information, changed files, and optional tags. Processes these inputs to generate a structured commit object used for tracking code history in HR software repositories.", + "category": "human-resources", + "parameters": [ + { + "name": "commitMessage", + "type": "string", + "description": "A concise description of the changes made in this commit. Required for documenting code revisions.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "Name of the person making the commit. Used for tracking authorship in version control.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorEmail", + "type": "string", + "description": "Email address of the commit author. Supports proper identification and communication.", + "required": true, + "defaultValue": "" + }, + { + "name": "changedFiles", + "type": "array", + "description": "List of file paths that were changed, added, or deleted in this commit.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "commitTimestamp", + "type": "string", + "description": "ISO 8601 formatted date and time of when the commit was made. Defaults to current time if unspecified.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Optional tags or labels for the commit, such as 'bugfix' or 'feature'.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created commit record containing message, author, files, timestamp, and tags." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to record or simulate a code commit related to human resources projects, such as in automated HR software deployment, version tracking of HR policies code, or auditing development changes. It structures commit details into a standard format for version control systems.", + "limitations": "This tool does not interact with actual version control systems or perform code merges; it only creates structured commit data representations.", + "examples": [ + "Create a commit for adding a new employee onboarding script.", + "Record a bugfix commit updating HR compliance validation logic.", + "Tag a feature commit implementing a new payroll calculation method." + ] + }, + "tags": [ + "commit", + "version-control", + "human-resources", + "code-management", + "authoring", + "recording" + ], + "examples": [ + { + "inputJson": "{\"commitMessage\":\"Add employee onboarding automation script\",\"authorName\":\"Jane Doe\",\"authorEmail\":\"jane.doe@example.com\",\"changedFiles\":[\"scripts/onboarding.js\",\"docs/onboarding.md\"],\"commitTimestamp\":\"2024-06-15T10:30:00Z\",\"tags\":[\"feature\"]}", + "description": "Create a commit for a new HR automation feature." + }, + { + "inputJson": "{\"commitMessage\":\"Fix validation bug in leave request form\",\"authorName\":\"John Smith\",\"authorEmail\":\"john.smith@example.com\",\"changedFiles\":[\"forms/leaveRequest.js\"],\"tags\":[\"bugfix\"]}", + "description": "Record a bugfix commit with missing timestamp to use default current time." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Commit", + "context": null + } + }, + { + "name": "human-resources.createTest", + "description": "Creates a customized recruitment test for job candidates by taking input such as test title, description, question list, and duration. Processes the input to assemble the test and outputs a structured test object including metadata and question details ready for deployment in hiring workflows.", + "category": "human-resources", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title of the test to be created, e.g., 'JavaScript Developer Assessment'.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A brief explanation of the test purpose and scope shown to candidates.", + "required": false, + "defaultValue": "" + }, + { + "name": "questions", + "type": "array", + "description": "An array of question objects each containing question text, type (e.g., multiple-choice, coding, short-answer), options if applicable, and correct answers.", + "required": true, + "defaultValue": "" + }, + { + "name": "durationMinutes", + "type": "number", + "description": "Total time allocated in minutes for candidates to complete the test.", + "required": false, + "defaultValue": "60" + }, + { + "name": "passingScore", + "type": "number", + "description": "Minimum percentage score required to pass the test (0-100).", + "required": false, + "defaultValue": "70" + }, + { + "name": "difficultyLevel", + "type": "string", + "description": "The overall difficulty level of the test (e.g., 'easy', 'medium', 'hard').", + "required": false, + "defaultValue": "medium" + }, + { + "name": "language", + "type": "string", + "description": "The language in which the test is presented, e.g., 'en' for English.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "A structured test object including test id, title, description, questions (with details), duration, passing score, difficulty, language, and creation timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when you need to generate a structured, ready-to-use assessment test for evaluating job candidates during recruitment. It is optimized for assembling questions of different types into a formal test format with scoring criteria and timing.", + "limitations": "This tool does not automatically generate question content; questions must be provided as input. It also does not administer the test or store candidate results.", + "examples": [ + "Create a programming test for front-end developers with 10 multiple-choice questions and a time limit of 45 minutes.", + "Generate a medium difficulty test in English for data analysts including coding and short answer questions.", + "Assemble a test titled 'Customer Service Aptitude' with passing score of 80% and duration 30 minutes." + ] + }, + "tags": [ + "human-resources", + "recruitment", + "assessment", + "test-creation", + "employee-evaluation" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Frontend Developer Test\",\"description\":\"Assessment for React developers.\",\"questions\":[{\"text\":\"What is JSX?\",\"type\":\"multiple-choice\",\"options\":[\"JavaScript XML\",\"Java Standard\",\"JavaScript Experience\"],\"correctAnswers\":[\"JavaScript XML\"]},{\"text\":\"Write a React component that renders 'Hello World'.\",\"type\":\"coding\",\"correctAnswers\":[]},{\"text\":\"Explain the virtual DOM.\",\"type\":\"short-answer\",\"correctAnswers\":[]}],\"durationMinutes\":60,\"passingScore\":75,\"difficultyLevel\":\"medium\",\"language\":\"en\"}", + "description": "Create a 3-question React developer test with mixed question types and a 60-minute time limit." + }, + { + "inputJson": "{\"title\":\"English Proficiency Test\",\"description\":\"Evaluates reading and writing skills.\",\"questions\":[{\"text\":\"Choose the correct synonym of 'happy'.\",\"type\":\"multiple-choice\",\"options\":[\"sad\",\"joyful\",\"angry\"],\"correctAnswers\":[\"joyful\"]}],\"durationMinutes\":30,\"passingScore\":80,\"difficultyLevel\":\"easy\",\"language\":\"en\"}", + "description": "Create a simple English test with one multiple-choice question and a short duration." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Test", + "context": null + } + }, + { + "name": "human-resources.createAPI", + "description": "Generates a customizable RESTful API specification for managing human resources data, including recruitment and employee records. Accepts input of desired entity schemas, authentication method, and endpoints. Outputs an OpenAPI-compliant JSON specification for easy implementation and integration.", + "category": "human-resources", + "parameters": [ + { + "name": "entitySchemas", + "type": "array", + "description": "An array of objects defining entities (e.g., 'employee', 'candidate') with fields and data types to be exposed via the API.", + "required": true, + "defaultValue": "" + }, + { + "name": "authenticationType", + "type": "string", + "description": "Type of authentication for the API, such as 'OAuth2', 'API Key', or 'None'.", + "required": true, + "defaultValue": "OAuth2" + }, + { + "name": "includeEndpoints", + "type": "array", + "description": "List of CRUD operations (e.g., 'create', 'read', 'update', 'delete') to include for each entity.", + "required": false, + "defaultValue": "[\"create\",\"read\",\"update\",\"delete\"]" + }, + { + "name": "apiVersion", + "type": "string", + "description": "Version string for the API to be generated.", + "required": false, + "defaultValue": "1.0.0" + }, + { + "name": "basePath", + "type": "string", + "description": "Base URL path prefix for the API endpoints.", + "required": false, + "defaultValue": "/api/hr" + } + ], + "returns": { + "type": "object", + "description": "OpenAPI specification JSON object that describes the HR management API endpoints, methods, parameters, and schemas according to the input requirements." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to automatically generate a standardized, ready-to-implement API specification to manage HR data entities such as employees and candidates. This facilitates rapid integration with HR systems, enabling programmatic management of recruitment and personnel information without manually coding API definitions.", + "limitations": "This tool generates API specifications but does not implement or deploy the API. It cannot create business logic, database connections, or handle real-time integrations beyond static spec generation.", + "examples": [ + "Generate an API spec for employee and candidate entities with OAuth2 authentication.", + "Create an API spec supporting CRUD operations for a custom employee schema with API key auth.", + "Produce a versioned HR API spec with base path '/api/human-resources' and minimal endpoints." + ] + }, + "tags": [ + "human-resources", + "api", + "generation", + "openapi", + "hr-management", + "automation" + ], + "examples": [ + { + "inputJson": "{\"entitySchemas\":[{\"name\":\"employee\",\"fields\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"position\",\"type\":\"string\"},{\"name\":\"hireDate\",\"type\":\"string\",\"format\":\"date\"}]}],\"authenticationType\":\"OAuth2\",\"includeEndpoints\":[\"create\",\"read\",\"update\",\"delete\"],\"apiVersion\":\"1.0.0\",\"basePath\":\"/api/hr\"}", + "description": "Generate a comprehensive OAuth2 secured HR API for employee entity with full CRUD operations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "API", + "context": null + } + }, + { + "name": "human-resources.createContract", + "description": "This tool generates a customized employment contract document based on provided employee details, role specifications, compensation, and contract terms. It accepts inputs such as employee name, position, start date, salary, contract duration, and legal clauses, then produces a formatted contract document in text or PDF format ready for review and signing.", + "category": "human-resources", + "parameters": [ + { + "name": "employeeName", + "type": "string", + "description": "Full name of the employee the contract is for", + "required": true, + "defaultValue": "" + }, + { + "name": "position", + "type": "string", + "description": "Job title or role the employee will assume", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Employment start date in ISO 8601 format (YYYY-MM-DD)", + "required": true, + "defaultValue": "" + }, + { + "name": "salary", + "type": "number", + "description": "Annual salary in the specified currency", + "required": true, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code for salary (e.g., USD, EUR)", + "required": true, + "defaultValue": "USD" + }, + { + "name": "contractDurationMonths", + "type": "number", + "description": "Length of the employment contract in months; 0 if permanent", + "required": false, + "defaultValue": "0" + }, + { + "name": "probationPeriodMonths", + "type": "number", + "description": "Duration of probation period in months, if applicable", + "required": false, + "defaultValue": "3" + }, + { + "name": "workLocation", + "type": "string", + "description": "Primary location where the employee will work", + "required": false, + "defaultValue": "" + }, + { + "name": "additionalClauses", + "type": "array", + "description": "Optional additional legal or company-specific clauses to include", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired format of contract output: 'text' or 'pdf'", + "required": false, + "defaultValue": "text" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated contract content as a string and metadata including format and page count if applicable" + }, + "aiAgent": { + "useCase": "Use this tool when generating standardized, legally compliant employment contracts tailored to the employee's role and terms. It automates contract drafting to reduce manual errors and speed up the hiring process.", + "limitations": "This tool does not provide legal advice or verify jurisdiction-specific compliance. Final review by legal professionals is recommended.", + "examples": [ + "Generate a full-time software engineer contract starting July 1 with an annual salary of $90,000 USD.", + "Create a 6-month consulting contract for a Marketing Specialist with specified additional clauses.", + "Produce a permanent contract in PDF for a remote customer support representative." + ] + }, + "tags": [ + "human-resources", + "contract", + "employment", + "document-generation", + "recruitment", + "hr-automation" + ], + "examples": [ + { + "inputJson": "{\"employeeName\":\"Jane Doe\",\"position\":\"Software Engineer\",\"startDate\":\"2024-07-01\",\"salary\":90000,\"currency\":\"USD\",\"contractDurationMonths\":0,\"probationPeriodMonths\":3,\"workLocation\":\"New York, NY\",\"additionalClauses\":[\"NonDisclosureAgreement\",\"IntellectualPropertyAssignment\"],\"outputFormat\":\"pdf\"}", + "description": "Create a permanent Software Engineer contract starting July 1 in PDF format including NDA and IP assignment clauses." + }, + { + "inputJson": "{\"employeeName\":\"John Smith\",\"position\":\"Marketing Specialist\",\"startDate\":\"2024-05-15\",\"salary\":60000,\"currency\":\"USD\",\"contractDurationMonths\":6,\"probationPeriodMonths\":0,\"workLocation\":\"Remote\",\"additionalClauses\":[],\"outputFormat\":\"text\"}", + "description": "Generate a 6-month contract for a Marketing Specialist working remotely, output as text." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Contract", + "context": null + } + }, + { + "name": "translation.analyzeSentence", + "description": "Analyzes a given sentence in the specified language to provide insights on its linguistic structure, detected language, translation quality indicators, and potential ambiguities. Accepts a text sentence and language code; outputs detailed analysis including language confidence, syntax elements, and complexity score.", + "category": "translation", + "parameters": [ + { + "name": "sentence", + "type": "string", + "description": "The sentence text to analyze for language and translation-related insights.", + "required": true, + "defaultValue": "" + }, + { + "name": "languageCode", + "type": "string", + "description": "ISO 639-1 language code of the sentence to guide analysis (e.g., 'en' for English).", + "required": true, + "defaultValue": "" + }, + { + "name": "detectLanguage", + "type": "boolean", + "description": "If true, the tool detects the language automatically, ignoring provided languageCode.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing detected language details, syntactic components, translation quality flags, and sentence complexity metrics." + }, + "aiAgent": { + "useCase": "Use this tool when needing to analyze the linguistic and translation-relevant features of a sentence, such as detecting language, identifying grammatical structure, assessing translation difficulty, or spotting ambiguities that could affect translation quality. Useful for pre-translation analysis or quality control of translated text.", + "limitations": "Does not perform full semantic translation or deep contextual interpretation beyond sentence-level analysis. Not suitable for paragraphs or longer texts as a single input.", + "examples": [ + "Analyze the language and syntax structure of this French sentence.", + "Check the ambiguity and complexity of a given English sentence before translation.", + "Detect language of a short input without specifying the language code explicitly." + ] + }, + "tags": [ + "translation", + "language analysis", + "linguistics", + "sentence analysis", + "syntax", + "translation quality" + ], + "examples": [ + { + "inputJson": "{\"sentence\":\"J'aime apprendre de nouvelles langues.\",\"languageCode\":\"fr\",\"detectLanguage\":false}", + "description": "Analyze a French sentence's structure and language details." + }, + { + "inputJson": "{\"sentence\":\"The quick brown fox jumps over the lazy dog.\",\"languageCode\":\"en\",\"detectLanguage\":false}", + "description": "Analyze an English sentence for syntax and complexity." + }, + { + "inputJson": "{\"sentence\":\"Das ist ein Test.\",\"languageCode\":\"\",\"detectLanguage\":true}", + "description": "Automatically detect the language of the sentence and analyze syntax." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Sentence", + "context": null + } + }, + { + "name": "translation.analyzeAlert", + "description": "Analyzes security alert messages written in various languages to identify and translate key threat indicators, severity levels, and recommended actions into a specified target language. Accepts raw alert text and language codes, processes natural language content to extract critical security information, and outputs a structured summary in the desired language for easier comprehension and response.", + "category": "translation", + "parameters": [ + { + "name": "alertText", + "type": "string", + "description": "Raw text of the security alert message to analyze and translate.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "ISO code of the language in which the alert text is originally written. If unknown, the tool will attempt to auto-detect.", + "required": false, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "ISO code of the language into which the alert analysis and translation should be provided.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeSeverityScore", + "type": "boolean", + "description": "Flag indicating whether to compute and include a severity score for the alert.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractIndicators", + "type": "boolean", + "description": "If true, extracts relevant threat indicators such as IP addresses, URLs, malware names, or CVEs.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns a structured object containing the translated alert summary, severity score (if requested), extracted indicators (if requested), original alert metadata, and confidence levels for the analysis and translation." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to quickly understand and communicate the critical content of a security alert written in a language unfamiliar to the user or security team. It helps in identifying threat details and recommended responses across language barriers, automating multilingual alert triage and response workflows.", + "limitations": "The tool relies on natural language understanding and translation models, so very ambiguous, poorly formatted, or highly specialized technical alerts may yield incomplete or less accurate extractions. It does not perform incident response actions but only analyzes and translates alert content.", + "examples": [ + "Translate and summarize a Japanese security alert into English highlighting threat severity and indicators.", + "Analyze a German phishing alert and extract URLs and malware names while translating summary into Spanish.", + "Translate a Russian vulnerability alert into French and provide a severity score along with key indicators." + ] + }, + "tags": [ + "translation", + "security", + "alert", + "analysis", + "multilingual", + "threat intelligence", + "NLP" + ], + "examples": [ + { + "inputJson": "{\"alertText\":\"生物识别系统检测到异常登录尝试,IP地址为192.168.1.101,可能存在暴力破解风险。请立即检查账户安全。\",\"sourceLanguage\":\"zh\",\"targetLanguage\":\"en\",\"includeSeverityScore\":true,\"extractIndicators\":true}", + "description": "Chinese alert about suspicious login attempt with IP address extraction and translation to English." + }, + { + "inputJson": "{\"alertText\":\"Detección de malware ransomware identificado como 'LockerX' en la red corporativa, potencial impacto alto.\",\"sourceLanguage\":\"es\",\"targetLanguage\":\"en\",\"includeSeverityScore\":true,\"extractIndicators\":true}", + "description": "Spanish alert describing ransomware detected on corporate network requiring translation and severity assessment to English." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Alert", + "context": null + } + }, + { + "name": "translation.analyzeNotification", + "description": "Analyzes multilingual notification text to detect language, extract key information such as event type, sender, and urgency, and provides a structured summary suitable for translation or further processing. Accepts notification message strings and optional language hints, outputting an analysis object with identified attributes.", + "category": "translation", + "parameters": [ + { + "name": "notificationText", + "type": "string", + "description": "The full notification message text to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguageHint", + "type": "string", + "description": "Optional ISO language code hint for the source text to improve analysis accuracy.", + "required": false, + "defaultValue": "" + }, + { + "name": "detectUrgency", + "type": "boolean", + "description": "Whether to analyze the notification text to detect urgency or priority indicators.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing detected language, extracted key information (event type, sender, date/time, urgency), and a concise summary of the notification content." + }, + "aiAgent": { + "useCase": "Use this tool when processing incoming notifications in various languages to automatically detect their language and extract key information elements for translation or routing. Useful in multilingual communication platforms, alert management, or notification aggregation where structured data is needed from freeform notification texts.", + "limitations": "This tool cannot replace full natural language translation or deep content understanding; it focuses on shallow semantic extraction from notifications and language detection only.", + "examples": [ + "Analyze the notification 'Meeting rescheduled to 3 PM tomorrow' and extract event details.", + "Detect language and summarize the urgency of a Spanish alert message.", + "Extract sender and event type from a push notification in Chinese." + ] + }, + "tags": [ + "translation", + "notification", + "language-detection", + "information-extraction", + "multilingual" + ], + "examples": [ + { + "inputJson": "{\"notificationText\":\"Your appointment with Dr. Smith is confirmed for July 10th, 2 PM.\",\"sourceLanguageHint\":\"en\",\"detectUrgency\":false}", + "description": "Analyze English appointment confirmation notification without urgency detection." + }, + { + "inputJson": "{\"notificationText\":\"重要通知:服务器将在今晚12点进行维护。\",\"sourceLanguageHint\":\"zh\",\"detectUrgency\":true}", + "description": "Analyze Chinese notification about server maintenance detecting urgency level." + }, + { + "inputJson": "{\"notificationText\":\"Réunion annulée vendredi prochain.\",\"sourceLanguageHint\":\"fr\",\"detectUrgency\":true}", + "description": "Analyze French notification about a cancelled meeting with urgency detection." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Notification", + "context": null + } + }, + { + "name": "translation.analyzeEvent", + "description": "Analyzes multilingual event data by processing event descriptions and metadata in multiple languages to identify translation consistency issues, language usage patterns, and semantic anomalies. Accepts event text data and language codes, then outputs a detailed report highlighting translation quality and detected linguistic discrepancies.", + "category": "translation", + "parameters": [ + { + "name": "eventText", + "type": "string", + "description": "The text content of the event description or summary to analyze for translation quality and issues.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The BCP-47 language code representing the original language of the event text.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguages", + "type": "array", + "description": "Array of BCP-47 language codes indicating the target languages into which the event text is translated and should be analyzed for consistency.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeSemanticAnalysis", + "type": "boolean", + "description": "Whether to perform deeper semantic analysis to detect meaning discrepancies beyond direct translation errors.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxReportItems", + "type": "number", + "description": "Maximum number of translation issues or anomalies to include in the generated report.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing overall translation consistency score, list of detected translation issues and language usage statistics." + }, + "aiAgent": { + "useCase": "Use this tool when given event descriptions or related textual metadata in multiple languages and you need to assess the quality and consistency of their translations, detect possible errors, or understand language usage trends within event data.", + "limitations": "This tool does not perform actual translation or generate translated text; it only analyzes provided multilingual text for quality and consistency. It requires accurate input language codes.", + "examples": [ + "Analyze translation consistency of an event description originally in English translated to Spanish and French.", + "Check semantic consistency between original and translated texts of a conference keynote event.", + "Generate a report of linguistic anomalies found in multilingual event summaries." + ] + }, + "tags": [ + "translation", + "analysis", + "event", + "multilingual", + "semantics", + "quality-assurance" + ], + "examples": [ + { + "inputJson": "{\"eventText\":\"Annual Tech Conference keynote on AI advancements.\",\"sourceLanguage\":\"en\",\"targetLanguages\":[\"es\",\"fr\"],\"includeSemanticAnalysis\":true,\"maxReportItems\":5}", + "description": "Analyze the keynote event description originally in English with Spanish and French translations, including semantic analysis, and limit report to 5 issues." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Event", + "context": null + } + }, + { + "name": "translation.analyzeCSV", + "description": "This tool accepts a CSV file containing multilingual text data, analyzes the content by detecting languages used, evaluating translation consistency across columns, and identifying untranslated or inconsistent entries. It outputs a detailed report summarizing language distribution, translation quality flags, and suggestions for improvement to help ensure translation accuracy in CSV datasets.", + "category": "translation", + "parameters": [ + { + "name": "csvContent", + "type": "string", + "description": "The CSV data as a string, containing text entries potentially in multiple languages, structured as rows and columns.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguages", + "type": "array", + "description": "An optional array of source language codes expected in the CSV to help guide detection (e.g., [\"en\",\"fr\"]).", + "required": false, + "defaultValue": "" + }, + { + "name": "targetLanguages", + "type": "array", + "description": "An optional array of target language codes that the CSV columns are supposed to be translated into, to check for consistency.", + "required": false, + "defaultValue": "" + }, + { + "name": "translationColumns", + "type": "array", + "description": "An array of column headers or indices that correspond to translated text entries to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "consistencyThreshold", + "type": "number", + "description": "A numeric threshold (0–1) to flag inconsistencies in translation quality or missing translations; defaults to 0.8.", + "required": false, + "defaultValue": "0.8" + } + ], + "returns": { + "type": "object", + "description": "A structured report including detected languages per row and column, quality flags indicating missing or inconsistent translations, and summary statistics for language distribution and translation coverage." + }, + "aiAgent": { + "useCase": "Use this tool when needing to validate or audit multilingual translation data stored in CSV files, particularly to detect language mismatches, missing or low-quality translations, and overall consistency across different language columns.", + "limitations": "Cannot perform in-depth linguistic correctness or grammar checking; does not produce translations but only analyzes existing CSV text data for translation quality and consistency.", + "examples": [ + "Analyze a CSV file to detect which rows have missing French translations compared to the English source.", + "Evaluate a CSV containing UI strings in multiple languages to identify columns with inconsistent or untranslated entries.", + "Generate an overall summary report of language presence and translation coverage in a multilingual CSV dataset." + ] + }, + "tags": [ + "translation", + "CSV", + "multilingual", + "analysis", + "quality-assurance", + "language-detection" + ], + "examples": [ + { + "inputJson": "{\"csvContent\":\"id,en,fr,de\\n1,Hello,Bonjour,Hallo\\n2,Goodbye,,Auf Wiedersehen\\n3,Thank you,Merci,Danke\",\"translationColumns\":[\"en\",\"fr\",\"de\"]}", + "description": "Analyze a CSV with English source and French, German translations - detect missing translations and inconsistencies." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "CSV", + "context": null + } + }, + { + "name": "translation.uploadReport", + "description": "Uploads a report document in supported file formats (PDF, DOCX, TXT) for the purpose of automated translation processing. Accepts the report file, source and target languages, and optional metadata. Returns a confirmation with a translation job ID and status to track progress or retrieve translated outputs later.", + "category": "translation", + "parameters": [ + { + "name": "fileName", + "type": "string", + "description": "Name of the report file including extension (e.g., report.pdf).", + "required": true, + "defaultValue": "" + }, + { + "name": "fileContentBase64", + "type": "string", + "description": "Base64 encoded content of the report file to upload.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code of the source report content (e.g., 'en' for English).", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguages", + "type": "array", + "description": "An array of language codes to translate the report into (e.g., ['fr', 'de']).", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value pairs to describe the report context (e.g., {'department':'finance'}).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing a unique translationJobId (string) and status (string) indicating if the upload was successful and the job queued." + }, + "aiAgent": { + "useCase": "Use this tool when the user needs to upload a document report for machine translation into one or more target languages. Ideal for multi-language corporate reporting workflows or document localization pipelines. It handles common document file formats and returns a job ID to track or retrieve translations later.", + "limitations": "This tool does not perform the translation itself; it only uploads and queues the report for translation. It does not support scanning images for text translation or non-document file types. The quality and availability of translations depend on downstream translation processing.", + "examples": [ + "Upload a quarterly financial report in English for translation into French and German.", + "Submit a project status DOCX report for localization to Spanish.", + "Upload a TXT meeting summary report for translation into Japanese." + ] + }, + "tags": [ + "translation", + "upload", + "document", + "report", + "multilanguage", + "localization", + "corporate" + ], + "examples": [ + { + "inputJson": "{\"fileName\":\"Q1_Financial_Report.pdf\",\"fileContentBase64\":\"JVBERi0xLjQKJcfs...\",\"sourceLanguage\":\"en\",\"targetLanguages\":[\"fr\",\"de\"],\"metadata\":{\"department\":\"finance\",\"year\":\"2024\"}}", + "description": "Uploading a PDF financial report in English for French and German translations with metadata about department and year." + }, + { + "inputJson": "{\"fileName\":\"Project_Status.docx\",\"fileContentBase64\":\"UEsDBBQABgAIAAAAI...\",\"sourceLanguage\":\"en\",\"targetLanguages\":[\"es\"],\"metadata\":{}}", + "description": "Uploading a DOCX project status report for translation into Spanish with no additional metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Report", + "context": null + } + }, + { + "name": "translation.downloadReport", + "description": "Downloads a translation report document summarizing translated content between specified languages. Accepts parameters for source and target languages, report format, and filters by date or document type. Processes translation metadata and outputs a downloadable file link for the report.", + "category": "translation", + "parameters": [ + { + "name": "sourceLanguage", + "type": "string", + "description": "The original language code of the content to include in the report (e.g., 'en').", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The target language code for the translation content (e.g., 'fr').", + "required": true, + "defaultValue": "" + }, + { + "name": "reportFormat", + "type": "string", + "description": "The file format of the report to download (e.g., 'pdf', 'xlsx').", + "required": false, + "defaultValue": "pdf" + }, + { + "name": "startDate", + "type": "string", + "description": "Filter translations starting from this date in ISO 8601 format (e.g., '2023-01-01').", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "Filter translations up to this date in ISO 8601 format (e.g., '2023-12-31').", + "required": false, + "defaultValue": "" + }, + { + "name": "documentType", + "type": "string", + "description": "Optional filter for the type of translated documents included (e.g., 'legal', 'marketing').", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the report download link and metadata including file name, size (in bytes), and format." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate and retrieve a comprehensive summary report of translation activities or content between specified languages within given timeframes or document categories. It helps agents provide users with ready-to-download translation analytics or status reports.", + "limitations": "Cannot generate reports for unsupported languages or file formats; does not translate content itself, only compiles translation metadata into reports.", + "examples": [ + "Download a PDF report summarizing translations from English to Spanish between January and June 2023.", + "Obtain an Excel translation report filtered by document type 'legal' from French to German.", + "Get a translation activity report for translations done into Japanese without date filters." + ] + }, + "tags": [ + "translation", + "report", + "download", + "document", + "multilingual", + "analytics" + ], + "examples": [ + { + "inputJson": "{\"sourceLanguage\":\"en\",\"targetLanguage\":\"es\",\"reportFormat\":\"pdf\",\"startDate\":\"2023-01-01\",\"endDate\":\"2023-06-30\"}", + "description": "Download a PDF report summarizing translations from English to Spanish between January and June 2023." + }, + { + "inputJson": "{\"sourceLanguage\":\"fr\",\"targetLanguage\":\"de\",\"reportFormat\":\"xlsx\",\"documentType\":\"legal\"}", + "description": "Download an Excel report filtered by legal documents translated from French to German." + }, + { + "inputJson": "{\"sourceLanguage\":\"en\",\"targetLanguage\":\"ja\"}", + "description": "Download a PDF translation report for translations done from English to Japanese with default settings." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Report", + "context": null + } + }, + { + "name": "translation.sendMessage", + "description": "Sends a translated message to a recipient by accepting the original message text, source and target languages, and recipient contact details. It translates the input text and delivers the translated text to the specified recipient via an inline messaging interface or communication protocol. Returns a status indicating success or failure of delivery.", + "category": "translation", + "parameters": [ + { + "name": "originalText", + "type": "string", + "description": "The original message text to be translated and sent.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "Language code (e.g., 'en') of the original message text.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "Language code (e.g., 'fr') to translate the message into before sending.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientId", + "type": "string", + "description": "Identifier (e.g., user ID, phone number, or email) of the message recipient.", + "required": true, + "defaultValue": "" + }, + { + "name": "deliveryMethod", + "type": "string", + "description": "Method to send the message, such as 'email', 'sms', or 'inApp'.", + "required": false, + "defaultValue": "inApp" + }, + { + "name": "messageSubject", + "type": "string", + "description": "Optional subject line for the message if applicable (e.g., email subject).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Response object containing delivery status and translated text, including success boolean and an optional error message." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to send a message to a user or contact in a different language, automatically translating the original message text and delivering it via a specified communication channel. It is ideal for multilingual communications in apps or services requiring real-time translation and message sending.", + "limitations": "This tool does not support translation quality customization or manual edits before sending, nor can it guarantee delivery success against recipient platform restrictions or network failures.", + "examples": [ + "Send a greeting message translated from English to Spanish to a user's email.", + "Translate a notification from French to German and send it via SMS to a phone number.", + "Deliver a customer support message translated from English to Chinese through an in-app messaging system." + ] + }, + "tags": [ + "translation", + "messaging", + "communication", + "multilingual", + "send", + "automation" + ], + "examples": [ + { + "inputJson": "{\"originalText\":\"Hello, your order has been shipped.\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"es\",\"recipientId\":\"user123@example.com\",\"deliveryMethod\":\"email\",\"messageSubject\":\"Order Update\"}", + "description": "Send an English to Spanish translated order update message to a user's email." + }, + { + "inputJson": "{\"originalText\":\"Votre rendez-vous est confirmé.\",\"sourceLanguage\":\"fr\",\"targetLanguage\":\"de\",\"recipientId\":\"+4915123456789\",\"deliveryMethod\":\"sms\"}", + "description": "Send a French to German translated appointment confirmation via SMS to a phone number." + }, + { + "inputJson": "{\"originalText\":\"Please reset your password using the link.\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"zh\",\"recipientId\":\"user456\",\"deliveryMethod\":\"inApp\"}", + "description": "Send an English to Chinese translated password reset instruction through in-app messaging system." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Message", + "context": null + } + }, + { + "name": "translation.formatReport", + "description": "This tool accepts a translated textual report along with source and target languages, and formats the report text according to specified style guidelines such as line width, paragraph spacing, and text alignment. It produces a well-structured, formatted report text optimized for readability in the target language.", + "category": "translation", + "parameters": [ + { + "name": "translatedText", + "type": "string", + "description": "The full text of the translated report that needs formatting.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "Language code of the original report text before translation (e.g., 'en').", + "required": false, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "Language code of the translated report text (e.g., 'fr').", + "required": true, + "defaultValue": "" + }, + { + "name": "lineWidth", + "type": "number", + "description": "Maximum number of characters per line to wrap the text (e.g., 80).", + "required": false, + "defaultValue": "80" + }, + { + "name": "paragraphSpacing", + "type": "number", + "description": "Number of blank lines inserted between paragraphs for clarity.", + "required": false, + "defaultValue": "1" + }, + { + "name": "alignment", + "type": "string", + "description": "Text alignment style: 'left', 'right', 'center', or 'justify'.", + "required": false, + "defaultValue": "left" + }, + { + "name": "preserveHeadings", + "type": "boolean", + "description": "Whether to detect and preserve heading formatting within the report text.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted report text reflecting the requested layout and style guidelines." + }, + "aiAgent": { + "useCase": "Use this tool when you have a translated report text that requires proper formatting for presentation or publication, ensuring the translated content is visually structured and readable according to specified styling preferences. This is especially useful after machine or manual translation to finalize the report layout in the target language.", + "limitations": "This tool does not perform translation itself or verify translation accuracy; it only formats already translated report text. It also cannot add or correct content structure beyond text alignment and wrapping.", + "examples": [ + "Format a French translated report to have justified text with 70 characters line width and two blank lines between paragraphs.", + "Prepare a Japanese translated report for presentation with centered headings preserved and left-aligned paragraphs with standard spacing." + ] + }, + "tags": [ + "translation", + "formatting", + "report", + "text-processing", + "multilingual", + "document-preparation" + ], + "examples": [ + { + "inputJson": "{\"translatedText\":\"Le rapport annuel présente les résultats de l'exercice.\\n\\nIl souligne les progrès réalisés...\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"fr\",\"lineWidth\":70,\"paragraphSpacing\":2,\"alignment\":\"justify\",\"preserveHeadings\":true}", + "description": "Formatting a French translated report with justified text, line width 70, and double spacing between paragraphs." + }, + { + "inputJson": "{\"translatedText\":\"年度報告書には、主要な業績指標が記載されています。\\n\\n詳細は以下の通りです。\",\"targetLanguage\":\"ja\",\"lineWidth\":80,\"paragraphSpacing\":1,\"alignment\":\"left\",\"preserveHeadings\":true}", + "description": "Formatting a Japanese translated report with left alignment and standard paragraph spacing." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Report", + "context": null + } + }, + { + "name": "translation.renderDocument", + "description": "This tool translates the textual content of a document from a source language to a target language, preserving the original document structure and formatting. It accepts document content as text or markup, performs language translation, and outputs a translated document maintaining layout integrity.", + "category": "translation", + "parameters": [ + { + "name": "documentContent", + "type": "string", + "description": "The full textual content of the document to be translated, including any markup or formatting tags if applicable.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code of the original document content (e.g., 'en' for English).", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The language code into which the document should be translated (e.g., 'fr' for French).", + "required": true, + "defaultValue": "" + }, + { + "name": "formatType", + "type": "string", + "description": "The format of the document content, such as 'plain', 'html', 'markdown', or 'xml', to help preserve structure during translation.", + "required": false, + "defaultValue": "plain" + }, + { + "name": "preserveFormatting", + "type": "boolean", + "description": "Whether to preserve original document formatting and markup in the translated output. Defaults to true.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the translated document content as a string in the same format as input, preserving the original document's structure and formatting where possible." + }, + "aiAgent": { + "useCase": "Use this tool when an agent needs to translate entire documents from one language to another while maintaining the original document formatting and layout, such as translating user manuals, reports, or marketing materials for multilingual audiences. It supports multiple common markup formats and preserves structural elements.", + "limitations": "It cannot handle translation of embedded images or non-textual elements within documents. Complex formatting beyond supported markup may not be perfectly preserved. Accuracy depends on supported language pairs and underlying translation engine capabilities.", + "examples": [ + "Translate an English product manual in HTML format to Spanish while preserving all formatting.", + "Convert a French markdown report to English, keeping markdown structure intact.", + "Translate plain text legal document from German to English without formatting concerns." + ] + }, + "tags": [ + "translation", + "document", + "language", + "formatting", + "multilingual", + "rendering", + "localization" + ], + "examples": [ + { + "inputJson": "{\"documentContent\":\"

Welcome

This is a user guide.

\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"es\",\"formatType\":\"html\",\"preserveFormatting\":true}", + "description": "Translate an English HTML user guide to Spanish preserving HTML tags." + }, + { + "inputJson": "{\"documentContent\":\"# Rapport\\nCeci est un rapport important.\",\"sourceLanguage\":\"fr\",\"targetLanguage\":\"en\",\"formatType\":\"markdown\",\"preserveFormatting\":true}", + "description": "Translate a French markdown report to English keeping markdown formatting." + }, + { + "inputJson": "{\"documentContent\":\"Financial statement for Q1.\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"de\",\"formatType\":\"plain\",\"preserveFormatting\":false}", + "description": "Translate a plain text financial statement from English to German without formatting." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Document", + "context": null + } + }, + { + "name": "translation.renderFile", + "description": "This tool accepts a file input containing text content in a source language, processes it by translating the text to a specified target language while preserving the original file format and layout, and outputs a new file in the same format with the translated text rendered appropriately.", + "category": "translation", + "parameters": [ + { + "name": "inputFile", + "type": "string", + "description": "The path or content of the source file to be translated; supports text-based file formats like DOCX, HTML, TXT, and PDF.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code (e.g., 'en', 'fr') of the original text in the input file.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The target language code into which the file's text content should be translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "preserveFormatting", + "type": "boolean", + "description": "Flag indicating whether to preserve the original file's formatting and layout in the output file.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired output file format; if not provided, defaults to the input file's format.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the translated file's content or a path/URL to the rendered translated file in the specified format." + }, + "aiAgent": { + "useCase": "Use this tool when you need to translate the content of documents and maintain the original formatting and file type for purposes such as business reports, manuals, or websites. It is ideal for scenarios requiring quick conversion of localized documents that retain professional appearance and layout.", + "limitations": "Does not support scanned images or purely image-based PDFs without OCR preprocessing. Complex layouts with embedded multimedia may not be perfectly preserved.", + "examples": [ + "Translate a DOCX user manual from English to Spanish preserving all formatting.", + "Render a translated HTML web page from French to German maintaining the original tags and styles.", + "Convert a PDF report from Chinese to English outputting a PDF with translated text." + ] + }, + "tags": [ + "translation", + "file-processing", + "document", + "multilingual", + "rendering", + "format-preservation" + ], + "examples": [ + { + "inputJson": "{\"inputFile\":\"/documents/manual_en.docx\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"es\",\"preserveFormatting\":true}", + "description": "Translate an English DOCX manual to Spanish while preserving its original formatting." + }, + { + "inputJson": "{\"inputFile\":\"

Bonjour monde

\",\"sourceLanguage\":\"fr\",\"targetLanguage\":\"de\",\"outputFormat\":\"html\"}", + "description": "Render a French HTML snippet translated to German preserving HTML structure." + }, + { + "inputJson": "{\"inputFile\":\"/reports/annual_cn.pdf\",\"sourceLanguage\":\"zh\",\"targetLanguage\":\"en\",\"preserveFormatting\":true}", + "description": "Render translated English version of a Chinese PDF annual report preserving formatting." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "File", + "context": null + } + }, + { + "name": "translation.composeReport", + "description": "This tool accepts a source language text and parameters to translate and compose a coherent, structured report in the target language. It processes the input by translating the content, organizing it into typical report sections, and outputs a formatted report text suitable for professional or formal use.", + "category": "translation", + "parameters": [ + { + "name": "sourceText", + "type": "string", + "description": "The original text content of the report in the source language to be translated and composed.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code (e.g., 'en', 'fr') representing the language of the sourceText.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The language code for the language into which the report should be translated and composed.", + "required": true, + "defaultValue": "" + }, + { + "name": "reportType", + "type": "string", + "description": "The type of report to compose (e.g., 'business', 'technical', 'financial'). This influences tone and structure.", + "required": false, + "defaultValue": "business" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Whether to include an executive summary section in the composed report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "Whether to include a recommendations section in the composed report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "formatStyle", + "type": "string", + "description": "Preferred formatting style for the output report, such as 'formal' or 'concise'.", + "required": false, + "defaultValue": "formal" + } + ], + "returns": { + "type": "object", + "description": "An object containing the fully translated and composed report as a formatted text string, structured into typical report sections." + }, + "aiAgent": { + "useCase": "Use this tool when you need to translate a textual report from one language to another while also restructuring and formatting it into a coherent, professional report format suitable for business, technical, or other formal domains. Ideal for agents tasked with multilingual reporting or document localization that requires restructuring beyond simple translation.", + "limitations": "This tool does not perform advanced content generation beyond reorganization and translation; it requires a fully formed source report text input. It cannot handle multimedia content or generate original data or analysis. Translation quality depends on the engine used and may require human review.", + "examples": [ + "Translate a quarterly business performance report from English to Spanish, preserving professional structure and including summary and recommendations sections.", + "Convert a technical report written in German into formal French with concise formatting and without recommendations.", + "Recompose a financial report from Japanese into English, emphasizing clarity and a formal tone." + ] + }, + "tags": [ + "translation", + "report", + "document", + "business", + "technical", + "multilingual", + "composition", + "formal" + ], + "examples": [ + { + "inputJson": "{\"sourceText\":\"This quarter we increased sales by 15%, exceeding targets. Operational costs remained stable.\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"es\",\"reportType\":\"business\",\"includeSummary\":true,\"includeRecommendations\":true,\"formatStyle\":\"formal\"}", + "description": "Translate a brief business report from English to Spanish, including summary and recommendations." + }, + { + "inputJson": "{\"sourceText\":\"Die neue Softwarearchitektur verbessert die Systemstabilität und Skalierbarkeit deutlich.\",\"sourceLanguage\":\"de\",\"targetLanguage\":\"fr\",\"reportType\":\"technical\",\"includeSummary\":false,\"includeRecommendations\":false,\"formatStyle\":\"concise\"}", + "description": "Convert a technical report from German to French, concise style without summary or recommendations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Report", + "context": null + } + }, + { + "name": "translation.draftDocument", + "description": "This tool accepts a source document text and translates it into a specified target language, producing a draft translated document. It supports various document formats such as plain text, markdown, or HTML, preserving basic formatting where possible. The output is a translated text draft suitable for review or editing.", + "category": "translation", + "parameters": [ + { + "name": "sourceText", + "type": "string", + "description": "The original text content of the document to be translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code or name of the source text. If not provided, the tool will attempt automatic detection.", + "required": false, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The language code or name for the document translation output.", + "required": true, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "The format of the document, e.g., plain, markdown, html. Helps preserve formatting in the translation.", + "required": false, + "defaultValue": "plain" + }, + { + "name": "preserveFormatting", + "type": "boolean", + "description": "Whether to preserve the source document's formatting tags in the output where applicable.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the translated document draft text and metadata, including target language and format." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to produce an initial translated draft of a document from one language to another, preserving basic formatting. Applicable in workflows involving multilingual document creation, review, or localization. It helps generate a first-pass translation for further human or automated refinement.", + "limitations": "The tool produces draft translations which may contain inaccuracies or stylistic issues; it doesn't handle complex formatting beyond basic markdown or HTML tags. It does not perform final proofreading or cultural localization.", + "examples": [ + "Translate a product manual from English to Spanish in markdown format preserving headings and lists.", + "Generate a draft translation of a newsletter from French to German with minimal formatting.", + "Translate plain text email content from Japanese to English without formatting preservation." + ] + }, + "tags": [ + "translation", + "document", + "drafting", + "multilingual", + "localization" + ], + "examples": [ + { + "inputJson": "{\"sourceText\":\"# Introduction\\nWelcome to our product.\\nHere are some features:\n- Easy to use\n- Efficient\\nThank you!\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"es\",\"format\":\"markdown\",\"preserveFormatting\":true}", + "description": "Translate an English markdown product introduction document to Spanish preserving markdown formatting." + }, + { + "inputJson": "{\"sourceText\":\"Bonjour, voici la newsletter de ce mois.\nMerci de votre lecture.\",\"sourceLanguage\":\"fr\",\"targetLanguage\":\"de\",\"format\":\"plain\",\"preserveFormatting\":false}", + "description": "Translate a plain text French newsletter to German without formatting preservation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Document", + "context": null + } + }, + { + "name": "translation.buildServer", + "description": "This tool provisions and configures a server optimized for hosting translation services. It accepts input parameters specifying server resources, preferred cloud provider, target languages, and deployment preferences. It then automates the building of an infrastructure server environment tailored for translation workloads, outputting server details including IP, installed services, and access credentials.", + "category": "translation", + "parameters": [ + { + "name": "cloudProvider", + "type": "string", + "description": "The cloud service provider where the translation server will be deployed (e.g., AWS, Azure, GCP).", + "required": true, + "defaultValue": "" + }, + { + "name": "serverType", + "type": "string", + "description": "The type or tier of server instance to use (e.g., t2.medium, n1-standard-4).", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguages", + "type": "array", + "description": "List of languages the server should support for translation (e.g., ['en', 'fr', 'es']).", + "required": true, + "defaultValue": "" + }, + { + "name": "deploymentRegion", + "type": "string", + "description": "Preferred geographic region for server deployment (e.g., us-east-1, europe-west-2).", + "required": false, + "defaultValue": "us-east-1" + }, + { + "name": "enableAutoScaling", + "type": "boolean", + "description": "Flag to enable automatic scaling of server resources based on load.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the server's public IP address, installed translation service details, access credentials (secured), and status of deployment." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to deploy a dedicated server environment that supports machine translation workflows, including configuring necessary services and resources automatically in a specified cloud environment. It helps streamline setting up infrastructure for translation tasks.", + "limitations": "Does not handle ongoing server maintenance or translations themselves; focuses solely on server provisioning and initial configuration. Requires valid cloud provider credentials and permissions to deploy resources.", + "examples": [ + "Deploy a translation server in AWS to support English, French, and Spanish languages with auto-scaling enabled.", + "Build a GCP server instance optimized for English and Japanese translation services in the asia-east1 region.", + "Create an Azure-based server for multilingual translation supporting English and German without auto-scaling." + ] + }, + "tags": [ + "translation", + "infrastructure", + "cloud", + "server provisioning", + "automation", + "deployment" + ], + "examples": [ + { + "inputJson": "{\"cloudProvider\":\"AWS\",\"serverType\":\"t3.medium\",\"targetLanguages\":[\"en\",\"fr\",\"es\"],\"deploymentRegion\":\"us-east-1\",\"enableAutoScaling\":true}", + "description": "Deploy a medium-tier AWS server in US East with English, French, and Spanish support and auto-scaling enabled." + }, + { + "inputJson": "{\"cloudProvider\":\"GCP\",\"serverType\":\"n1-standard-4\",\"targetLanguages\":[\"en\",\"ja\"],\"deploymentRegion\":\"asia-east1\",\"enableAutoScaling\":false}", + "description": "Build a GCP server in Asia East region for English and Japanese translations without auto-scaling." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Server", + "context": null + } + }, + { + "name": "translation.buildCommit", + "description": "Generates a translation commit message for code changes by translating the original commit message and relevant metadata into a specified target language. Accepts the original commit message text and language details, processes the translation, and outputs a structured commit message in the target language suitable for version control.", + "category": "translation", + "parameters": [ + { + "name": "originalMessage", + "type": "string", + "description": "The original commit message text to be translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code of the original commit message (e.g., 'en' for English).", + "required": true, + "defaultValue": "en" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The language code to translate the commit message into (e.g., 'fr' for French).", + "required": true, + "defaultValue": "" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include commit metadata such as author and date in the output commit message.", + "required": false, + "defaultValue": "true" + }, + { + "name": "metadata", + "type": "object", + "description": "An object containing optional metadata fields like author, date, and commit hash to include in the translated commit message.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the translated commit message as 'translatedMessage' and optionally included metadata fields." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate localized commit messages from existing commits for multilingual project repositories or communication with developers speaking different languages. It automates accurate translation of commit messages preserving context and optionally adding commit metadata.", + "limitations": "This tool does not generate or modify the actual code commits; it only translates and formats the commit messages. It requires correct language codes and assumes the original message is well-formed. Cultural or idiomatic expressions in commit messages may not perfectly translate.", + "examples": [ + "Translate original English commit message 'Fix bug in user login flow' to Spanish commit message including author metadata.", + "Generate a French translation of a German original commit message without metadata inclusion.", + "Build a translated commit message from Japanese to English with date and commit hash included." + ] + }, + "tags": [ + "translation", + "commit", + "localization", + "version control", + "developer tools" + ], + "examples": [ + { + "inputJson": "{\"originalMessage\":\"Fix bug in user login flow\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"es\",\"includeMetadata\":true,\"metadata\":{\"author\":\"Jane Doe\",\"date\":\"2024-06-01\"}}", + "description": "Translate an English commit message to Spanish including author and date metadata." + }, + { + "inputJson": "{\"originalMessage\":\"Korrigieren Fehler beim Benutzerlogin\",\"sourceLanguage\":\"de\",\"targetLanguage\":\"fr\",\"includeMetadata\":false}", + "description": "Translate a German commit message to French without metadata." + }, + { + "inputJson": "{\"originalMessage\":\"ユーザーログインのバグを修正しました\",\"sourceLanguage\":\"ja\",\"targetLanguage\":\"en\",\"includeMetadata\":true,\"metadata\":{\"author\":\"Taro Yamada\",\"commitHash\":\"abc123\"}}", + "description": "Translate a Japanese commit message to English including author and commit hash metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Commit", + "context": null + } + }, + { + "name": "translation.buildAPI", + "description": "Generates a customized translation API code scaffold based on specified source and target languages, preferred frameworks, and optional features. Accepts language pairs and configuration parameters, then outputs ready-to-deploy API code enabling text translation services.", + "category": "translation", + "parameters": [ + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code of the input text to be translated (e.g., 'en' for English).", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The language code for the desired translation output (e.g., 'fr' for French).", + "required": true, + "defaultValue": "" + }, + { + "name": "framework", + "type": "string", + "description": "The backend framework for which the API code should be generated (e.g., 'Express', 'Flask').", + "required": false, + "defaultValue": "Express" + }, + { + "name": "includeAuth", + "type": "boolean", + "description": "Whether to include authentication middleware code for securing the API endpoints.", + "required": false, + "defaultValue": "false" + }, + { + "name": "translationProvider", + "type": "string", + "description": "The translation engine or external API to integrate (e.g., 'GoogleTranslate', 'DeepL').", + "required": false, + "defaultValue": "GoogleTranslate" + }, + { + "name": "enableLogging", + "type": "boolean", + "description": "Flag to include request and error logging code in the API.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing source code strings constituting a ready-to-run translation API server, including configuration and sample usage." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically generate boilerplate code for a translation service API tailored to specific source and target languages and technology stacks, facilitating rapid deployment of translation APIs without manual coding.", + "limitations": "This tool generates scaffolding and integration code but does not implement custom translation models. It depends on existing translation provider APIs and does not handle runtime deployment or environment configuration.", + "examples": [ + "Generate an Express.js API to translate from English to French with authentication and DeepL integration.", + "Build a Flask-based translation API for Spanish to German without auth and using Google Translate.", + "Create a Node.js translation service API for Chinese to Japanese that includes detailed logging." + ] + }, + "tags": [ + "translation", + "API", + "code-generation", + "backend", + "framework", + "localization", + "automation" + ], + "examples": [ + { + "inputJson": "{\"sourceLanguage\":\"en\",\"targetLanguage\":\"fr\",\"framework\":\"Express\",\"includeAuth\":true,\"translationProvider\":\"DeepL\",\"enableLogging\":true}", + "description": "Builds an Express.js translation API server code scaffold translating English to French with authentication and logs enabled, integrated with DeepL." + }, + { + "inputJson": "{\"sourceLanguage\":\"es\",\"targetLanguage\":\"de\",\"framework\":\"Flask\",\"includeAuth\":false,\"translationProvider\":\"GoogleTranslate\",\"enableLogging\":false}", + "description": "Generates Flask-based translation API code from Spanish to German, no authentication included, using Google Translate without logging." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "API", + "context": null + } + }, + { + "name": "translation.generateEvent", + "description": "Generates a structured analytics event object based on natural language description provided in any language and translates relevant textual content into a target language. Accepts event details and target language, performs language detection and translation of event fields, outputs a ready-to-use event JSON with translated content.", + "category": "translation", + "parameters": [ + { + "name": "eventDescription", + "type": "string", + "description": "Natural language description of the event to generate, including attributes and context.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "Language code of the source text if known; if empty, language detection is performed.", + "required": false, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "Language code into which the event textual fields should be translated. Required to produce translation.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeTimestamp", + "type": "boolean", + "description": "Whether to automatically add the current timestamp to the event data.", + "required": false, + "defaultValue": "true" + }, + { + "name": "eventType", + "type": "string", + "description": "Optional event type to categorize the event, e.g., 'page_view', 'purchase'.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing the analytics event with translated textual fields, including optional timestamp and event type if provided." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create a structured analytics event JSON from a natural language description that may be in any language and produce the event with textual elements translated into a specific target language, facilitating multilingual analytics tracking.", + "limitations": "Cannot verify or infer precise event attribute semantics beyond provided description; relies on input clarity. Does not handle event sending or ingestion, only event object generation and translation.", + "examples": [ + "Generate an analytics event for user clicking the 'submit' button, translating descriptions into Spanish.", + "Create a purchase event with details described in Japanese, output event fields in English.", + "Produce a page view event from a French text description, target language is German." + ] + }, + "tags": [ + "translation", + "analytics", + "event generation", + "multilingual", + "input processing" + ], + "examples": [ + { + "inputJson": "{\"eventDescription\":\"User clicked the 'Buy Now' button on the product page.\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"es\",\"includeTimestamp\":true,\"eventType\":\"click\"}", + "description": "Generate a click event from an English description, translate to Spanish, include timestamp and event type." + }, + { + "inputJson": "{\"eventDescription\":\"ユーザーがログインしました\",\"sourceLanguage\":\"ja\",\"targetLanguage\":\"en\",\"includeTimestamp\":false,\"eventType\":\"login\"}", + "description": "Generate a login event from Japanese description, translate to English, exclude timestamp." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Event", + "context": null + } + }, + { + "name": "translation.generateMetric", + "description": "Generates translation quality metrics from source and translated texts. Accepts source text, translated text, and optional reference translations to calculate metrics such as BLEU, TER, and METEOR. Outputs a comprehensive report of translation quality scores for analysis and comparison.", + "category": "translation", + "parameters": [ + { + "name": "sourceText", + "type": "string", + "description": "The original source text that was translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "translatedText", + "type": "string", + "description": "The translated text output to be evaluated.", + "required": true, + "defaultValue": "" + }, + { + "name": "referenceTexts", + "type": "array", + "description": "An array of reference translations to compare against for metric calculations (optional but improves accuracy).", + "required": false, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "List of quality metrics to generate, e.g. ['BLEU','TER','METEOR']. Defaults to ['BLEU','TER','METEOR'].", + "required": false, + "defaultValue": "[\"BLEU\",\"TER\",\"METEOR\"]" + } + ], + "returns": { + "type": "object", + "description": "An object containing each requested metric's score, along with a summary interpretation of the translation quality." + }, + "aiAgent": { + "useCase": "Use this tool when needing to quantitatively evaluate the quality of a translated text against the source and optionally reference translations. Helpful for machine translation evaluation, comparing models, or assessing professional translation outputs.", + "limitations": "Does not perform the translation itself. Metric scores are only as reliable as reference texts and may not capture all nuances of translation quality.", + "examples": [ + "Generate BLEU and TER scores for a machine-translated legal document compared to its source.", + "Evaluate multiple candidate translations against the source and references to determine the best version.", + "Produce a quality report for translations in an automated translation pipeline." + ] + }, + "tags": [ + "translation", + "metrics", + "quality evaluation", + "machine translation", + "BLEU", + "TER", + "METEOR" + ], + "examples": [ + { + "inputJson": "{\"sourceText\":\"Hello world.\",\"translatedText\":\"Hola mundo.\",\"referenceTexts\":[\"Hola mundo.\"],\"metrics\":[\"BLEU\",\"TER\"]}", + "description": "Calculate BLEU and TER scores for a simple English to Spanish translation." + }, + { + "inputJson": "{\"sourceText\":\"The quick brown fox jumps over the lazy dog.\",\"translatedText\":\"Le renard brun rapide saute par-dessus le chien paresseux.\",\"metrics\":[\"METEOR\"]}", + "description": "Evaluate METEOR score of a French translation without additional references." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Metric", + "context": null + } + }, + { + "name": "translation.generateSummary", + "description": "Generates a concise summary of a provided document text written in any language. Accepts document content and optionally detects the language or accepts a specified language code. Produces a brief summary in the same language or translated to a target language if specified.", + "category": "translation", + "parameters": [ + { + "name": "documentText", + "type": "string", + "description": "The full text of the document to be summarized.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "ISO code of the document's language if known; if empty, the tool will auto-detect it.", + "required": false, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "ISO code of the language for the summary output. If empty or matches source, summary is in original language.", + "required": false, + "defaultValue": "" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum length of the summary in characters. If zero or omitted, use default length.", + "required": false, + "defaultValue": "500" + } + ], + "returns": { + "type": "object", + "description": "An object containing the summary text and the language code of the summary." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to provide a brief overview of lengthy documents in any language, optionally translating the summary to a target language for user comprehension. It is helpful in multilingual support, content digestion, and report synthesis scenarios.", + "limitations": "The tool may produce less accurate summaries for very short or highly technical texts. It might not capture all nuances when translating the summary to a different language. It does not perform original translation of the full document, only the summary output if requested.", + "examples": [ + "Summarize a long French legal document into a short French summary.", + "Generate a summary of a Spanish medical article and translate the summary into English.", + "Provide a concise summary of a Japanese news article in the original Japanese." + ] + }, + "tags": [ + "translation", + "summary", + "document", + "multilingual", + "text-processing", + "natural-language-processing" + ], + "examples": [ + { + "inputJson": "{\"documentText\":\"Le rapport annuel détaille les performances financières et les initiatives stratégiques de l'entreprise au cours de l'année passée, mettant en lumière la croissance soutenue et les défis rencontrés.\",\"sourceLanguage\":\"fr\",\"targetLanguage\":\"fr\",\"maxSummaryLength\":200}", + "description": "Summarize a French business report in French with a max length of 200 characters." + }, + { + "inputJson": "{\"documentText\":\"Este estudio analiza los efectos de la contaminación ambiental en la salud pública y propone medidas para mitigar sus impactos.\",\"sourceLanguage\":\"es\",\"targetLanguage\":\"en\",\"maxSummaryLength\":300}", + "description": "Summarize a Spanish environmental study and produce the summary in English." + }, + { + "inputJson": "{\"documentText\":\"東京の最新の観光地情報をまとめた記事で、訪問者に便利なアドバイスや見どころを紹介しています。\",\"sourceLanguage\":\"ja\",\"targetLanguage\":\"\",\"maxSummaryLength\":150}", + "description": "Summarize a Japanese travel article in Japanese with a shorter summary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Summary", + "context": null + } + }, + { + "name": "translation.generateCSV", + "description": "Generates a CSV file containing translations of input texts from a source language into one or more target languages. Accepts an array of text entries and language codes, translates each text entry into specified target languages, and outputs a CSV string with the original texts and their translations organized in columns.", + "category": "translation", + "parameters": [ + { + "name": "texts", + "type": "array", + "description": "An array of strings representing the text entries to be translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code of the source texts (e.g., 'en' for English).", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguages", + "type": "array", + "description": "An array of language codes to translate the texts into (e.g., ['fr','de']).", + "required": true, + "defaultValue": "" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include a header row in the CSV with language labels.", + "required": false, + "defaultValue": "true" + }, + { + "name": "delimiter", + "type": "string", + "description": "The delimiter character to separate CSV fields (default is comma).", + "required": false, + "defaultValue": "," + } + ], + "returns": { + "type": "object", + "description": "An object containing a 'csvData' string property with the translated texts in CSV format." + }, + "aiAgent": { + "useCase": "Use this tool when needing to generate CSV files containing multiple translations of input texts across specified target languages for localization, analysis, or batch export purposes. It is ideal when structured CSV output is needed for integration with spreadsheets or translation management systems.", + "limitations": "The tool does not perform the actual text translation itself; it requires integration with a translation service or calling agent to provide translated content in advance or must be combined with a supported translation API. It also does not support streaming large data or complex CSV formatting beyond delimiter and headers.", + "examples": [ + "Translate a list of English product descriptions into French and German and generate a CSV file for localization upload.", + "Generate a CSV of user interface strings originally in Spanish translated into English and Japanese for app internationalization.", + "Create a CSV for survey questions translated from English into multiple target languages with language-code headers." + ] + }, + "tags": [ + "translation", + "csv", + "multilanguage", + "localization", + "export" + ], + "examples": [ + { + "inputJson": "{\"texts\":[\"Hello\",\"Goodbye\"],\"sourceLanguage\":\"en\",\"targetLanguages\":[\"fr\",\"de\"],\"includeHeaders\":true,\"delimiter\":\",\"}", + "description": "Translate English greetings into French and German and generate CSV with headers." + }, + { + "inputJson": "{\"texts\":[\"Bienvenue\",\"Merci\"],\"sourceLanguage\":\"fr\",\"targetLanguages\":[\"en\"],\"includeHeaders\":false,\"delimiter\":\";\"}", + "description": "Translate French phrases into English and generate CSV without headers using semicolon delimiter." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "CSV", + "context": null + } + }, + { + "name": "translation.createParagraph", + "description": "This tool accepts a short text input and generates a translated paragraph in the target language, optionally localizing style and tone. It processes the given source text, translates it while keeping meaning and context, and outputs a coherent, fluent paragraph suitable for professional or casual use.", + "category": "translation", + "parameters": [ + { + "name": "sourceText", + "type": "string", + "description": "The original text to translate into a paragraph.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code of the source text (e.g., 'en' for English).", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The language code to translate the text into (e.g., 'fr' for French).", + "required": true, + "defaultValue": "" + }, + { + "name": "formality", + "type": "string", + "description": "Tone of the translated paragraph, such as 'formal', 'informal', or 'neutral'.", + "required": false, + "defaultValue": "neutral" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length (in characters) of the generated paragraph.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing the translated paragraph text in the target language." + }, + "aiAgent": { + "useCase": "Use this tool when a coherent, context-aware translated paragraph is needed from a short source text, such as for document localization, marketing content adaptation, or user communication in another language. It is especially useful when tone and style in the target language should be controlled or adjusted.", + "limitations": "The tool cannot translate multiple paragraphs at once or handle extremely long texts efficiently. It may not perfectly preserve idiomatic or cultural nuances beyond basic tone adjustments. It does not generate paragraphs from scratch without source text.", + "examples": [ + "Translate a short product description from English to French with a formal tone.", + "Create an informally toned Spanish paragraph from an English customer support message.", + "Generate a neutral tone Japanese paragraph from a German announcement." + ] + }, + "tags": [ + "translation", + "language", + "paragraph", + "localization", + "multilingual", + "text-generation" + ], + "examples": [ + { + "inputJson": "{\"sourceText\":\"Our company values innovation and customer satisfaction.\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"fr\",\"formality\":\"formal\",\"maxLength\":500}", + "description": "Translate a short business statement from English to formal French." + }, + { + "inputJson": "{\"sourceText\":\"Please remember to submit your report by Friday.\",\"sourceLanguage\":\"en\",\"targetLanguage\":\"es\",\"formality\":\"informal\",\"maxLength\":300}", + "description": "Create an informally toned reminder message in Spanish from English." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Paragraph", + "context": null + } + }, + { + "name": "translation.createEvent", + "description": "Creates a structured translation event record for analytics purposes. Accepts details about source text, target language, translation quality metrics, translator info, and timestamps. Processes inputs into a standardized event object that can be used for tracking and analyzing translation activities.", + "category": "translation", + "parameters": [ + { + "name": "sourceText", + "type": "string", + "description": "The original text content before translation.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The language code (ISO 639-1) into which the text is translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "translatorId", + "type": "string", + "description": "Identifier for the translator or translation system performing the translation.", + "required": false, + "defaultValue": "" + }, + { + "name": "translationQualityScore", + "type": "number", + "description": "Numeric score indicating the quality of the translation, e.g., confidence or human rating, from 0 to 1.", + "required": false, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted date-time string marking when the translation event occurred.", + "required": false, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code (ISO 639-1) of the source text. Defaults to detected language if omitted.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A translation event object containing the provided inputs along with a generated unique event ID and a standardized timestamp." + }, + "aiAgent": { + "useCase": "Use this tool to log or generate standardized events representing individual translation actions or transactions, such as when recording translation activities in analytics platforms or monitoring translation throughput and quality. Useful for tracking translator performance, system translations, and quality assessments over time.", + "limitations": "This tool does not perform any translation itself nor evaluate translation quality beyond storing a provided quality score. It only creates event records; further analytics or aggregation must be done separately.", + "examples": [ + "Create a translation event for a text translated from English to French with a quality score of 0.95 by translator ID 'translator123'.", + "Generate an event logging a system-generated translation from Spanish to German without a quality score.", + "Record a translation event for a manual translation with source text, target language, and timestamp provided." + ] + }, + "tags": [ + "translation", + "analytics", + "event", + "logging", + "quality", + "language", + "tracking" + ], + "examples": [ + { + "inputJson": "{\"sourceText\":\"Hello world\",\"targetLanguage\":\"fr\",\"translatorId\":\"translator123\",\"translationQualityScore\":0.95,\"timestamp\":\"2024-06-01T12:00:00Z\",\"sourceLanguage\":\"en\"}", + "description": "Event representing a high-confidence manual translation from English to French." + }, + { + "inputJson": "{\"sourceText\":\"Hola mundo\",\"targetLanguage\":\"de\",\"timestamp\":\"2024-06-01T13:00:00Z\"}", + "description": "Event logging a system translation from Spanish to German without a quality score or translator ID." + }, + { + "inputJson": "{\"sourceText\":\"Good morning\",\"targetLanguage\":\"es\",\"translatorId\":\"translator456\"}", + "description": "Event for a manual translation from unknown source language with translator ID but no timestamp or quality score." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Event", + "context": null + } + }, + { + "name": "translation.createContainer", + "description": "Creates a configurable translation container that bundles multiple translation engines and language preferences into a reusable infrastructure component. Accepts configuration parameters specifying supported languages, preferred translation services, fallback options, and resource limits. Outputs a container object that manages translation requests with consistent behavior across deployments.", + "category": "translation", + "parameters": [ + { + "name": "containerName", + "type": "string", + "description": "A unique name identifier for the translation container to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "supportedLanguages", + "type": "array", + "description": "List of language codes (e.g., ['en','fr','es']) that the container will support for translation.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "preferredEngines", + "type": "array", + "description": "An ordered list of translation engine identifiers to use, defining failover priority.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "fallbackLanguage", + "type": "string", + "description": "Default language code to fallback on if translation to requested language is unavailable.", + "required": false, + "defaultValue": "en" + }, + { + "name": "maxRequestsPerMinute", + "type": "number", + "description": "Rate limit controlling how many translation requests the container can process per minute.", + "required": false, + "defaultValue": "60" + }, + { + "name": "enableCaching", + "type": "boolean", + "description": "Flag to enable or disable caching of recent translations for performance.", + "required": false, + "defaultValue": "true" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value pairs for tagging or annotating the container with additional info.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created translation container with configuration details, unique ID, creation timestamp, and endpoint information for sending translation requests." + }, + "aiAgent": { + "useCase": "Use this tool when you need to establish a reusable, configurable translation service container that abstracts multiple translation engines and language settings for streamlined deployment and management. Ideal for applications requiring consistent translation infrastructure across environments with customization options.", + "limitations": "This tool does not perform actual text translation itself; it only creates the container infrastructure that orchestrates translation engines. It also does not manage translation engine credentials or networks.", + "examples": [ + "Create a translation container supporting English, French, and Spanish using Google and Microsoft translators with caching enabled.", + "Set up a container with a high request rate limit and fallback to English when a target language is unsupported.", + "Configure a container tagged for medical documentation translation with preferred engines and metadata." + ] + }, + "tags": [ + "translation", + "infrastructure", + "container", + "localization", + "multi-engine", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"containerName\":\"globalTranslator\",\"supportedLanguages\":[\"en\",\"fr\",\"es\"],\"preferredEngines\":[\"googleTranslate\",\"microsoftTranslator\"],\"fallbackLanguage\":\"en\",\"maxRequestsPerMinute\":120,\"enableCaching\":true}", + "description": "Creates a container supporting English, French, Spanish with favored Google and Microsoft engines, 120 requests/min rate limit and caching." + }, + { + "inputJson": "{\"containerName\":\"medDocTranslator\",\"supportedLanguages\":[\"en\",\"de\"],\"preferredEngines\":[\"customMedicalEngine\"],\"enableCaching\":false,\"metadata\":{\"domain\":\"medical\",\"compliance\":\"HIPAA\"}}", + "description": "Creates a specialized medical translation container for English-German with a custom engine, caching disabled, and compliance tags." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Container", + "context": null + } + }, + { + "name": "translation.createOrder", + "description": "This tool accepts a translation order request including source text, source language, target language(s), and optional preferences. It processes these inputs to create a structured translation order object for downstream translation workflows or vendor management. The output is a detailed order summary including unique order ID, languages, word count, and delivery preferences.", + "category": "translation", + "parameters": [ + { + "name": "sourceText", + "type": "string", + "description": "The original text that needs to be translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The ISO code or name of the original language of the source text.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguages", + "type": "array", + "description": "Array of ISO codes or names for the target languages to translate into.", + "required": true, + "defaultValue": "" + }, + { + "name": "deadline", + "type": "string", + "description": "Optional deadline for the translation delivery in ISO 8601 date/time format.", + "required": false, + "defaultValue": "" + }, + { + "name": "priorityLevel", + "type": "string", + "description": "Priority level of the order - e.g., 'normal', 'high', or 'urgent'.", + "required": false, + "defaultValue": "normal" + }, + { + "name": "specialInstructions", + "type": "string", + "description": "Optional special instructions or formatting requirements for translators.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured translation order summary including a unique order ID, source and target languages, word count of the source text, priority, deadline, special instructions, and creation timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when generating structured translation orders from raw user requests or interfaces. It standardizes order information to pass to translation teams, APIs, or platforms, ensuring necessary details like source/target languages and deadlines are specified clearly for processing.", + "limitations": "This tool does not perform translation itself, nor does it handle payment or vendor selection. It only structures order data from input parameters.", + "examples": [ + "Create a translation order from English to Spanish and French with high priority and a deadline next week.", + "Generate a standard translation order for a German document to be translated into English without special instructions.", + "Make an urgent translation order from Japanese to English and Korean with specific formatting instructions." + ] + }, + "tags": [ + "translation", + "order", + "creation", + "language", + "workflow", + "localization" + ], + "examples": [ + { + "inputJson": "{\"sourceText\":\"Welcome to our website.\",\"sourceLanguage\":\"en\",\"targetLanguages\":[\"es\",\"fr\"],\"deadline\":\"2024-07-05T12:00:00Z\",\"priorityLevel\":\"high\",\"specialInstructions\":\"Please maintain brand terminology.\"}", + "description": "Create a translation order from English to Spanish and French with a high priority and a fixed delivery deadline, including special instructions." + }, + { + "inputJson": "{\"sourceText\":\"Dokument zur Geschäftsleitung.\",\"sourceLanguage\":\"de\",\"targetLanguages\":[\"en\"],\"priorityLevel\":\"normal\"}", + "description": "Generate a standard translation order from German to English without a deadline or special instructions." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Order", + "context": null + } + }, + { + "name": "translation.createNotification", + "description": "This tool generates a notification message translated into a specified target language. It accepts input text along with the target language code and optional notification context to tailor the translation style. The output is a JSON object containing the translated notification message ready for use in multilingual communication.", + "category": "translation", + "parameters": [ + { + "name": "sourceText", + "type": "string", + "description": "The original notification text to be translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The BCP-47 language code indicating the language into which the text should be translated (e.g., 'en', 'es', 'fr').", + "required": true, + "defaultValue": "" + }, + { + "name": "context", + "type": "string", + "description": "Optional parameter to specify the notification context such as 'security', 'reminder', or 'error' to adapt the tone and terminology of the translation.", + "required": false, + "defaultValue": "" + }, + { + "name": "formalTone", + "type": "boolean", + "description": "Optional flag to indicate whether the translated notification should use a formal tone (true) or informal tone (false).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the translated notification text suitable for user display in the target language." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate notification messages for users in different languages, adapting style and tone based on context and language preferences. It is ideal for scenarios requiring localized communication such as alerts, reminders, or status updates in multilingual applications.", + "limitations": "This tool does not generate original notification content; it only translates existing text. It may not handle idiomatic expressions or highly technical jargon perfectly and relies on accurate input language codes and context for best results.", + "examples": [ + "Translate a reminder notification 'Your session will expire soon' into French with a formal tone.", + "Generate a security alert notification in Spanish using informal tone based on the text 'Unusual login detected from your account.'", + "Create an error notification translated into German without specifying context or tone." + ] + }, + "tags": [ + "translation", + "notification", + "multilingual", + "localization", + "communication" + ], + "examples": [ + { + "inputJson": "{\"sourceText\":\"Your session will expire soon.\",\"targetLanguage\":\"fr\",\"context\":\"reminder\",\"formalTone\":true}", + "description": "Translates a session expiration reminder into French using formal tone." + }, + { + "inputJson": "{\"sourceText\":\"Unusual login detected from your account.\",\"targetLanguage\":\"es\",\"context\":\"security\",\"formalTone\":false}", + "description": "Generates a Spanish security alert notification with an informal tone." + }, + { + "inputJson": "{\"sourceText\":\"Error processing your request.\",\"targetLanguage\":\"de\"}", + "description": "Creates a German error notification with default tone and no specific context." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Notification", + "context": null + } + }, + { + "name": "translation.createKey", + "description": "Generates a secure cryptographic key for use in translation encryption or decryption processes. Accepts parameters to specify key type, length, and usage purpose, then produces a key string output suitable for securing translated data exchanges or storage.", + "category": "translation", + "parameters": [ + { + "name": "keyType", + "type": "string", + "description": "Type of cryptographic key to generate, e.g., 'AES' or 'RSA'.", + "required": true, + "defaultValue": "" + }, + { + "name": "keyLength", + "type": "number", + "description": "Length of the key in bits, e.g., 256 for AES-256.", + "required": true, + "defaultValue": "" + }, + { + "name": "usage", + "type": "string", + "description": "Intended usage of the key such as 'encryption', 'decryption', or 'both'.", + "required": false, + "defaultValue": "both" + }, + { + "name": "exportFormat", + "type": "string", + "description": "Format for exported key output, such as 'base64' or 'hex'.", + "required": false, + "defaultValue": "base64" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated cryptographic key string and metadata including key type, length, usage, and export format." + }, + "aiAgent": { + "useCase": "Use this tool when the agent requires a secure cryptographic key to encrypt or decrypt translation data securely between parties or for storing translated content in encrypted form. It helps ensure confidentiality during translation workflows.", + "limitations": "This tool generates keys only; it does not perform encryption or decryption of text itself. It also does not manage key lifecycle or storage beyond providing the generated key string.", + "examples": [ + "Generate an AES 256-bit key for encrypting translation data.", + "Create an RSA 2048-bit key for decrypting secured translation files." + ] + }, + "tags": [ + "translation", + "security", + "encryption", + "key generation", + "cryptography" + ], + "examples": [ + { + "inputJson": "{\"keyType\":\"AES\",\"keyLength\":256,\"usage\":\"encryption\",\"exportFormat\":\"base64\"}", + "description": "Generate a 256-bit AES key for encrypting translated text, output in base64." + }, + { + "inputJson": "{\"keyType\":\"RSA\",\"keyLength\":2048,\"usage\":\"both\",\"exportFormat\":\"hex\"}", + "description": "Create a 2048-bit RSA key pair for encryption and decryption of translation data, exported in hex format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Key", + "context": null + } + }, + { + "name": "translation.createAlert", + "description": "Generates a security alert message in a target language based on an input alert template and context information. Accepts input alert text in a source language along with relevant security context data, translates the alert content accurately while preserving critical security terms, and outputs a localized alert message suitable for distribution to users in the target language.", + "category": "translation", + "parameters": [ + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code (e.g., 'en', 'fr') of the input alert text to be translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The language code of the language into which the alert should be translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "alertTemplate", + "type": "string", + "description": "The alert message template text in the source language, potentially with placeholders for dynamic data.", + "required": true, + "defaultValue": "" + }, + { + "name": "contextData", + "type": "object", + "description": "An object containing key-value pairs to replace placeholders in the alert template and provide contextual details (like threat type, urgency level).", + "required": false, + "defaultValue": "{}" + }, + { + "name": "preserveSecurityTerms", + "type": "boolean", + "description": "If true, key security-related terms should not be translated but kept in the source language to maintain clarity.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the localized alert message string as 'translatedAlert', and metadata including language codes, and applied context data." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert predefined security alert messages into multiple target languages while embedding dynamic context details, ensuring that security terminology remains accurate and understandable to localized audiences. Ideal for system administrators or security operations centers that must communicate alerts internationally.", + "limitations": "This tool translates alert messages but does not perform threat analysis or generate new alert content beyond the supplied template. It relies on correct input context data to fill placeholders appropriately, and may not handle idiomatic or cultural nuances perfectly.", + "examples": [ + "Translate a phishing warning alert from English to Spanish embedding current phishing campaign details.", + "Create a localized malware outbreak alert in French using a standard alert template and threat attributes.", + "Generate a German security alert for a detected vulnerability including dynamic severity and affected system details." + ] + }, + "tags": [ + "translation", + "security", + "alert", + "localization", + "multilingual" + ], + "examples": [ + { + "inputJson": "{\"sourceLanguage\":\"en\",\"targetLanguage\":\"es\",\"alertTemplate\":\"Security alert: Detected {threatType} attack with severity {severityLevel}.\",\"contextData\":{\"threatType\":\"phishing\",\"severityLevel\":\"high\"},\"preserveSecurityTerms\":true}", + "description": "Translate a phishing attack alert from English to Spanish, embedding threat type and severity, preserving security terms." + }, + { + "inputJson": "{\"sourceLanguage\":\"en\",\"targetLanguage\":\"fr\",\"alertTemplate\":\"Urgent: {affectedSystems} have a {threatType} vulnerability.\",\"contextData\":{\"affectedSystems\":\"Servers in data center 3\",\"threatType\":\"ransomware\"},\"preserveSecurityTerms\":true}", + "description": "Create a French alert concerning ransomware vulnerability affecting specified systems." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Alert", + "context": null + } + }, + { + "name": "translation.createPullRequest", + "description": "Creates a code pull request that integrates translated text files into a repository. Accepts source language, target language, file paths to translated content, and repository details. Generates a pull request with translation updates, ready for review and merging.", + "category": "translation", + "parameters": [ + { + "name": "repositoryUrl", + "type": "string", + "description": "URL of the git repository where the pull request will be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceBranch", + "type": "string", + "description": "Name of the branch from which to create the pull request (usually the main or master branch).", + "required": true, + "defaultValue": "main" + }, + { + "name": "targetBranch", + "type": "string", + "description": "Name of the branch where translation changes will be committed and the pull request targeted.", + "required": true, + "defaultValue": "translation-update" + }, + { + "name": "translatedFiles", + "type": "array", + "description": "List of objects representing translated files, each with keys 'filePath' and 'content' containing the path and translated text respectively.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The original language code of the source text, e.g., 'en'.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The target language code for the translation, e.g., 'fr'.", + "required": true, + "defaultValue": "" + }, + { + "name": "pullRequestTitle", + "type": "string", + "description": "Title for the pull request describing the translation update.", + "required": false, + "defaultValue": "Add translation for target language" + }, + { + "name": "pullRequestDescription", + "type": "string", + "description": "Detailed description for the pull request explaining translation scope and details.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Details about the created pull request including URL, branch names, and commit SHA. Contains keys: pullRequestUrl (string), sourceBranch (string), targetBranch (string), commitSha (string)." + }, + "aiAgent": { + "useCase": "Use this tool when you have completed machine or human translations of codebase text resources and need to automate integration by creating a pull request in the repository. It streamlines merging translation updates for review and version control.", + "limitations": "This tool does not perform translations itself and requires valid git repository access and permissions; it cannot resolve merge conflicts or verify translation quality.", + "examples": [ + "Create a PR with updated French translations for the UI text files.", + "Integrate Spanish translated content into the development branch via a pull request.", + "Submit a pull request adding new German translation files to the repo for review." + ] + }, + "tags": [ + "translation", + "pullRequest", + "codeIntegration", + "localization", + "automation" + ], + "examples": [ + { + "inputJson": "{\"repositoryUrl\":\"https://github.com/example/app\",\"sourceBranch\":\"main\",\"targetBranch\":\"translation-fr\",\"translatedFiles\":[{\"filePath\":\"locales/fr.json\",\"content\":\"{\\\"greeting\\\":\\\"Bonjour\\\"}\"}],\"sourceLanguage\":\"en\",\"targetLanguage\":\"fr\",\"pullRequestTitle\":\"Add French translations\",\"pullRequestDescription\":\"Added initial French translations for user interface.\"}", + "description": "Create a pull request that adds French translation file to the repository." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "PullRequest", + "context": null + } + }, + { + "name": "translation.createLead", + "description": "This tool accepts lead information in a source language and translates relevant fields into a target language to create a business lead record suitable for international sales and marketing teams. It processes attributes such as name, company, role, and description, returning a standardized, translated lead object to help cross-lingual lead generation.", + "category": "translation", + "parameters": [ + { + "name": "leadData", + "type": "object", + "description": "An object containing lead fields including name, company, role, description, and contact info in the source language.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The ISO language code representing the input text language of the lead data.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The ISO language code for the language into which the lead data should be translated.", + "required": true, + "defaultValue": "" + }, + { + "name": "fieldsToTranslate", + "type": "array", + "description": "An array of strings specifying which lead fields should be translated (e.g., ['name', 'role', 'description']).", + "required": false, + "defaultValue": "[\"name\",\"role\",\"description\"]" + }, + { + "name": "includeOriginalTexts", + "type": "boolean", + "description": "Whether to include the original untranslated text fields in the output for reference.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A lead object with specified fields translated into the target language, including contact information unchanged. If requested, original texts are preserved alongside translations." + }, + "aiAgent": { + "useCase": "Use this tool when generating new sales leads or contacts from multilingual sources that require accurate translation of key descriptive fields for business and marketing teams operating in different languages. It helps normalize and internationalize lead data.", + "limitations": "This tool does not validate lead contact information accuracy or format. It also cannot add leads to CRM systems directly or enrich leads beyond translating given fields.", + "examples": [ + "Translate lead profile from Spanish to English to onboard new international clients.", + "Create a lead in French from lead data submitted in German for a marketing campaign.", + "Prepare a translated lead contact from Japanese to English with role and description fields translated." + ] + }, + "tags": [ + "translation", + "lead generation", + "business", + "multilingual", + "sales", + "marketing" + ], + "examples": [ + { + "inputJson": "{\"leadData\":{\"name\":\"Juan Pérez\",\"company\":\"Tecnología Avanzada\",\"role\":\"Gerente de Proyecto\",\"description\":\"Encargado de la coordinación de proyectos TI.\",\"email\":\"juan.perez@example.com\"},\"sourceLanguage\":\"es\",\"targetLanguage\":\"en\",\"fieldsToTranslate\":[\"name\",\"role\",\"description\"],\"includeOriginalTexts\":true}", + "description": "Translate a Spanish lead's name, role, and description into English, including original Spanish texts." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Lead", + "context": null + } + }, + { + "name": "translation.createCSV", + "description": "This tool accepts an array of objects containing text segments in multiple languages and generates a CSV string with translatable fields. It processes input by organizing keys as column headers (e.g., source and target languages) and outputs a CSV formatted string suitable for translation workflows or import into translation management systems.", + "category": "translation", + "parameters": [ + { + "name": "translations", + "type": "array", + "description": "An array of objects where each object has keys representing language codes and values as text strings to be included in the CSV rows.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceLanguage", + "type": "string", + "description": "The language code for the source language column in the CSV, used as one of the headers.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguages", + "type": "array", + "description": "Array of target language codes that will be used as CSV column headers besides the source language.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include a header row with language codes in the CSV output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "delimiter", + "type": "string", + "description": "Character to use as CSV delimiter, default is comma (,).", + "required": false, + "defaultValue": "," + } + ], + "returns": { + "type": "object", + "description": "An object containing a single field 'csvString', which is the complete CSV string representing the translations." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create CSV files from multilingual text data, especially for localization or translation workflow systems that accept CSV imports. Useful for preparing language translation sheets for translators or TMS tools.", + "limitations": "This tool does not perform actual translation; it only formats existing multilingual text data into a CSV. It expects well-structured input with consistent language key usage across input objects.", + "examples": [ + "Create CSV from translation objects with English as source and French, Spanish as targets.", + "Generate a CSV translation sheet with header row disabled.", + "Customize CSV delimiter to semicolon for regional compatibility." + ] + }, + "tags": [ + "translation", + "CSV", + "localization", + "multilingual", + "data export" + ], + "examples": [ + { + "inputJson": "{\"translations\":[{\"en\":\"Hello\",\"fr\":\"Bonjour\",\"es\":\"Hola\"},{\"en\":\"Goodbye\",\"fr\":\"Au revoir\",\"es\":\"Adiós\"}],\"sourceLanguage\":\"en\",\"targetLanguages\":[\"fr\",\"es\"],\"includeHeaders\":true,\"delimiter\":\",\"}", + "description": "Generate a translation CSV with English source and French and Spanish target columns, including headers and default comma delimiter." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "CSV", + "context": null + } + }, + { + "name": "translation.createEndpoint", + "description": "Creates a ready-to-deploy translation API endpoint that accepts text in a source language and returns translations in specified target languages. Inputs include source and target languages, translation engine selection, and optional parameters like formal tone or slang filtering. Outputs include the endpoint URL and example usage code snippets.", + "category": "translation", + "parameters": [ + { + "name": "sourceLanguage", + "type": "string", + "description": "The ISO code of the source language text to be translated from (e.g., 'en' for English).", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguages", + "type": "array", + "description": "Array of ISO language codes into which the text will be translated (e.g., ['fr','es']).", + "required": true, + "defaultValue": "" + }, + { + "name": "translationEngine", + "type": "string", + "description": "The translation engine to use (e.g., 'google', 'microsoft', 'deepl').", + "required": false, + "defaultValue": "google" + }, + { + "name": "formalTone", + "type": "boolean", + "description": "Indicates if the translation should use a formal tone when the language supports it.", + "required": false, + "defaultValue": "false" + }, + { + "name": "filterSlang", + "type": "boolean", + "description": "Whether to filter out slang and informal expressions from the output.", + "required": false, + "defaultValue": "false" + }, + { + "name": "responseFormat", + "type": "string", + "description": "Output format of the translation response, e.g., 'json' or 'xml'.", + "required": false, + "defaultValue": "json" + }, + { + "name": "customGlossary", + "type": "object", + "description": "Optional glossary terms to apply during translation as key-value pairs (term: translation).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated API endpoint URL, supported methods, sample request and response examples, and usage instructions." + }, + "aiAgent": { + "useCase": "Use this tool to quickly create a deployable translation API endpoint for applications requiring multi-language support. Ideal when an agent needs to integrate or generate translation services with customizable options like tone, slang filtering, and glossary support without manually coding backend endpoints.", + "limitations": "Does not provide real-time dynamic translation beyond initial endpoint creation. The quality depends on the selected translation engine and cannot fully guarantee idiomatic or context-aware output. Does not handle audio or image translations.", + "examples": [ + "Create a translation endpoint that translates English text into French and Spanish using Google engine with formal tone.", + "Generate a translation API endpoint for German to Japanese without slang filtering and with a custom glossary.", + "Create a JSON output translation endpoint from Italian to multiple languages using DeepL engine." + ] + }, + "tags": [ + "translation", + "api", + "endpoint", + "language", + "multilingual", + "automation" + ], + "examples": [ + { + "inputJson": "{\"sourceLanguage\":\"en\",\"targetLanguages\":[\"fr\",\"es\"],\"translationEngine\":\"google\",\"formalTone\":true,\"filterSlang\":false}", + "description": "Generate a Google-powered translation API endpoint translating English text into French and Spanish with formal tone enabled." + }, + { + "inputJson": "{\"sourceLanguage\":\"de\",\"targetLanguages\":[\"ja\"],\"translationEngine\":\"microsoft\",\"formalTone\":false,\"filterSlang\":true,\"customGlossary\":{\"Haus\":\"家\"}}", + "description": "Create a Microsoft translation endpoint translating German to Japanese filtering slang and applying a custom glossary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Endpoint", + "context": null + } + }, + { + "name": "copywriting.analyzeMetric", + "description": "Analyzes specified marketing copywriting performance metrics provided as input data to evaluate effectiveness. The tool processes numeric or structured metric inputs such as engagement, conversion, click-through rates, or sentiment scores, applying statistical and trend analysis to generate an interpretive summary report indicating strengths, weaknesses, and optimization opportunities in promotional texts.", + "category": "copywriting", + "parameters": [ + { + "name": "metricName", + "type": "string", + "description": "Name of the metric to analyze (e.g., conversionRate, clickThroughRate, engagementScore).", + "required": true, + "defaultValue": "" + }, + { + "name": "metricData", + "type": "array", + "description": "Array of numeric values or objects representing the metric data points collected over time or campaigns.", + "required": true, + "defaultValue": "" + }, + { + "name": "timePeriod", + "type": "string", + "description": "Optional: Time period for analysis (e.g., last30Days, Q1_2024), helps contextualize trends.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeTrendAnalysis", + "type": "boolean", + "description": "Flag indicating whether to perform trend analysis on the metric data.", + "required": false, + "defaultValue": "true" + }, + { + "name": "benchmarkValue", + "type": "number", + "description": "Optional benchmark value to compare metric performance against industry or historical standards.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object including summary insights, trend assessment, benchmark comparison, and recommendations for improving copywriting performance based on the metric data." + }, + "aiAgent": { + "useCase": "Use this tool when needing to assess the effectiveness of copywriting-related marketing metrics to guide optimization efforts. Useful for analyzing performance data such as engagement or conversion rates to generate actionable insights and compare against benchmarks.", + "limitations": "This tool does not generate copywriting text itself or collect raw metric data; it requires input metrics pre-collected and focuses solely on analysis and interpretation.", + "examples": [ + "Analyze the conversionRate metric for last30Days to identify trends and compare to benchmark 3.5%.", + "Evaluate engagementScore data over Q1_2024 with trend analysis enabled to extract actionable insights for improving copywriting impact." + ] + }, + "tags": [ + "copywriting", + "analysis", + "marketing-metrics", + "performance", + "trend-analysis", + "conversion", + "engagement" + ], + "examples": [ + { + "inputJson": "{\"metricName\":\"conversionRate\",\"metricData\":[2.3,3.1,3.8,4.0,3.5],\"timePeriod\":\"last30Days\",\"includeTrendAnalysis\":true,\"benchmarkValue\":3.5}", + "description": "Analyze recent conversion rates to determine trends and compare to a benchmark value." + }, + { + "inputJson": "{\"metricName\":\"engagementScore\",\"metricData\":[75,78,80,79,82],\"timePeriod\":\"Q1_2024\",\"includeTrendAnalysis\":true,\"benchmarkValue\":80}", + "description": "Evaluate engagement score over a quarter to generate insights and check performance against benchmark." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Metric", + "context": null + } + }, + { + "name": "copywriting.analyzeCSV", + "description": "This tool accepts a CSV file containing marketing or promotional text data, analyzes the textual content to identify key marketing themes, sentiment, readability, and effectiveness indicators, and produces a structured report summarizing these insights to aid in optimizing copywriting strategies.", + "category": "copywriting", + "parameters": [ + { + "name": "csvContent", + "type": "string", + "description": "The raw CSV data as a string including marketing text entries to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "textColumn", + "type": "string", + "description": "The name of the CSV column that contains the marketing copy text to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "sentimentAnalysis", + "type": "boolean", + "description": "Flag to enable sentiment analysis on the text content.", + "required": false, + "defaultValue": "true" + }, + { + "name": "readabilityMetrics", + "type": "boolean", + "description": "Flag to calculate readability scores such as Flesch-Kincaid grade level.", + "required": false, + "defaultValue": "true" + }, + { + "name": "keywordExtraction", + "type": "boolean", + "description": "Flag to extract and highlight key marketing keywords and themes.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "Language of the marketing text for appropriate processing, e.g., 'en' for English.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "A detailed analysis report including sentiment summary, readability scores, keyword themes, and suggestions for improving marketing copy effectiveness." + }, + "aiAgent": { + "useCase": "Use this tool when provided with bulk marketing or promotional text data in CSV format to extract actionable insights such as sentiment, readability, and thematic keywords that can help in refining and optimizing marketing copy strategies. It is ideal for content marketers, copywriters, and analysts working with large text datasets to improve messaging effectiveness.", + "limitations": "The tool analyzes only the textual content within a specified CSV column and cannot interpret images or non-text fields. It does not generate new marketing copy but provides analysis and recommendations based on given text. Language support is primarily for widely used languages such as English.", + "examples": [ + "Analyze sentiment and keywords from a CSV of promotional email texts.", + "Evaluate readability and extract marketing themes from ad copy data in CSV.", + "Provide an overview report on the effectiveness of product descriptions stored in CSV format." + ] + }, + "tags": [ + "copywriting", + "analysis", + "CSV", + "marketing", + "sentiment", + "readability", + "keywords" + ], + "examples": [ + { + "inputJson": "{\"csvContent\":\"id,text\\n1,Save big on our summer sale!\\n2,Introducing the all-new smartphone with cutting-edge features.\",\"textColumn\":\"text\",\"sentimentAnalysis\":true,\"readabilityMetrics\":true,\"keywordExtraction\":true,\"language\":\"en\"}", + "description": "Analyze a CSV with two rows of promotional text to extract sentiment, readability scores, and key marketing keywords." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "CSV", + "context": null + } + }, + { + "name": "copywriting.uploadReport", + "description": "Uploads a written report document to a cloud storage or content management system, accepting the report content in text or file form, applying optional metadata such as title, author, and tags, and returning a confirmation with the storage location URL and upload status.", + "category": "copywriting", + "parameters": [ + { + "name": "reportTitle", + "type": "string", + "description": "The title of the report to be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "reportContent", + "type": "string", + "description": "Text content of the report to upload, if no file is provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "reportFilePath", + "type": "string", + "description": "File path or URL of the report file to upload, if uploading from a file instead of text.", + "required": false, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "Name of the author of the report.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "List of tags or keywords describing the report for indexing and search purposes.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "uploadDestination", + "type": "string", + "description": "Target destination identifier or URL where the report should be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "Whether to overwrite an existing report with the same title at the destination.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing upload status, unique report ID or URL, and a message explaining the result." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically upload marketing or project reports written or generated by AI to a designated cloud repository or CMS, optionally tagging the document for future retrieval. This allows seamless integration of report generation and publication workflows.", + "limitations": "This tool does not generate report content; it only uploads existing reports. It requires proper access credentials to the upload destination which must be managed externally.", + "examples": [ + "Upload the latest quarterly marketing report as a PDF file to our cloud drive with relevant tags.", + "Save a text version of the sales performance report authored by Jane Doe into the CMS under 'Q1 Reports'.", + "Overwrite the existing annual report in the shared folder with the updated version and tag it as 'final'." + ] + }, + "tags": [ + "copywriting", + "uploading", + "reports", + "document management", + "cloud storage" + ], + "examples": [ + { + "inputJson": "{\"reportTitle\":\"Q2 Marketing Performance\",\"reportContent\":\"This is the textual content of the Q2 marketing report.\",\"uploadDestination\":\"https://cloudstorage.example.com/reports/marketing\",\"tags\":[\"Q2\",\"marketing\",\"performance\"],\"authorName\":\"Alice Johnson\"}", + "description": "Uploading a textual marketing report with tags and author information to a cloud storage URL." + }, + { + "inputJson": "{\"reportTitle\":\"Annual Sales Report 2023\",\"reportFilePath\":\"/local/path/annual_sales_2023.pdf\",\"uploadDestination\":\"s3://company-reports/annual/\",\"overwriteExisting\":true}", + "description": "Uploading an existing PDF file report to an S3 bucket destination with overwrite permission." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Report", + "context": null + } + }, + { + "name": "copywriting.sendMessage", + "description": "Sends a marketing or promotional message to a list of recipients. Accepts message content, recipient contacts, and optional scheduling and personalization parameters. Processes the inputs to dispatch messages via email or SMS and returns a summary of delivery results including successes and failures.", + "category": "copywriting", + "parameters": [ + { + "name": "messageContent", + "type": "string", + "description": "The main text content of the marketing message to send, supporting placeholders for personalization.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientList", + "type": "array", + "description": "Array of recipient contacts, each as an object with contact details like email or phone number and optional metadata for personalization.", + "required": true, + "defaultValue": "" + }, + { + "name": "channel", + "type": "string", + "description": "Delivery channel to use, either 'email' or 'sms'.", + "required": true, + "defaultValue": "email" + }, + { + "name": "sendAt", + "type": "string", + "description": "Optional ISO 8601 timestamp specifying when to send the message; if omitted, sends immediately.", + "required": false, + "defaultValue": "" + }, + { + "name": "subjectLine", + "type": "string", + "description": "Subject line of the message when sending via email; ignored for SMS.", + "required": false, + "defaultValue": "" + }, + { + "name": "fromName", + "type": "string", + "description": "Display name of the sender, shown in the message header or SMS sender ID.", + "required": false, + "defaultValue": "" + }, + { + "name": "enableTracking", + "type": "boolean", + "description": "Flag indicating whether to enable click and open tracking for email messages.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object summarizing the sending operation including total recipients, number successfully queued, failed deliveries with error details, and a unique batch ID for reference." + }, + "aiAgent": { + "useCase": "Use this tool when needing to send promotional or marketing messages to multiple recipients through email or SMS. Suitable for campaigns requiring personalization, scheduling, and delivery tracking. Ideal for automated marketing workflows or outreach agents.", + "limitations": "Does not generate message content automatically; requires complete message text input. Cannot manage recipient list imports or CRM synchronization. Limited to email and SMS channels only, without support for other social or messaging platforms.", + "examples": [ + "Send a scheduled marketing email with personalized greetings to a customer list.", + "Dispatch an immediate SMS alert to a group with a promotional offer.", + "Send a newsletter email with tracking enabled and a custom sender name." + ] + }, + "tags": [ + "marketing", + "communication", + "email", + "sms", + "messaging", + "promotion", + "automation" + ], + "examples": [ + { + "inputJson": "{\"messageContent\":\"Hello {{firstName}}, check out our new product launch!\",\"recipientList\":[{\"email\":\"alice@example.com\",\"firstName\":\"Alice\"},{\"email\":\"bob@example.com\",\"firstName\":\"Bob\"}],\"channel\":\"email\",\"sendAt\":\"2024-07-01T09:00:00Z\",\"subjectLine\":\"New Product Launch!\",\"fromName\":\"Brand Team\",\"enableTracking\":true}", + "description": "Schedule an email campaign to multiple recipients with personalized greetings, custom sender name, and tracking enabled." + }, + { + "inputJson": "{\"messageContent\":\"Flash Sale! Get 20% off today only.\",\"recipientList\":[{\"phone\":\"+1234567890\"},{\"phone\":\"+1098765432\"}],\"channel\":\"sms\"}", + "description": "Send an immediate SMS marketing message to a list of phone numbers announcing a flash sale." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Message", + "context": null + } + }, + { + "name": "copywriting.renderFile", + "description": "Renders marketing and promotional copy as a formatted text file in specified file format (e.g., TXT, PDF). Accepts input text and style parameters, applies copywriting tone and formatting, and outputs a downloadable file suitable for campaigns or presentations.", + "category": "copywriting", + "parameters": [ + { + "name": "inputText", + "type": "string", + "description": "The marketing or promotional text content to render into a file.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileFormat", + "type": "string", + "description": "Desired output file format, such as 'txt' or 'pdf'.", + "required": true, + "defaultValue": "txt" + }, + { + "name": "tone", + "type": "string", + "description": "Copywriting tone to apply, e.g., 'formal', 'friendly', or 'professional'.", + "required": false, + "defaultValue": "professional" + }, + { + "name": "includeHeadings", + "type": "boolean", + "description": "Whether to add styled headings automatically based on text structure.", + "required": false, + "defaultValue": "false" + }, + { + "name": "fontSize", + "type": "number", + "description": "Font size to use in the rendered file, applicable to supported formats.", + "required": false, + "defaultValue": "12" + }, + { + "name": "fileName", + "type": "string", + "description": "Custom name for the output file without extension.", + "required": false, + "defaultValue": "marketing_copy" + } + ], + "returns": { + "type": "object", + "description": "An object containing the file content as base64 encoded string, file name with extension, and MIME type for download or further processing." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate professional, formatted marketing text files directly consumable for campaigns, presentations, or distribution. It converts raw promotional text into styled files in various formats with tone adaptation and optional formatting enhancements.", + "limitations": "The tool does not generate the copywriting content itself; it requires input text to format. Also, complex multi-page PDF layouts or images are not supported.", + "examples": [ + "Render a marketing script as a professional PDF file with formal tone.", + "Generate a plain text promotional flyer with friendly tone and default font size.", + "Create a styled marketing text file named 'SummerCampaign' in TXT format without headings." + ] + }, + "tags": [ + "copywriting", + "file rendering", + "marketing", + "text formatting", + "pdf", + "txt" + ], + "examples": [ + { + "inputJson": "{\"inputText\":\"Introducing our new summer line of eco-friendly products! Save the planet in style.\",\"fileFormat\":\"pdf\",\"tone\":\"friendly\",\"includeHeadings\":true,\"fontSize\":14,\"fileName\":\"SummerPromo\"}", + "description": "Render a friendly tone PDF file with headings and custom font size for a summer product promotion." + }, + { + "inputJson": "{\"inputText\":\"Exclusive offer: Buy one, get one free.\",\"fileFormat\":\"txt\",\"tone\":\"professional\",\"includeHeadings\":false,\"fontSize\":12,\"fileName\":\"Offer\"}", + "description": "Create a plain TXT file with professional tone for an exclusive offer promotion." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "File", + "context": null + } + }, + { + "name": "copywriting.buildDatabase", + "description": "This tool helps copywriters and marketing teams create a structured database of persuasive marketing content elements. It accepts arrays of copy snippets, product descriptions, target audience profiles, and campaign goals, then organizes and categorizes them into a searchable, filterable database output for efficient content planning and reuse.", + "category": "copywriting", + "parameters": [ + { + "name": "copySnippets", + "type": "array", + "description": "An array of short marketing text snippets or taglines to include in the database.", + "required": true, + "defaultValue": "" + }, + { + "name": "productDescriptions", + "type": "array", + "description": "An array of detailed product or service descriptions to be catalogued.", + "required": false, + "defaultValue": "" + }, + { + "name": "targetAudiences", + "type": "array", + "description": "Profiles or segment descriptions of intended audiences for the marketing content.", + "required": false, + "defaultValue": "" + }, + { + "name": "campaignGoals", + "type": "array", + "description": "List of marketing campaign objectives or key results to align content with.", + "required": false, + "defaultValue": "" + }, + { + "name": "categorizationMethod", + "type": "string", + "description": "Method to categorize content entries, e.g., by product type, audience, or theme.", + "required": false, + "defaultValue": "theme" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to enrich database entries with metadata such as tone, length, or call-to-action type.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "A structured database object containing organized marketing content entries indexed by categories and metadata, ready for deployment or further editing." + }, + "aiAgent": { + "useCase": "Use this tool when you need to consolidate disparate pieces of marketing copy and related content into a unified, structured database. This aids in content management, reuse, and strategic planning for campaigns targeting various audiences and goals.", + "limitations": "This tool does not generate new copy, evaluate copy effectiveness, or perform sentiment analysis; it strictly organizes existing content elements as provided.", + "examples": [ + "Build a database of short taglines and product descriptions for our new line of sportswear.", + "Organize our collected marketing snippets by target audience segments and campaign objectives.", + "Create a searchable content database from multiple sources to plan upcoming promotional campaigns." + ] + }, + "tags": [ + "copywriting", + "database", + "marketing", + "content-management", + "categorization", + "campaign-planning" + ], + "examples": [ + { + "inputJson": "{\"copySnippets\":[\"Feel the difference.\",\"Unleash your potential.\"],\"productDescriptions\":[\"Lightweight running shoes for everyday use.\",\"Breathable sports jacket with water resistance.\"],\"targetAudiences\":[\"Young adults aged 18-30 interested in fitness.\"],\"campaignGoals\":[\"Increase brand awareness.\",\"Boost online sales.\"],\"categorizationMethod\":\"audience\",\"includeMetadata\":true}", + "description": "Create a marketing content database categorizing snippets and descriptions by audience profile including metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Database", + "context": null + } + }, + { + "name": "copywriting.buildServer", + "description": "Generates persuasive and professional marketing copy for server infrastructure products or services. Accepts input parameters describing server features, target audience, tone, and key selling points. Processes this data to produce original promotional text pieces such as product descriptions, landing page content, or advertising slogans tailored to the server context.", + "category": "copywriting", + "parameters": [ + { + "name": "serverType", + "type": "string", + "description": "Type of server to promote (e.g., dedicated, cloud, VPS).", + "required": true, + "defaultValue": "" + }, + { + "name": "targetAudience", + "type": "string", + "description": "Primary audience of the marketing copy (e.g., IT managers, small business owners).", + "required": true, + "defaultValue": "" + }, + { + "name": "keyFeatures", + "type": "array", + "description": "List of important features or benefits to highlight in the content.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "tone", + "type": "string", + "description": "Overall tone of the writing, such as professional, casual, or technical.", + "required": false, + "defaultValue": "professional" + }, + { + "name": "contentLength", + "type": "number", + "description": "Approximate desired length of the generated copy in words.", + "required": false, + "defaultValue": "150" + }, + { + "name": "useCase", + "type": "string", + "description": "Specific use case or scenario to emphasize (e.g., high availability, cost efficiency).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated marketing copy text along with metadata like word count and suggested headline." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create targeted, effective marketing content for server hardware or hosting services. Ideal for generating product descriptions, promotional web copy, or ad slogans tailored to different server types and audiences.", + "limitations": "This tool cannot generate technical documentation, specifications, or highly detailed configuration instructions. It focuses on marketing language rather than technical accuracy or depth.", + "examples": [ + "Create marketing copy for a cloud server targeting startups with features emphasizing scalability and cost efficiency in a friendly tone.", + "Generate a professional product description for a dedicated server aimed at IT administrators highlighting security and performance.", + "Write a concise advertising slogan for a VPS hosting service emphasizing reliability and 24/7 support." + ] + }, + "tags": [ + "copywriting", + "marketing", + "infrastructure", + "server", + "promotional", + "content-generation" + ], + "examples": [ + { + "inputJson": "{\"serverType\":\"cloud\",\"targetAudience\":\"startups\",\"keyFeatures\":[\"scalability\",\"cost efficiency\",\"easy setup\"],\"tone\":\"friendly\",\"contentLength\":120,\"useCase\":\"scalable infrastructure for growth\"}", + "description": "Generate marketing copy for cloud servers targeting startups emphasizing scalability and cost efficiency with a friendly tone." + }, + { + "inputJson": "{\"serverType\":\"dedicated\",\"targetAudience\":\"IT administrators\",\"keyFeatures\":[\"security\",\"high performance\",\"custom configurations\"],\"tone\":\"professional\",\"contentLength\":200}", + "description": "Create a professional product description for dedicated servers highlighting security and performance features aimed at IT admins." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Server", + "context": null + } + }, + { + "name": "copywriting.buildAPI", + "description": "Generates clear, engaging marketing copy designed to promote and explain software APIs. Accepts API specifications and key selling points as input, processes them to craft persuasive text suitable for documentation, landing pages, or promotional materials. Outputs polished marketing content tailored to the API audience.", + "category": "copywriting", + "parameters": [ + { + "name": "apiName", + "type": "string", + "description": "The official name of the API to be promoted.", + "required": true, + "defaultValue": "" + }, + { + "name": "apiDescription", + "type": "string", + "description": "A brief technical description of what the API does.", + "required": true, + "defaultValue": "" + }, + { + "name": "keyFeatures", + "type": "array", + "description": "List of the main features or benefits of the API to highlight in the copy.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "targetAudience", + "type": "string", + "description": "Description of the ideal users or customers of the API.", + "required": false, + "defaultValue": "" + }, + { + "name": "tone", + "type": "string", + "description": "Writing style or tone for the copy, e.g., professional, friendly, casual.", + "required": false, + "defaultValue": "professional" + }, + { + "name": "desiredOutputLength", + "type": "number", + "description": "Approximate length in words of the generated marketing text.", + "required": false, + "defaultValue": "200" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated marketing copy as a string." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to produce persuasive and clear marketing text specifically aimed at promoting an API. Ideal for generating content for product landing pages, API documentation introductions, or promotional emails that communicate the value and features of a software API to developers or business users.", + "limitations": "It cannot generate detailed technical documentation or code samples; it focuses solely on marketing copy. The tool relies on clear and accurate input about the API's features and audience to produce effective outputs.", + "examples": [ + "Generate marketing copy for a new payment processing API highlighting ease of integration and security.", + "Create a friendly promotional paragraph for an AI-powered translation API targeting mobile app developers.", + "Write a professional description for a data analytics API emphasizing scalability and real-time insights." + ] + }, + "tags": [ + "copywriting", + "API", + "marketing", + "promotion", + "software", + "documentation", + "content generation" + ], + "examples": [ + { + "inputJson": "{\"apiName\":\"CloudPay API\",\"apiDescription\":\"An API for secure payment processing with fraud detection.\",\"keyFeatures\":[\"Easy integration\",\"Real-time fraud detection\",\"Supports multiple currencies\"],\"targetAudience\":\"e-commerce developers and payment solution providers\",\"tone\":\"professional\",\"desiredOutputLength\":180}", + "description": "Generate professional marketing copy for a secure payment API highlighting key benefits and audience." + }, + { + "inputJson": "{\"apiName\":\"LinguaAPI\",\"apiDescription\":\"An AI-powered translation API with support for 50+ languages.\",\"keyFeatures\":[\"Fast translations\",\"Highly accurate\",\"Supports text and voice\"],\"targetAudience\":\"mobile app developers\",\"tone\":\"friendly\",\"desiredOutputLength\":150}", + "description": "Create friendly, concise marketing text aimed at developers for an AI translation API." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "API", + "context": null + } + }, + { + "name": "copywriting.buildTest", + "description": "This tool accepts a coding function or module description in text form and generates a marketing-oriented test description or promotional tagline designed to highlight the quality and reliability of the code. It processes the input to craft copywriting content suitable for testing documentation, QA communications, or promotional materials, outputting a concise, persuasive test statement or tagline.", + "category": "copywriting", + "parameters": [ + { + "name": "codeDescription", + "type": "string", + "description": "A brief description or summary of the code, function, or module to be used as input for creating the test-related marketing copy.", + "required": true, + "defaultValue": "" + }, + { + "name": "testType", + "type": "string", + "description": "Type of test to promote (e.g., unit test, integration test, performance test). This helps tailor the marketing text to the test's nature.", + "required": false, + "defaultValue": "unit" + }, + { + "name": "tone", + "type": "string", + "description": "Desired tone for the promotional test text (e.g., professional, casual, enthusiastic).", + "required": false, + "defaultValue": "professional" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum character length for the generated marketing text to ensure brevity and fit marketing needs.", + "required": false, + "defaultValue": "150" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated marketing test copy text as a string." + }, + "aiAgent": { + "useCase": "Use this tool when needing to create marketing and promotional text specifically designed to showcase and 'sell' code quality assurance aspects through engaging and professional testing descriptions or taglines. It helps create appealing copy for technical audiences, QA documentation, or promotional channels about the robustness and reliability of software components.", + "limitations": "The tool generates marketing-style copy for tests, but does not create actual test code or scripts, nor does it validate the functionality of the codebase.", + "examples": [ + "Create a catchy unit test tagline promoting a new authentication module.", + "Generate professional promotional text highlighting the importance of integration tests for a payment gateway.", + "Draft a brief enthusiastic marketing statement about performance testing for a database connector." + ] + }, + "tags": [ + "copywriting", + "marketing", + "software testing", + "promotional text", + "code quality", + "test description" + ], + "examples": [ + { + "inputJson": "{\"codeDescription\":\"A function that handles user login authentication.\",\"testType\":\"unit\",\"tone\":\"professional\",\"maxLength\":120}", + "description": "Generating a professional unit test marketing tagline for a user login authentication function." + }, + { + "inputJson": "{\"codeDescription\":\"Module that processes payment transactions securely.\",\"testType\":\"integration\",\"tone\":\"enthusiastic\",\"maxLength\":150}", + "description": "Creating enthusiastic promotional text for integration testing a payment processing module." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Test", + "context": null + } + }, + { + "name": "content-creation.analyzeReference", + "description": "Analyzes a given reference text or citation to extract and summarize key bibliographic details, assess its relevance to specified topics, and identify potential citation quality indicators. Accepts plain text or structured reference inputs and outputs a detailed analysis report including summary, topic relevance, and quality metrics.", + "category": "content-creation", + "parameters": [ + { + "name": "referenceText", + "type": "string", + "description": "The full reference text or citation to be analyzed, in any common citation format.", + "required": true, + "defaultValue": "" + }, + { + "name": "topicKeywords", + "type": "array", + "description": "An optional list of keywords or topics to assess the reference's relevance against.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeQualityIndicators", + "type": "boolean", + "description": "Flag to indicate whether to include citation quality indicators such as journal impact or publication year relevance.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum length of the generated summary of the reference, in characters.", + "required": false, + "defaultValue": "300" + } + ], + "returns": { + "type": "object", + "description": "An object containing the parsed citation details, a relevance score based on provided topics, a concise summary of the referenced work, and optional citation quality indicators." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to extract structured bibliographic data and meaningful content summaries from unstructured reference citations, especially to support research assistance, literature reviews, or automated content validation. It helps assess the relevance and reliability of references within a larger content creation or analysis workflow.", + "limitations": "This tool cannot access or verify the full content of the referenced source; it analyzes only what is provided in the reference text. It may struggle with poorly formatted or ambiguous citations and does not replace specialized bibliographic databases or manual expert review.", + "examples": [ + "Analyze a reference citation to generate a summary and relevance report for a scientific paper.", + "Assess the relevance of a list of references to specified research topics for content curation.", + "Extract key bibliographic details and quality indicators from a provided citation to create a standardized reference entry." + ] + }, + "tags": [ + "content-analysis", + "reference", + "bibliography", + "citation", + "summary", + "research", + "document-processing" + ], + "examples": [ + { + "inputJson": "{\"referenceText\":\"Smith, J. (2020). Advances in AI research. Journal of Computer Science, 35(4), 123-145.\",\"topicKeywords\":[\"artificial intelligence\",\"machine learning\"],\"includeQualityIndicators\":true,\"maxSummaryLength\":250}", + "description": "Analyze a journal article citation with related AI and machine learning keywords to generate a summary and quality indicators." + }, + { + "inputJson": "{\"referenceText\":\"Doe, A. (2018). A study on data privacy. Available at https://example.com/dataprivacy.pdf\",\"topicKeywords\":[],\"includeQualityIndicators\":false,\"maxSummaryLength\":150}", + "description": "Analyze a web publication citation without topic keywords and omit quality indicators, with a short summary limit." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Reference", + "context": null + } + }, + { + "name": "content-creation.analyzeSession", + "description": "Analyzes digital content creation sessions by processing input session data such as user actions, timestamps, and content metadata. It identifies patterns like productivity trends, session length distribution, and key activities, then produces a structured report summarizing session analytics and insights to help optimize future content workflows.", + "category": "content-creation", + "parameters": [ + { + "name": "sessionData", + "type": "array", + "description": "An array of objects representing individual user actions and events during the content creation session, including timestamps and metadata.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeZone", + "type": "string", + "description": "The time zone identifier (e.g., 'UTC','America/New_York') for interpreting session timestamps.", + "required": false, + "defaultValue": "UTC" + }, + { + "name": "analyzeGranularity", + "type": "string", + "description": "Level of detail for analysis; options include 'summary' for overview or 'detailed' for in-depth activity breakdown.", + "required": false, + "defaultValue": "summary" + }, + { + "name": "includeInactivePeriods", + "type": "boolean", + "description": "Whether to include analysis of user inactive periods within the session.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxReportItems", + "type": "number", + "description": "Maximum number of key activities or events to include in the output report.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing session summary statistics such as total duration, active time, key events ranking, productivity patterns, and possible improvement suggestions." + }, + "aiAgent": { + "useCase": "Use this tool when needing to extract insights from user content creation session logs to understand behavior patterns, productivity peaks, and workflow bottlenecks. It supports improving content creation efficiency and user experience by analyzing granular session activity data.", + "limitations": "The tool cannot interpret subjective user intentions or psychological states beyond activity data. It requires properly formatted session event data with accurate timestamps and metadata.", + "examples": [ + "Analyze a session log to find most frequent user actions and total active time.", + "Generate a detailed report showing periods of inactivity and suggest optimal session durations.", + "Provide an overview summary of multiple content creation sessions with key metrics and insights." + ] + }, + "tags": [ + "content-analysis", + "session-analytics", + "productivity", + "user-behavior", + "digital-content", + "workflow-optimization" + ], + "examples": [ + { + "inputJson": "{\"sessionData\":[{\"action\":\"edit_text\",\"timestamp\":\"2024-05-01T10:00:00Z\",\"details\":{\"duration\":120}},{\"action\":\"insert_image\",\"timestamp\":\"2024-05-01T10:02:30Z\",\"details\":{}},{\"action\":\"save_document\",\"timestamp\":\"2024-05-01T10:05:00Z\",\"details\":{}}],\"timeZone\":\"UTC\",\"analyzeGranularity\":\"summary\",\"includeInactivePeriods\":false,\"maxReportItems\":5}", + "description": "Summarize a short content editing session analyzing main user actions and total active time." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Session", + "context": null + } + }, + { + "name": "content-creation.analyzeTrend", + "description": "This tool accepts a dataset or feed URL containing time-stamped digital content metrics (likes, shares, views) or keywords over a specified date range, then analyzes emerging patterns and growth rates to identify trending topics or content themes. The output is a structured summary of top trends with metrics, growth trajectory, and sentiment where applicable.", + "category": "content-creation", + "parameters": [ + { + "name": "dataSource", + "type": "string", + "description": "URL or file path pointing to the digital content metrics dataset to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date of the analysis period in YYYY-MM-DD format.", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date of the analysis period in YYYY-MM-DD format.", + "required": true, + "defaultValue": "" + }, + { + "name": "metricType", + "type": "string", + "description": "Specify which metric to analyze, such as 'likes', 'shares', 'views', or 'mentions'.", + "required": false, + "defaultValue": "mentions" + }, + { + "name": "topN", + "type": "number", + "description": "Number of top trends to return in the analysis output.", + "required": false, + "defaultValue": "5" + }, + { + "name": "includeSentiment", + "type": "boolean", + "description": "Whether to perform sentiment analysis on content related to detected trends.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing an array of trend objects, each with name, metricSummary, growthRate, sentimentScore (if applicable), and detail links or references." + }, + "aiAgent": { + "useCase": "Use this tool when you need to extract and summarize key trending topics or content themes from large digital engagement datasets over time. It's ideal for content strategists or analysts seeking insights about viral phenomena or audience interests based on quantitative metrics.", + "limitations": "This tool cannot analyze non-time-series datasets or data that lacks standardized metric formats. It does not predict future trends, only analyzes historical data within the specified dates, and may not accurately interpret sentiment nuances in complex languages or slang.", + "examples": [ + "Analyze top 5 trending hashtags by mentions on a social media dataset between 2024-01-01 and 2024-01-31.", + "Identify fastest growing content themes by shares in a provided CSV file spanning 3 months.", + "Generate a report with top trends and sentiment from a news article dataset URL for the last week." + ] + }, + "tags": [ + "content-analysis", + "trend-detection", + "time-series", + "social-media", + "analytics" + ], + "examples": [ + { + "inputJson": "{\"dataSource\":\"https://example.com/social-metrics-january.csv\",\"startDate\":\"2024-01-01\",\"endDate\":\"2024-01-31\",\"metricType\":\"mentions\",\"topN\":5,\"includeSentiment\":true}", + "description": "Analyze the top 5 trends by mentions in a social metrics CSV URL data source for January including sentiment." + }, + { + "inputJson": "{\"dataSource\":\"/data/content_metrics.csv\",\"startDate\":\"2024-03-01\",\"endDate\":\"2024-05-31\",\"metricType\":\"shares\",\"topN\":3,\"includeSentiment\":false}", + "description": "Identify top 3 trending content themes by shares in local CSV data over Q1 2024 without sentiment." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Trend", + "context": null + } + }, + { + "name": "content-creation.analyzeIncident", + "description": "Analyzes detailed incident reports provided as textual or structured input to identify root causes, attack vectors, impact assessment, and suggests mitigation steps. Processes raw incident data including logs, timelines, and affected assets, producing a comprehensive analysis summary and recommendations.", + "category": "content-creation", + "parameters": [ + { + "name": "incidentReport", + "type": "string", + "description": "Detailed textual or structured incident report data describing the security incident.", + "required": true, + "defaultValue": "" + }, + { + "name": "logs", + "type": "array", + "description": "An array of log entries (strings or objects) related to the incident to aid analysis.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeMitigation", + "type": "boolean", + "description": "Whether to include recommended mitigation and prevention steps in the output analysis.", + "required": false, + "defaultValue": "true" + }, + { + "name": "analysisDepth", + "type": "string", + "description": "Specifies the detail level of analysis: 'basic', 'detailed', or 'comprehensive'.", + "required": false, + "defaultValue": "detailed" + }, + { + "name": "affectedSystems", + "type": "array", + "description": "List of affected system identifiers or asset names mentioned in the incident.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing root cause analysis, exploited vulnerabilities, impact summary, timeline reconstruction, and optional mitigation recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when provided with an incident report and related data to generate a structured comprehensive analysis that summarizes the security breach, identifies causes, affected components, and suggests next steps to remediate and prevent future incidents.", + "limitations": "The tool depends on the quality and completeness of the input incident report and logs; it cannot access external systems or verify data authenticity. It is not a real-time detection engine but an analysis assistant after incidents occur.", + "examples": [ + "\"Analyze this incident report and identify root causes and affected systems.\"", + "\"Given logs and incident summary, provide a detailed impact analysis and mitigation suggestions.\"", + "\"Perform a comprehensive incident investigation based on the provided structured incident data.\"" + ] + }, + "tags": [ + "analysis", + "security", + "incident", + "content-creation", + "investigation", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"incidentReport\":\"On 2024-04-10, unauthorized access was detected on server X. Suspicious login attempts were logged repeatedly from IP 192.168.1.100.\",\"logs\":[\"Failed login from 192.168.1.100 at 10:15AM\",\"Successful login from 192.168.1.100 at 10:20AM\"],\"includeMitigation\":true,\"analysisDepth\":\"detailed\",\"affectedSystems\":[\"server X\"]}", + "description": "Analyze a textual incident report with relevant logs to find root causes and recommend mitigation." + }, + { + "inputJson": "{\"incidentReport\":\"A phishing email was received by multiple employees causing credential compromises.\",\"includeMitigation\":true,\"analysisDepth\":\"basic\",\"affectedSystems\":[\"employee workstations\"]}", + "description": "Basic analysis of a phishing incident from summary input." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Incident", + "context": null + } + }, + { + "name": "content-creation.uploadCSV", + "description": "Uploads a CSV file to a specified remote storage or API endpoint, optionally validating its format and applying column mappings. Accepts CSV content as a string or file path, performs optional validation of required columns, and returns a status object indicating success or detailed error messages.", + "category": "content-creation", + "parameters": [ + { + "name": "csvContent", + "type": "string", + "description": "The content of the CSV file as a UTF-8 encoded string to be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "filePath", + "type": "string", + "description": "Local file path to read the CSV content from if csvContent is not provided. Either csvContent or filePath must be provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "destinationUrl", + "type": "string", + "description": "The remote URL or API endpoint where the CSV file should be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Optional authentication token or API key used for authorizing the upload request.", + "required": false, + "defaultValue": "" + }, + { + "name": "requiredColumns", + "type": "array", + "description": "List of column names that must be present in the CSV; the tool validates these before uploading.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "columnMappings", + "type": "object", + "description": "Optional object mapping source column names to target names to rename columns automatically during upload.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "validateFormat", + "type": "boolean", + "description": "Whether to validate the CSV format and required columns before uploading. Defaults to true.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the upload status (success/failure), number of rows uploaded, and error messages if any." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically upload CSV data to remote storage or APIs, ensuring the CSV meets specified schema requirements before upload. Ideal for automations that push tabular data or reports to data warehouses or cloud endpoints.", + "limitations": "This tool does not perform deep content validation beyond column presence or rename columns; it does not parse large CSVs in chunks or support resumable uploads. It requires the destination endpoint to accept file uploads via HTTP POST or PUT.", + "examples": [ + "Upload a CSV string to a cloud storage endpoint with required columns validation.", + "Upload a local CSV file to a remote API with a column rename mapping and authentication token.", + "Validate that the CSV contains mandatory columns before uploading it." + ] + }, + "tags": [ + "upload", + "CSV", + "content-creation", + "data-integration", + "file-upload" + ], + "examples": [ + { + "inputJson": "{\"csvContent\":\"name,email,age\\nAlice,alice@example.com,30\\nBob,bob@example.com,25\",\"destinationUrl\":\"https://api.example.com/upload-csv\",\"authToken\":\"Bearer abc123\",\"requiredColumns\":[\"name\",\"email\"],\"validateFormat\":true}", + "description": "Uploads a CSV provided as a string to an API endpoint, validating that 'name' and 'email' columns exist." + }, + { + "inputJson": "{\"filePath\":\"/tmp/data.csv\",\"destinationUrl\":\"https://storage.example.com/upload\",\"validateFormat\":false}", + "description": "Uploads a CSV file located on disk without validating columns, to a storage service endpoint." + }, + { + "inputJson": "{\"csvContent\":\"product,qty\\nWidget,10\\nGadget,20\",\"destinationUrl\":\"https://api.example.com/upload-csv\",\"columnMappings\":{\"qty\":\"quantity\"}}", + "description": "Uploads CSV replacing 'qty' column with 'quantity' during the upload process." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "CSV", + "context": null + } + }, + { + "name": "content-creation.analyzeThread", + "description": "Analyzes a digital communication thread by processing the input messages to extract key topics, sentiment trends, participant engagement, and conversation dynamics. Accepts an array of messages with metadata and produces a structured summary report with insights on overall tone, main subjects, active participants, and interaction patterns.", + "category": "content-creation", + "parameters": [ + { + "name": "messages", + "type": "array", + "description": "An array of message objects representing the thread to analyze. Each object includes sender, timestamp, and message text.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The language code of the messages for accurate text processing (e.g., 'en' for English).", + "required": false, + "defaultValue": "\"en\"" + }, + { + "name": "includeSentiment", + "type": "boolean", + "description": "Whether to analyze and include sentiment trends throughout the thread.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxTopics", + "type": "number", + "description": "Maximum number of key topics to extract from the thread.", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "A summary object detailing main topics, sentiment analysis results, participant engagement metrics, and conversational dynamics insights." + }, + "aiAgent": { + "useCase": "Use this tool when needing to understand the overall content, sentiment, and participation patterns of any communication thread such as chat logs, forum discussions, or email chains. It helps in summarizing large volumes of messages to derive actionable insights for report generation, moderation, or productivity analysis.", + "limitations": "Cannot interpret multimedia content such as images or videos within threads; analysis depends on text quality and completeness of metadata; sentiment analysis may be less accurate for slang, mixed languages, or complex sarcasm.", + "examples": [ + "Analyze the latest support chat to find common user complaints and agent responsiveness.", + "Provide an overview of sentiment and key topics in the recent project discussion thread.", + "Summarize participant activity and tone in the customer feedback emails." + ] + }, + "tags": [ + "analysis", + "content-creation", + "communication", + "thread", + "sentiment-analysis", + "topic-extraction", + "participant-engagement" + ], + "examples": [ + { + "inputJson": "{\"messages\":[{\"sender\":\"alice\",\"timestamp\":\"2024-06-01T09:15:00Z\",\"text\":\"I think the new feature is great!\"},{\"sender\":\"bob\",\"timestamp\":\"2024-06-01T09:16:00Z\",\"text\":\"I agree, but it needs some improvements.\"},{\"sender\":\"alice\",\"timestamp\":\"2024-06-01T09:17:00Z\",\"text\":\"Which areas do you think could be improved?\"},{\"sender\":\"bob\",\"timestamp\":\"2024-06-01T09:20:00Z\",\"text\":\"The UI responsiveness and color scheme.\"}]}", + "description": "Analyzing a short chat thread for key topics and sentiment trends." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Thread", + "context": null + } + }, + { + "name": "content-creation.analyzeHTML", + "description": "Analyzes provided HTML content to extract structure, count elements, identify inline styles, count accessibility features and detect potential SEO issues. Accepts raw HTML string as input and returns a detailed analysis report with counts, summaries and warnings about content and markup quality.", + "category": "content-creation", + "parameters": [ + { + "name": "htmlContent", + "type": "string", + "description": "Raw HTML content to be analyzed for structure and features.", + "required": true, + "defaultValue": "" + }, + { + "name": "checkAccessibility", + "type": "boolean", + "description": "If true, perform accessibility feature checks and report issues.", + "required": false, + "defaultValue": "true" + }, + { + "name": "checkSEO", + "type": "boolean", + "description": "If true, analyze HTML for common SEO best practices and flag potential problems.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxElementReportCount", + "type": "number", + "description": "Maximum number of unique HTML element types to include in detail in report.", + "required": false, + "defaultValue": "20" + } + ], + "returns": { + "type": "object", + "description": "Structured report including element counts, inline style counts, accessibility feature summary, SEO warnings, and overall HTML structure summary." + }, + "aiAgent": { + "useCase": "This tool is ideal when an agent needs to evaluate raw HTML content for quality, compliance and optimization purposes. For example, it can assess web page fragments or templates to ensure they follow accessibility and SEO best practices, identify excessive use of inline styles, or summarize HTML element usage to guide content optimization or correction.", + "limitations": "Cannot fully validate against HTML specifications or execute dynamic JavaScript-generated content. It works only on static HTML strings and may not catch all SEO or accessibility issues which require deeper contextual analysis or live page testing.", + "examples": [ + "Analyze this HTML snippet for element usage, accessibility, and SEO warnings.", + "Check if this web page HTML content has excessive inline styles or missing accessibility attributes.", + "Provide a summary report of all HTML elements and potential SEO problems from this content." + ] + }, + "tags": [ + "content-analysis", + "html", + "accessibility", + "seo", + "content-quality", + "web-development" + ], + "examples": [ + { + "inputJson": "{\"htmlContent\":\"Test

Welcome

Hello world

\",\"checkAccessibility\":true,\"checkSEO\":true,\"maxElementReportCount\":10}", + "description": "Analyze a small HTML snippet for accessibility and SEO issues including missing img alt attribute and inline styles." + }, + { + "inputJson": "{\"htmlContent\":\"\",\"checkAccessibility\":false,\"checkSEO\":false,\"maxElementReportCount\":5}", + "description": "Quick analysis of basic HTML with no accessibility or SEO checks." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "HTML", + "context": null + } + }, + { + "name": "content-creation.buildInstance", + "description": "Creates and configures a new digital content instance on a specified platform. Accepts parameters such as content type, template ID, custom metadata, and access controls, then provisions the instance accordingly and returns the instance ID and status.", + "category": "content-creation", + "parameters": [ + { + "name": "contentType", + "type": "string", + "description": "Type of content instance to create, e.g., blogPost, videoChannel, or podcastSeries.", + "required": true, + "defaultValue": "" + }, + { + "name": "templateId", + "type": "string", + "description": "Identifier of the template to use for the content instance layout and structure.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Custom metadata key-value pairs describing the content instance, such as tags or description.", + "required": false, + "defaultValue": "" + }, + { + "name": "accessControl", + "type": "object", + "description": "Access control settings defining user roles and permissions for the instance.", + "required": false, + "defaultValue": "" + }, + { + "name": "region", + "type": "string", + "description": "Geographical region or data center where the instance will be hosted.", + "required": false, + "defaultValue": "us-east-1" + }, + { + "name": "autoPublish", + "type": "boolean", + "description": "Whether to automatically publish the content instance upon creation.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the unique instanceId, creationStatus (success/failure), and additional details such as URL or error messages." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically provision a new digital content instance for various content types, applying specified templates and access policies, to accelerate content platform setup.", + "limitations": "This tool does not handle actual content creation or content editing within the instance; it only provisions the infrastructure and configuration for the instance.", + "examples": [ + "Create a new blogPost instance with SEO optimized template and restricted editing permissions.", + "Build a podcastSeries instance in the EU region with public access.", + "Provision a videoChannel instance with custom metadata and auto-publish enabled." + ] + }, + "tags": [ + "content-creation", + "instance-provisioning", + "digital-content", + "template", + "configuration", + "automation" + ], + "examples": [ + { + "inputJson": "{\"contentType\":\"blogPost\",\"templateId\":\"tpl-1234\",\"metadata\":{\"title\":\"Tech Trends 2024\",\"tags\":[\"technology\",\"trends\"]},\"accessControl\":{\"roles\":{\"editor\":[\"user1\",\"user2\"],\"viewer\":[\"user3\"]}},\"region\":\"eu-west-1\",\"autoPublish\":false}", + "description": "Provision a blog post content instance with a specified template and access control roles in the EU region without auto-publishing." + }, + { + "inputJson": "{\"contentType\":\"podcastSeries\",\"templateId\":\"pod-temp-v2\",\"metadata\":{\"title\":\"History Hour\",\"description\":\"Weekly history podcast.\"},\"accessControl\":{\"roles\":{\"admin\":[\"producer\"]}},\"autoPublish\":true}", + "description": "Create and auto-publish a podcast series instance using a podcast template with admin access to the producer role." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Instance", + "context": null + } + }, + { + "name": "content-creation.buildQuery", + "description": "Constructs structured database or API query strings based on provided parameters such as filters, sorting options, selected fields, and pagination. It accepts query criteria in a structured object form, processes them to form a syntactically correct query string compatible with SQL-like or REST API query languages, and returns the generated query string ready for execution or further use.", + "category": "content-creation", + "parameters": [ + { + "name": "filters", + "type": "object", + "description": "Key-value pairs representing field names and their filter conditions to apply in the query (e.g., {\"status\":\"active\",\"age\":{\">=\":30}}).", + "required": false, + "defaultValue": "" + }, + { + "name": "selectFields", + "type": "array", + "description": "List of fields to include in the query result. If empty or omitted, defaults to selecting all fields.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "sortOptions", + "type": "array", + "description": "Array of objects defining sorting preferences, each with 'field' and 'direction' (asc or desc).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "pagination", + "type": "object", + "description": "Object containing pagination parameters: 'page' (number) and 'pageSize' (number) to limit query results.", + "required": false, + "defaultValue": "" + }, + { + "name": "queryType", + "type": "string", + "description": "Type of query to build, e.g., 'SQL', 'REST', or 'GraphQL' to format the query string accordingly.", + "required": false, + "defaultValue": "SQL" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated query string under the key 'queryString', and optionally the query syntax 'queryType'." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically generate dynamic and complex queries for databases or APIs by specifying criteria like filters, sorting, fields, and pagination. It is useful for agents constructing backend requests or data retrieval commands without manually writing query syntax.", + "limitations": "Cannot execute or validate the generated queries against a live database or API; it only formats query strings based on provided parameters. Complex nested queries or joins may require manual adjustments.", + "examples": [ + "Build a SQL query selecting 'name' and 'email' of users where status is 'active', sorted by 'createdDate' descending, with pagination page 2 size 50.", + "Create a REST API query string to filter products by category 'electronics' and price greater than 100, sorted by price ascending.", + "Generate a GraphQL query for fetching user id and posts with filters on posts' published date." + ] + }, + "tags": [ + "query", + "database", + "API", + "content-creation", + "dynamic generation", + "filtering", + "sorting", + "pagination" + ], + "examples": [ + { + "inputJson": "{\"filters\":{\"status\":\"active\"},\"selectFields\":[\"name\",\"email\"],\"sortOptions\":[{\"field\":\"createdDate\",\"direction\":\"desc\"}],\"pagination\":{\"page\":2,\"pageSize\":50},\"queryType\":\"SQL\"}", + "description": "Build a paginated SQL query retrieving name and email of active users, sorted by creation date descending." + }, + { + "inputJson": "{\"filters\":{\"category\":\"electronics\",\"price\":{\"gt\":100}},\"selectFields\":[\"id\",\"name\",\"price\"],\"sortOptions\":[{\"field\":\"price\",\"direction\":\"asc\"}],\"pagination\":{},\"queryType\":\"REST\"}", + "description": "Construct a REST API query string filtering electronics category with price greater than 100, sorted by ascending price." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Query", + "context": null + } + }, + { + "name": "content-creation.sendComment", + "description": "Sends a comment to a specified digital content platform or system such as a blog, social media post, or internal collaboration tool. Accepts parameters including targetId (content to comment on), commentText, optional authorName, and flags for formatting or moderation. Returns confirmation of comment submission with status and commentId if successful.", + "category": "content-creation", + "parameters": [ + { + "name": "targetId", + "type": "string", + "description": "Unique identifier of the content item to which the comment will be posted", + "required": true, + "defaultValue": "" + }, + { + "name": "commentText", + "type": "string", + "description": "The text content of the comment to be sent", + "required": true, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "Optional name to be associated with the comment author", + "required": false, + "defaultValue": "" + }, + { + "name": "formattingOptions", + "type": "object", + "description": "Optional object specifying formatting preferences such as rich text or markdown usage", + "required": false, + "defaultValue": "{}" + }, + { + "name": "moderationFlag", + "type": "boolean", + "description": "Optional flag indicating if the comment should be submitted for moderation before posting", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object indicating submission success or failure, the assigned comment ID if successful, and an optional message explaining errors or status." + }, + "aiAgent": { + "useCase": "This tool is useful for AI agents tasked with automating user engagement by posting comments on articles, posts, or collaborative documents. It should be used when the agent needs to programmatically add commentary, feedback, or discussion responses in various content systems that support comments.", + "limitations": "This tool cannot generate the comment content itself; it only sends comments provided to it. It does not guarantee comment approval if moderation systems reject submissions. It also cannot retrieve or edit existing comments.", + "examples": [ + "Post a supportive comment on a blog article with a specified author name.", + "Submit a comment containing feedback with markdown formatting enabled.", + "Send a comment flagged for moderation on an internal collaboration post." + ] + }, + "tags": [ + "send", + "comment", + "content-creation", + "engagement", + "social", + "moderation", + "feedback" + ], + "examples": [ + { + "inputJson": "{\"targetId\":\"post12345\",\"commentText\":\"Great insights on your latest article!\",\"authorName\":\"AI Bot\",\"formattingOptions\":{},\"moderationFlag\":false}", + "description": "Sending a plain comment with author name to a blog post." + }, + { + "inputJson": "{\"targetId\":\"issue6789\",\"commentText\":\"*Please refer to the attached logs.*\",\"authorName\":\"DevBot\",\"formattingOptions\":{\"markdown\":true},\"moderationFlag\":false}", + "description": "Sending a markdown formatted comment in a collaborative issue tracker." + }, + { + "inputJson": "{\"targetId\":\"doc234\",\"commentText\":\"Please review this paragraph carefully.\",\"authorName\":\"ReviewerAI\",\"formattingOptions\":{},\"moderationFlag\":true}", + "description": "Sending a comment flagged for moderation on a shared document." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Comment", + "context": null + } + }, + { + "name": "documentation-tools.analyzeQuote", + "description": "Analyzes a given quote text to extract key sentiments, themes, and relevance to specified topics. Accepts quote text and optional context keywords, performs natural language processing to identify sentiment polarity, main themes, and potential impact, returning a structured summary with sentiment score, theme list, and contextual relevance indications.", + "category": "documentation-tools", + "parameters": [ + { + "name": "quoteText", + "type": "string", + "description": "The quote text to analyze for sentiment, themes, and relevance.", + "required": true, + "defaultValue": "" + }, + { + "name": "contextKeywords", + "type": "array", + "description": "Optional list of keywords or topics to assess the quote's relevance against.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "language", + "type": "string", + "description": "The language of the quote text to aid accurate analysis, e.g., 'en' for English.", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeSentimentScore", + "type": "boolean", + "description": "Whether to include a detailed numeric sentiment score in the output.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the sentiment polarity (positive, neutral, negative), a numeric sentimentScore if requested, an array of detected themes, and a relevance map indicating the presence of context keywords in the quote." + }, + "aiAgent": { + "useCase": "Use this tool when needing to understand the emotional tone and main conceptual themes within a quote or short excerpt, especially when integrating quotes into documentation or content requiring tone-aware presentation. It helps in assessing quote impact and matching quotes to topics or themes in documents.", + "limitations": "This tool focuses on short quote texts and may not perform well on long paragraphs or ambiguous language. It does not provide author or source attribution accuracy. Sarcasm or complex linguistic nuances might be misinterpreted.", + "examples": [ + "Analyze the sentiment and themes of a motivational quote.", + "Check if a quote relates to teamwork and innovation.", + "Extract key emotions from a historical quote for documentation context." + ] + }, + "tags": [ + "analysis", + "documentation", + "quotes", + "sentiment-analysis", + "text-mining", + "theme-extraction" + ], + "examples": [ + { + "inputJson": "{\"quoteText\":\"The only way to do great work is to love what you do.\",\"contextKeywords\":[\"work\",\"passion\"],\"language\":\"en\",\"includeSentimentScore\":true}", + "description": "Analyze a motivational quote with keywords 'work' and 'passion' to extract sentiment and relevance." + }, + { + "inputJson": "{\"quoteText\":\"Success is not final, failure is not fatal: It is the courage to continue that counts.\",\"contextKeywords\":[\"success\",\"failure\",\"courage\"],\"language\":\"en\",\"includeSentimentScore\":false}", + "description": "Analyze an inspirational quote focusing on success, failure, and courage keywords, without numeric sentiment score." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Quote", + "context": null + } + }, + { + "name": "documentation-tools.downloadVideo", + "description": "Downloads a video from a specified URL for documentation purposes. The tool accepts a video URL and optional parameters such as maximum download size and format preference. It performs validation on the URL, attempts to download the video within constraints, and outputs the video file stored locally or accessible via a path or URL.", + "category": "documentation-tools", + "parameters": [ + { + "name": "videoUrl", + "type": "string", + "description": "The URL of the video to be downloaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "maxFileSizeMb", + "type": "number", + "description": "Maximum allowable file size in megabytes for the video download to prevent excessively large downloads.", + "required": false, + "defaultValue": "100" + }, + { + "name": "preferredFormat", + "type": "string", + "description": "Preferred video format to download (e.g., mp4, webm). The tool tries to download the video in this format if available.", + "required": false, + "defaultValue": "mp4" + }, + { + "name": "savePath", + "type": "string", + "description": "Local file system path where the downloaded video will be saved. If empty, defaults to a temporary directory.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeSubtitles", + "type": "boolean", + "description": "Whether to attempt to also download the video subtitles or captions if available.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the local file path of the downloaded video, file size in bytes, and format info. If subtitles were downloaded, includes subtitle file path." + }, + "aiAgent": { + "useCase": "Use this tool when needing to download video content from the web for integration in documentation, training materials, or offline review, particularly when video examples or tutorials must be embedded or referenced locally.", + "limitations": "Cannot download videos from sites with strict DRM protections or requiring authentication beyond simple URL access. Does not convert videos between formats if preferred format not available. Dependent on internet connectivity and the video's availability.", + "examples": [ + "Download the mp4 video from the specified tutorial URL saving it locally for embedding in the documentation.", + "Download a short demonstration video under 50MB from a public link without subtitles.", + "Download a webm video with subtitles included and save it to the specified directory." + ] + }, + "tags": [ + "download", + "video", + "documentation", + "media", + "offline", + "media-download" + ], + "examples": [ + { + "inputJson": "{\"videoUrl\":\"https://example.com/videos/tutorial.mp4\",\"maxFileSizeMb\":200,\"preferredFormat\":\"mp4\",\"savePath\":\"/docs/videos/\",\"includeSubtitles\":true}", + "description": "Download an MP4 tutorial video up to 200MB with subtitles, saving it in the documentation videos folder." + }, + { + "inputJson": "{\"videoUrl\":\"https://video-host.com/sample.webm\",\"preferredFormat\":\"webm\",\"includeSubtitles\":false}", + "description": "Download a WEBM video from a public source without subtitles, saving to a default temp location." + }, + { + "inputJson": "{\"videoUrl\":\"https://media.example.org/demo.mp4\",\"maxFileSizeMb\":50,\"includeSubtitles\":false}", + "description": "Download an MP4 demo video limited to 50MB in file size without subtitles." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Video", + "context": null + } + }, + { + "name": "documentation-tools.analyzeVulnerability", + "description": "Analyzes software vulnerability documentation to assess completeness, clarity, and risk description. Accepts raw vulnerability text or structured vulnerability documents, processes linguistic and content aspects, and outputs an evaluation report highlighting unclear sections, missing details, and recommendations to improve documentation quality.", + "category": "documentation-tools", + "parameters": [ + { + "name": "vulnerabilityDocument", + "type": "string", + "description": "Raw text or structured content of vulnerability documentation to analyze, including description, impact, and mitigation details.", + "required": true, + "defaultValue": "" + }, + { + "name": "documentFormat", + "type": "string", + "description": "Format of the input document, e.g., 'text', 'markdown', 'json'. Helps tailor parsing and analysis methods.", + "required": false, + "defaultValue": "text" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the documentation content, e.g., 'en', to optimize linguistic analysis.", + "required": false, + "defaultValue": "en" + }, + { + "name": "focusAreas", + "type": "array", + "description": "Specific aspects to focus analysis on, such as ['completeness','clarity','riskSeverity','mitigationDetails'].", + "required": false, + "defaultValue": "[\"completeness\",\"clarity\",\"riskSeverity\",\"mitigationDetails\"]" + }, + { + "name": "severityThreshold", + "type": "string", + "description": "The minimal severity level (e.g., 'medium') to flag as high risk within the analysis output.", + "required": false, + "defaultValue": "medium" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "Whether to include improvement suggestions in the output report.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the overall evaluation summary, identified issues with locations in text or structure, risk assessment details, and recommended actions to improve the vulnerability documentation." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent encounters vulnerability documentation that needs quality assessment before use in security reports or advisories. It helps validate and enhance documentation by identifying vague, incomplete, or inconsistent information, ensuring end-users get reliable and actionable vulnerability details.", + "limitations": "Cannot replace subject matter expert review or verify technical accuracy of vulnerability content. Analysis is limited to text quality, structure, and consistency rather than vulnerability validity.", + "examples": [ + "Analyze a given CVE description for clarity and risk severity explanation.", + "Evaluate markdown formatted vulnerability report focusing on mitigation completeness.", + "Review JSON-based vulnerability details to highlight missing impact or affected components sections." + ] + }, + "tags": [ + "documentation", + "vulnerability", + "analysis", + "security", + "quality-assessment" + ], + "examples": [ + { + "inputJson": "{\"vulnerabilityDocument\":\"CVE-2024-12345: A buffer overflow in the XYZ component allows remote attackers to execute arbitrary code. Impact details are minimal.\",\"documentFormat\":\"text\",\"language\":\"en\",\"focusAreas\":[\"completeness\",\"clarity\"],\"severityThreshold\":\"medium\",\"includeRecommendations\":true}", + "description": "Analyze a plain text CVE summary to identify missing impact information and clarity issues." + }, + { + "inputJson": "{\"vulnerabilityDocument\":\"# Vulnerability Report\\n## Description\\nRemote code execution vulnerability in ABC module.\\n## Impact\\nPotential data breach due to improper validation.\\n## Mitigation\\nUpdate to version 1.2.3.\",\"documentFormat\":\"markdown\",\"language\":\"en\",\"focusAreas\":[\"completeness\",\"mitigationDetails\"],\"severityThreshold\":\"low\",\"includeRecommendations\":true}", + "description": "Assess markdown formatted vulnerability documentation for completeness of mitigation details." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Vulnerability", + "context": null + } + }, + { + "name": "documentation-tools.analyzeExpense", + "description": "Analyzes expense-related documentation such as invoices, receipts, and expense reports to extract key financial information. Accepts documents in text or PDF format, processes them with OCR and NLP techniques to identify expense categories, amounts, dates, and vendors, and produces structured expense summaries with anomalies or inconsistencies highlighted.", + "category": "documentation-tools", + "parameters": [ + { + "name": "documentContent", + "type": "string", + "description": "The raw text content or OCR-extracted text from the expense document to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "documentFormat", + "type": "string", + "description": "The format of the input document, e.g., 'pdf', 'text', or 'image'. Determines processing method.", + "required": true, + "defaultValue": "" + }, + { + "name": "expenseCategories", + "type": "array", + "description": "List of predefined expense categories to classify expenses against (e.g., travel, meals, office supplies).", + "required": false, + "defaultValue": "[\"Travel\", \"Meals\", \"Office Supplies\", \"Lodging\", \"Transportation\", \"Misc\"]" + }, + { + "name": "detectAnomalies", + "type": "boolean", + "description": "Whether to detect anomalies such as duplicate expenses or unusually high amounts.", + "required": false, + "defaultValue": "true" + }, + { + "name": "currency", + "type": "string", + "description": "The currency code (e.g., USD, EUR) to normalize expense amounts. Defaults to 'USD'.", + "required": false, + "defaultValue": "USD" + } + ], + "returns": { + "type": "object", + "description": "Structured analysis report including detected expenses with categories, amounts, dates, vendors, and any anomalies found." + }, + "aiAgent": { + "useCase": "Use this tool when you need to process raw or scanned expense documents to extract structured financial data useful for audit, reimbursement, or accounting automation. It helps convert unstructured text or images into actionable expense reports automatically.", + "limitations": "Cannot interpret handwritten expense details reliably. Accuracy depends on quality of OCR text extraction and predefined expense categories. Does not perform currency conversion beyond normalization of codes.", + "examples": [ + "Analyze an invoice PDF to extract expense line items with categories.", + "Review a batch of expense receipts in image format for duplicates and irregular amounts.", + "Summarize an expense report text file highlighting expenses outside predefined categories." + ] + }, + "tags": [ + "documentation", + "expense", + "financial-analysis", + "OCR", + "NLP", + "automation" + ], + "examples": [ + { + "inputJson": "{\"documentContent\":\"Invoice Date: 2024-04-10\\nVendor: Office Supplies Inc.\\nItem: Paper reams\\nAmount: 120.50\\nCategory: Office Supplies\",\"documentFormat\":\"text\",\"expenseCategories\":[\"Office Supplies\",\"Travel\",\"Meals\"],\"detectAnomalies\":true,\"currency\":\"USD\"}", + "description": "Analyze a plain text invoice to extract expense details and classify under given categories." + }, + { + "inputJson": "{\"documentContent\":\"\",\"documentFormat\":\"pdf\",\"expenseCategories\":[\"Travel\",\"Lodging\",\"Meals\"],\"detectAnomalies\":true,\"currency\":\"USD\"}", + "description": "Analyze a PDF receipt for travel expenses and identify any anomalies such as duplicates or unusually high charges." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Expense", + "context": null + } + }, + { + "name": "documentation-tools.analyzeYAML", + "description": "This tool accepts a YAML formatted string or file input and performs analysis to detect syntax errors, validate against optional schema definitions, and identify common documentation structure issues. It outputs a detailed report listing errors, warnings, and structural insights to assist in improving YAML-based documentation files.", + "category": "documentation-tools", + "parameters": [ + { + "name": "yamlContent", + "type": "string", + "description": "The YAML content as a string to be analyzed for syntax and structural validation.", + "required": true, + "defaultValue": "" + }, + { + "name": "schemaDefinition", + "type": "string", + "description": "An optional YAML or JSON schema string to validate the YAML content against for conformity.", + "required": false, + "defaultValue": "" + }, + { + "name": "checkDeprecatedKeys", + "type": "boolean", + "description": "Flag to enable detection of deprecated or discouraged keys in the YAML content based on common best practices.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxWarnings", + "type": "number", + "description": "Maximum number of warnings to report in the analysis output. Excess warnings are truncated.", + "required": false, + "defaultValue": "50" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing arrays of errors, warnings, and informational notes about the YAML content, including line numbers and messages." + }, + "aiAgent": { + "useCase": "Use this tool when needing to analyze YAML files primarily used for documentation purposes, such as config files, metadata files, or API documentation specs, to ensure they are syntactically correct and structurally sound. It helps identify errors, validate against optional schemas, and highlight potential documentation best practice issues.", + "limitations": "This tool does not perform semantic validation beyond schema checks and does not fix issues automatically. It relies on user-provided schemas for content validation and cannot generate schemas. It does not analyze non-YAML documentation formats.", + "examples": [ + "Analyze a documentation YAML file to report syntax errors and structural warnings.", + "Validate a YAML content string against a provided JSON schema.", + "Check a YAML file for any deprecated keys used in the documentation format." + ] + }, + "tags": [ + "yaml", + "documentation", + "validation", + "syntax-check", + "schema-validation", + "lint", + "analysis" + ], + "examples": [ + { + "inputJson": "{\"yamlContent\":\"title: Sample API\\ndescription: This is a sample API spec\\nversion: 1.0.0\\npaths:\\n /users:\\n get:\\n summary: Get Users\\n responses:\\n 200:\\n description: Successful response\\n\",\"schemaDefinition\":\"\",\"checkDeprecatedKeys\":true,\"maxWarnings\":10}", + "description": "Analyze a simple API documentation YAML string to check syntax and for deprecated keys." + }, + { + "inputJson": "{\"yamlContent\":\"title: Project Documentation\\ninvalid_yaml: [unclosed sequence\\n\",\"schemaDefinition\":\"\",\"checkDeprecatedKeys\":false}", + "description": "Analyze YAML content with syntax error to detect and report it." + }, + { + "inputJson": "{\"yamlContent\":\"key: value\\n\",\"schemaDefinition\":\"{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"key\\\":{\\\"type\\\":\\\"string\\\"}},\\\"required\\\":[\\\"key\\\"]}\",\"checkDeprecatedKeys\":false}", + "description": "Validate simple YAML content against a provided JSON schema definition." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "YAML", + "context": null + } + }, + { + "name": "documentation-tools.sendThread", + "description": "Sends a communication thread as a message to a specified recipient or group within a documentation or collaboration platform. Accepts thread content, recipient details, and optional metadata, then posts the thread accordingly, returning confirmation and message ID.", + "category": "documentation-tools", + "parameters": [ + { + "name": "threadContent", + "type": "string", + "description": "The complete content of the communication thread to send, including text and possible formatting.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientId", + "type": "string", + "description": "Identifier of the primary recipient (user or group) to whom the thread will be sent.", + "required": true, + "defaultValue": "" + }, + { + "name": "subject", + "type": "string", + "description": "Optional subject or title of the communication thread being sent.", + "required": false, + "defaultValue": "" + }, + { + "name": "attachments", + "type": "array", + "description": "List of URLs or encoded data of attachments to include with the thread message.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "metadata", + "type": "object", + "description": "Additional optional metadata such as tags, priority level, or timestamps associated with the thread.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing confirmation status, unique message or thread ID, and timestamp of sending." + }, + "aiAgent": { + "useCase": "Use this tool when automating the sending of discussion threads or messages within a documentation system, team collaboration platform, or knowledge base. It enables structured communication by delivering complete threads to intended recipients programmatically during workflow automation or notification dispatch.", + "limitations": "This tool does not compose or generate thread content; it solely sends prepared thread content to specified recipients. It does not handle real-time chat interactions or message edits after sending.", + "examples": [ + "Send a new discussion thread summarizing a project update to a team group.", + "Dispatch a thread containing important documentation changes to specific users.", + "Share a thread with attachments and metadata tags to a project collaborators list." + ] + }, + "tags": [ + "send", + "communication", + "documentation", + "thread", + "collaboration", + "messaging" + ], + "examples": [ + { + "inputJson": "{\"threadContent\":\"Please review the updated API documentation attached.\",\"recipientId\":\"team123\",\"subject\":\"API Docs Update\",\"attachments\":[\"https://docs.example.com/api/v2/update.pdf\"],\"metadata\":{\"priority\":\"high\"}}", + "description": "Send an updated API documentation thread with a PDF attachment to a team identified by 'team123' with high priority." + }, + { + "inputJson": "{\"threadContent\":\"Discussion thread on feature rollout plan.\",\"recipientId\":\"user456\",\"subject\":\"Feature Rollout\",\"attachments\":[],\"metadata\":{}}", + "description": "Send a simple discussion thread about feature rollout to an individual user 'user456' with no attachments or extra metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Thread", + "context": null + } + }, + { + "name": "data-analytics.uploadCSV", + "description": "Uploads a CSV file for analysis by accepting CSV content or a file path, processes the data by validating and parsing it into structured format, and outputs a summary of data columns and row count to facilitate further analytic operations.", + "category": "data-analytics", + "parameters": [ + { + "name": "csvContent", + "type": "string", + "description": "Raw CSV data content as a string to be parsed and analyzed.", + "required": false, + "defaultValue": "" + }, + { + "name": "filePath", + "type": "string", + "description": "Local or accessible path to a CSV file to upload and parse for analysis.", + "required": false, + "defaultValue": "" + }, + { + "name": "delimiter", + "type": "string", + "description": "Character used to separate values in the CSV, defaults to comma (,).", + "required": false, + "defaultValue": "," + }, + { + "name": "hasHeader", + "type": "boolean", + "description": "Indicates if the first row contains headers; affects parsing and output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxRows", + "type": "number", + "description": "Maximum number of rows to upload and parse for preview or analysis. If 0, upload all rows.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing parsed column names (array of strings), row count (number of data rows uploaded), and an optional sample of the first few rows as array of arrays." + }, + "aiAgent": { + "useCase": "Use this tool when an agent needs to ingest tabular data from CSV format for downstream analysis or visualization. It allows flexible input via direct CSV content or file paths, supports common CSV variations like different delimiters and header presence, and outputs structured data summaries for efficient processing.", + "limitations": "This tool does not perform data cleansing, transformation, or deep validation beyond basic CSV parsing. It cannot handle extremely large files due to memory constraints and does not support remote file fetching beyond provided accessible paths.", + "examples": [ + "Upload CSV content string representing sales data for quick analysis.", + "Upload a CSV file located at /tmp/data.csv to parse columns and preview data.", + "Specify a semicolon as delimiter when uploading CSV content that uses semicolons instead of commas." + ] + }, + "tags": [ + "data-upload", + "csv", + "data-ingestion", + "analytics-preparation", + "tabular-data" + ], + "examples": [ + { + "inputJson": "{\"csvContent\":\"name,age,salary\\nAlice,30,70000\\nBob,25,48000\",\"delimiter\":\",\",\"hasHeader\":true,\"maxRows\":10}", + "description": "Uploading CSV content string with header to parse and preview small dataset." + }, + { + "inputJson": "{\"filePath\":\"/data/sales.csv\",\"delimiter\":\",\",\"hasHeader\":true,\"maxRows\":1000}", + "description": "Uploading CSV data from a file path to analyze sales data with standard comma delimiter and headers." + }, + { + "inputJson": "{\"csvContent\":\"id;score;passed\\n1;88;true\\n2;76;false\",\"delimiter\":\";\",\"hasHeader\":true,\"maxRows\":0}", + "description": "Uploading CSV content using semicolon delimiter and parsing all rows with header." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "CSV", + "context": null + } + }, + { + "name": "data-analytics.renderWord", + "description": "This tool accepts a single word as input and renders it as an image visualization applying customizable style parameters such as font, size, color, background, and text effects. It processes the input text and styling options to produce a styled graphic representation suitable for data visualization dashboards, reports, or presentations.", + "category": "data-analytics", + "parameters": [ + { + "name": "word", + "type": "string", + "description": "The single word text to be rendered visually.", + "required": true, + "defaultValue": "" + }, + { + "name": "fontFamily", + "type": "string", + "description": "The font family to use for rendering the word (e.g., Arial, Times New Roman).", + "required": false, + "defaultValue": "Arial" + }, + { + "name": "fontSize", + "type": "number", + "description": "Font size in pixels for the rendered word.", + "required": false, + "defaultValue": "48" + }, + { + "name": "fontColor", + "type": "string", + "description": "Hex code or named color for the word's text color.", + "required": false, + "defaultValue": "#000000" + }, + { + "name": "backgroundColor", + "type": "string", + "description": "Hex code or named color for the background behind the word.", + "required": false, + "defaultValue": "#FFFFFF" + }, + { + "name": "bold", + "type": "boolean", + "description": "Whether to render the word in bold style.", + "required": false, + "defaultValue": "false" + }, + { + "name": "italic", + "type": "boolean", + "description": "Whether to render the word in italic style.", + "required": false, + "defaultValue": "false" + }, + { + "name": "textEffect", + "type": "string", + "description": "Optional text effect to apply such as 'shadow', 'outline', or 'glow'.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the rendered image in base64 PNG format and metadata about the rendering." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert a text word into a styled visual graphic for embedding in data analytics reports, dashboards, or presentations. It is useful for highlighting key terms or labels with visual emphasis using customizable font and style parameters.", + "limitations": "Cannot render phrases or multiple words at once. Does not generate interactive or animated graphics. Limited to static image output in PNG format.", + "examples": [ + "Render the word 'Revenue' in bold italic with a blue font color and drop shadow.", + "Generate a large red word 'Growth' on a transparent background with outline effect.", + "Create a simple black word 'Data' in standard Arial font on white background." + ] + }, + "tags": [ + "rendering", + "text-visualization", + "font-style", + "image-generation", + "data-presentation", + "word-art" + ], + "examples": [ + { + "inputJson": "{\"word\":\"Profit\",\"fontFamily\":\"Verdana\",\"fontSize\":60,\"fontColor\":\"#2E8B57\",\"backgroundColor\":\"#FFFFFF\",\"bold\":true,\"italic\":false,\"textEffect\":\"shadow\"}", + "description": "Render the word 'Profit' in a large green Verdana font with bold weight and a subtle shadow on white background." + }, + { + "inputJson": "{\"word\":\"Growth\",\"fontFamily\":\"Helvetica\",\"fontSize\":48,\"fontColor\":\"#FF4500\",\"backgroundColor\":\"#000000\",\"bold\":false,\"italic\":true,\"textEffect\":\"outline\"}", + "description": "Render the italic word 'Growth' in bright orange Helvetica with an outline effect on black background." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Word", + "context": null + } + }, + { + "name": "data-analytics.sendComment", + "description": "This tool accepts parameters specifying a target data insight report or dashboard, a user identifier, and a text comment to send as feedback or annotation. It processes the input by associating the comment with the specified report and user, storing it in the system, and returns a confirmation with comment ID and timestamp. Useful for collaborative data analysis environments.", + "category": "data-analytics", + "parameters": [ + { + "name": "reportId", + "type": "string", + "description": "Unique identifier of the data report or dashboard to which the comment is attached.", + "required": true, + "defaultValue": "" + }, + { + "name": "userId", + "type": "string", + "description": "Identifier of the user submitting the comment.", + "required": true, + "defaultValue": "" + }, + { + "name": "commentText", + "type": "string", + "description": "Text content of the comment to send.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "Optional ISO 8601 timestamp representing when the comment was made. Defaults to current time if blank.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Optional list of tags or keywords related to the comment for categorization or filtering.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing confirmation of the comment submission, including a unique comment ID, the associated report ID, user ID, comment text, timestamp, and any assigned tags." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically post user or system-generated comments on specific data reports or dashboards during collaborative data analytics. It enables annotation, feedback, or discussion tied directly to data insights, facilitating communication within analytical workflows.", + "limitations": "This tool does not analyze or interpret the comment text content, nor does it perform moderation or sentiment analysis. It only stores and returns comment metadata.", + "examples": [ + "Add a comment to report ID 'rpt-123' from user 'user-789' saying 'Please review the anomaly in Q3 sales'.", + "Attach the comment 'Needs further segmentation analysis' to dashboard 'dash-456' by user 'analyst01'.", + "Send a tagged comment with tags ['urgent','review'] on report 'rpt-234' from user 'user42'." + ] + }, + "tags": [ + "comment", + "feedback", + "data-report", + "collaboration", + "annotation", + "communication" + ], + "examples": [ + { + "inputJson": "{\"reportId\":\"rpt-123\",\"userId\":\"user-789\",\"commentText\":\"Please review the anomaly in Q3 sales.\"}", + "description": "Send a basic comment to a report identifying a sales anomaly." + }, + { + "inputJson": "{\"reportId\":\"dash-456\",\"userId\":\"analyst01\",\"commentText\":\"Needs further segmentation analysis\",\"tags\":[\"analysis\",\"segmentation\"]}", + "description": "Send a comment with tags on a dashboard requesting additional analysis." + }, + { + "inputJson": "{\"reportId\":\"rpt-234\",\"userId\":\"user42\",\"commentText\":\"Urgent: Check data source integrity.\",\"timestamp\":\"2024-06-01T10:15:00Z\",\"tags\":[\"urgent\",\"review\"]}", + "description": "Send an urgent comment with timestamp and tags to a report." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Comment", + "context": null + } + }, + { + "name": "data-analytics.formatEndpoint", + "description": "Formats raw endpoint analytics data into a standardized JSON or CSV structure for easier consumption and visualization. Accepts raw endpoint response times, error rates, and traffic metrics. Processes the data by normalizing timestamps, rounding numeric values, and structuring nested endpoint details. Outputs formatted data as a JSON object or CSV string depending on parameters.", + "category": "data-analytics", + "parameters": [ + { + "name": "rawData", + "type": "object", + "description": "Raw endpoint analytics data containing metrics like response times, error counts, and request volumes.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format: 'json' for structured JSON object or 'csv' for CSV formatted string.", + "required": false, + "defaultValue": "json" + }, + { + "name": "roundDecimals", + "type": "number", + "description": "Number of decimal places to round numeric metrics to for readability. Defaults to no rounding if zero or omitted.", + "required": false, + "defaultValue": "2" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "When outputFormat is 'csv', whether to include header row with column names.", + "required": false, + "defaultValue": "true" + }, + { + "name": "timestampFormat", + "type": "string", + "description": "Format string to normalize timestamps within the data. If empty, ISO 8601 format is used.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Formatted endpoint analytics data returned either as a JSON object with nested metrics or a string if CSV format is requested." + }, + "aiAgent": { + "useCase": "Use this tool when an agent receives raw, inconsistent endpoint analytics data and needs to reformat it into structured, clean JSON or CSV to feed into visualization tools or reports. Ideal for normalizing timestamps, rounding values, and transforming complex nested metrics into flat or hierarchical structured formats without data loss.", + "limitations": "Cannot validate the correctness of metric values or augment missing data; only formats existing input. Does not analyze or interpret metrics beyond basic rounding and timestamp normalization.", + "examples": [ + "Format raw endpoint performance data into JSON for dashboard ingestion.", + "Convert raw metrics into CSV with headers for export to spreadsheet.", + "Round numeric values to 1 decimal place and output as JSON." + ] + }, + "tags": [ + "data-analytics", + "formatting", + "endpoint", + "json", + "csv", + "metrics", + "visualization" + ], + "examples": [ + { + "inputJson": "{\"rawData\":{\"endpoints\":[{\"url\":\"/api/user\",\"responseTimeMs\":123.4567,\"errorRate\":0.0234,\"timestamp\":\"2024-06-15T12:34:56.789Z\"},{\"url\":\"/api/order\",\"responseTimeMs\":234.5678,\"errorRate\":0.0456,\"timestamp\":\"2024-06-15T12:35:56.789Z\"}]},\"outputFormat\":\"json\",\"roundDecimals\":2,\"timestampFormat\":\"\"}", + "description": "Format raw endpoint data into JSON, rounding numbers to 2 decimals, using default ISO 8601 timestamps." + }, + { + "inputJson": "{\"rawData\":{\"endpoints\":[{\"url\":\"/api/user\",\"responseTimeMs\":123.4567,\"errorRate\":0.0234,\"timestamp\":\"2024-06-15T12:34:56.789Z\"},{\"url\":\"/api/order\",\"responseTimeMs\":234.5678,\"errorRate\":0.0456,\"timestamp\":\"2024-06-15T12:35:56.789Z\"}]},\"outputFormat\":\"csv\",\"roundDecimals\":1,\"includeHeaders\":true}", + "description": "Format raw endpoint data into CSV with headers, rounding numbers to 1 decimal place." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Endpoint", + "context": null + } + }, + { + "name": "data-analytics.draftWord", + "description": "Generates a context-aware, data-related word or short phrase based on provided data insights, topics, or themes. Accepts an optional theme or keyword and outputs a relevant analytical term or concise descriptor to assist in summarizing or labeling data topics.", + "category": "data-analytics", + "parameters": [ + { + "name": "theme", + "type": "string", + "description": "Optional keyword or theme to guide the word generation relevant to the data context.", + "required": false, + "defaultValue": "" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum character length of the generated word or phrase.", + "required": false, + "defaultValue": "15" + }, + { + "name": "includeIndustryJargon", + "type": "boolean", + "description": "Whether to include specialized industry-specific terms in the output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated word or phrase and a confidence score indicating relevance to the provided theme." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a concise, meaningful word or phrase that summarizes or labels a specific data insight, theme, or analytical concept. This helps in creating summaries, labels, or tags for data reports or visualizations.", + "limitations": "Cannot generate full explanations, longer text descriptions, or highly creative content unrelated to data analysis contexts. Limited to single words or short phrases.", + "examples": [ + "Generate a concise word summarizing customer churn insights.", + "Draft a label for sales growth analytics.", + "Create a short phrase that reflects environmental data trends." + ] + }, + "tags": [ + "data", + "analytics", + "word-generation", + "labeling", + "summarization", + "content-creation" + ], + "examples": [ + { + "inputJson": "{\"theme\":\"customer retention\",\"maxLength\":12,\"includeIndustryJargon\":true}", + "description": "Generate a concise analytical term related to customer retention including industry jargon." + }, + { + "inputJson": "{\"theme\":\"sales growth\",\"maxLength\":10,\"includeIndustryJargon\":false}", + "description": "Draft a short phrase capturing the essence of sales growth without industry jargon." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Word", + "context": null + } + }, + { + "name": "data-analytics.formatSummary", + "description": "Formats a raw data summary object into a structured textual report or customizable format. Accepts summary data as input, applies optional styling and verbosity rules, and outputs a formatted string suitable for presentation or documentation purposes.", + "category": "data-analytics", + "parameters": [ + { + "name": "summaryData", + "type": "object", + "description": "The raw summary data object containing metrics, statistics, and analysis results to format.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatStyle", + "type": "string", + "description": "The desired output format style, such as 'plain', 'markdown', or 'html' to control styling and layout.", + "required": false, + "defaultValue": "\"plain\"" + }, + { + "name": "includeSections", + "type": "array", + "description": "List of summary sections to include in the output, e.g., ['overview','statistics','insights']. Empty array includes all.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "verbosityLevel", + "type": "number", + "description": "Controls the detail level in the formatted summary: 1=minimal, 5=very detailed.", + "required": false, + "defaultValue": "\"3\"" + }, + { + "name": "customHeaders", + "type": "object", + "description": "An optional mapping of section keys to custom header titles to override defaults.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "An object containing a single 'formattedSummary' string with the fully formatted textual report ready for display or export." + }, + "aiAgent": { + "useCase": "Use this tool when you have a data summary object derived from analytics or reports and need to produce a cleanly formatted, readable textual document for stakeholders or presentations. Ideal for converting raw JSON summary data into human-friendly markdown, HTML, or plain text reports with configurable detail and sections.", + "limitations": "Cannot generate visual charts or graphs, only textual formatted summaries. Does not perform analytics calculations or data aggregation, only formats existing summary data.", + "examples": [ + "Format a summary JSON into a markdown report with detailed verbosity.", + "Generate a plain text summary including only the overview and insights sections.", + "Output an HTML formatted summary with custom headers for presentation." + ] + }, + "tags": [ + "formatting", + "data-summary", + "reporting", + "text-generation", + "presentation" + ], + "examples": [ + { + "inputJson": "{\"summaryData\":{\"overview\":\"Sales increased by 15%\",\"statistics\":{\"totalSales\":15000,\"regionBreakdown\":{\"North\":8000,\"South\":7000}},\"insights\":\"Growth driven mainly by North region.\"},\"formatStyle\":\"markdown\",\"includeSections\":[\"overview\",\"insights\"],\"verbosityLevel\":4,\"customHeaders\":{\"overview\":\"Executive Summary\",\"insights\":\"Key Insights\"}}", + "description": "Format a sales summary to markdown including only overview and insights with custom headers." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Summary", + "context": null + } + }, + { + "name": "data-analytics.formatModule", + "description": "Formats source code modules by parsing and reformatting them according to specified style conventions. Accepts code as input along with language and style preferences, processes the formatting, and returns the cleaned, consistently styled module code output.", + "category": "data-analytics", + "parameters": [ + { + "name": "code", + "type": "string", + "description": "The source code of the module to be formatted", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language of the source code (e.g., 'javascript', 'python')", + "required": true, + "defaultValue": "" + }, + { + "name": "styleGuide", + "type": "string", + "description": "Formatting style guide to apply (e.g., 'prettier', 'eslint', 'pep8')", + "required": false, + "defaultValue": "prettier" + }, + { + "name": "indentSize", + "type": "number", + "description": "Number of spaces to use for indentation", + "required": false, + "defaultValue": "2" + }, + { + "name": "useTabs", + "type": "boolean", + "description": "Whether to use tabs instead of spaces for indentation", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxLineLength", + "type": "number", + "description": "Maximum line length before wrapping", + "required": false, + "defaultValue": "80" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted code string and optionally a report of formatting changes or errors." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to standardize or clean source code modules to ensure consistent style and improve readability before analysis or visualization. It is especially useful when handling code snippets from diverse sources that vary in formatting.", + "limitations": "This tool formats code syntax and style but does not perform semantic code analysis or fix logical errors. It supports commonly used programming languages but may not support all language dialects or proprietary syntax.", + "examples": [ + "Format a JavaScript module to prettier style with 4 spaces indents", + "Reformat a Python script according to PEP8 guidelines", + "Standardize indentation and line length of code before visualization" + ] + }, + "tags": [ + "formatting", + "code", + "module", + "style", + "data-analytics", + "code-quality", + "visualization-prep" + ], + "examples": [ + { + "inputJson": "{\"code\":\"function foo( ) {console.log('bar');}\",\"language\":\"javascript\",\"styleGuide\":\"prettier\",\"indentSize\":2,\"useTabs\":false,\"maxLineLength\":80}", + "description": "Format a simple JavaScript function using Prettier style with 2 space indents." + }, + { + "inputJson": "{\"code\":\"def foo():\\n print('bar')\",\"language\":\"python\",\"styleGuide\":\"pep8\",\"indentSize\":4,\"useTabs\":false,\"maxLineLength\":79}", + "description": "Reformat a Python function according to PEP8 with 4 space indentation and line length 79." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Module", + "context": null + } + }, + { + "name": "data-analytics.formatCSV", + "description": "Formats CSV data string by applying customizable options such as delimiter, quote character, newline characters, and trimming whitespace. Accepts raw CSV text input and returns a cleaned and consistently formatted CSV string for downstream processing or export.", + "category": "data-analytics", + "parameters": [ + { + "name": "csvData", + "type": "string", + "description": "Raw CSV data as a string input to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "delimiter", + "type": "string", + "description": "Character used to separate fields in the CSV, such as comma or semicolon.", + "required": false, + "defaultValue": "," + }, + { + "name": "quoteChar", + "type": "string", + "description": "Character used to quote fields containing special characters (e.g., double quote).", + "required": false, + "defaultValue": "\"" + }, + { + "name": "trimWhitespace", + "type": "boolean", + "description": "Flag to trim leading and trailing whitespace from each field.", + "required": false, + "defaultValue": "true" + }, + { + "name": "newlineChar", + "type": "string", + "description": "Character(s) used to separate lines, e.g., \\n or \\r\\n.", + "required": false, + "defaultValue": "\\n" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to keep the first row as headers or treat all rows as data.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "string", + "description": "Formatted CSV data string according to the specified options, normalized delimiters, quotes, line breaks, and trimming." + }, + "aiAgent": { + "useCase": "Use this tool when needing to ensure CSV data adheres to consistent formatting standards before analysis, ingestion into systems sensitive to CSV format, or exporting standardized CSV files. It is ideal for cleaning raw CSV text that might have inconsistent delimiters, spacing, or quoting.", + "limitations": "This tool does not parse CSV into structured data formats like JSON or objects; it only reformats raw CSV strings. It cannot fix corrupted or malformed CSV data that breaks fundamental CSV structure.", + "examples": [ + "Format CSV text with semicolon delimiters and no quotes for export.", + "Trim whitespace and unify newlines in raw CSV data fetched from an untrusted source.", + "Standardize CSV with double quotes and commas as delimiter for a reporting pipeline." + ] + }, + "tags": [ + "data-analytics", + "csv", + "formatting", + "data-cleaning", + "preprocessing" + ], + "examples": [ + { + "inputJson": "{\"csvData\":\"Name , Age , Location \\n Alice , 30 , New York \\n Bob , 25 , Los Angeles\",\"delimiter\":\",\",\"quoteChar\":\"\\\"\",\"trimWhitespace\":true,\"newlineChar\":\"\\n\",\"includeHeaders\":true}", + "description": "Formats CSV with trimmed whitespace, comma delimiter, and default quotes." + }, + { + "inputJson": "{\"csvData\":\"ID;Name;Score\\n1;John Doe;88\\n2;Jane Smith;94\",\"delimiter\":\";\",\"quoteChar\":\"\",\"trimWhitespace\":false,\"newlineChar\":\"\\r\\n\",\"includeHeaders\":true}", + "description": "Formats semicolon-delimited CSV changing newline to Windows style without quotes." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "CSV", + "context": null + } + }, + { + "name": "data-analytics.buildVariable", + "description": "Creates a new variable from an existing dataset by applying transformation logic such as arithmetic operations, conditional statements, or aggregation. Accepts JSON-formatted dataset and transformation instructions, processes the data accordingly, and outputs the dataset with the newly constructed variable included.", + "category": "data-analytics", + "parameters": [ + { + "name": "dataset", + "type": "array", + "description": "An array of objects representing the rows of the dataset, with key-value pairs for each field. Required to perform transformations.", + "required": true, + "defaultValue": "" + }, + { + "name": "variableName", + "type": "string", + "description": "The name of the new variable to be added to each data record.", + "required": true, + "defaultValue": "" + }, + { + "name": "transformationLogic", + "type": "string", + "description": "A string expression defining the transformation to create the new variable, which may include arithmetic operations, field references, and conditional logic in a simple expression language.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The format of the output dataset; typically 'array' for array of objects or 'json' for JSON string. Defaults to 'array'.", + "required": false, + "defaultValue": "array" + }, + { + "name": "filterCondition", + "type": "string", + "description": "Optional conditional expression to filter dataset rows before applying the transformation.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the updated dataset with the new variable added to each row, in specified output format." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to derive new insights or features from existing structured data by adding computed variables based on logical or mathematical expressions. It helps augment data for analytics or machine learning tasks by creating variables that do not originally exist.", + "limitations": "This tool cannot perform complex multi-step data processing pipelines or advanced statistical operations beyond user-provided transformation logic. It also assumes that input data is well-formed and transformations are syntactically correct.", + "examples": [ + "Create a new variable 'totalCost' by multiplying 'quantity' and 'unitPrice'.", + "Add a variable 'discounted' that is true if 'purchaseAmount' exceeds 100.", + "Filter dataset to only 'region' == 'North' and create variable 'salesTax' as 10% of 'amount'." + ] + }, + "tags": [ + "data transformation", + "variable creation", + "feature engineering", + "dataset augmentation", + "analytics" + ], + "examples": [ + { + "inputJson": "{\"dataset\":[{\"quantity\":5,\"unitPrice\":20},{\"quantity\":3,\"unitPrice\":15}],\"variableName\":\"totalCost\",\"transformationLogic\":\"quantity * unitPrice\",\"outputFormat\":\"array\"}", + "description": "Compute 'totalCost' as the product of quantity and unitPrice for each record." + }, + { + "inputJson": "{\"dataset\":[{\"purchaseAmount\":120},{\"purchaseAmount\":80}],\"variableName\":\"discounted\",\"transformationLogic\":\"purchaseAmount > 100\",\"outputFormat\":\"array\"}", + "description": "Add a boolean variable 'discounted' indicating if purchaseAmount exceeds 100." + }, + { + "inputJson": "{\"dataset\":[{\"region\":\"North\",\"amount\":200},{\"region\":\"South\",\"amount\":150}],\"variableName\":\"salesTax\",\"transformationLogic\":\"amount * 0.1\",\"filterCondition\":\"region == 'North'\",\"outputFormat\":\"array\"}", + "description": "Filter rows where region is 'North', then add 'salesTax' as 10% of amount in those rows." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Variable", + "context": null + } + }, + { + "name": "data-analytics.buildInstance", + "description": "Builds a configurable data analytics instance based on user specifications. Accepts parameters defining data sources, transformation steps, storage options, and visualization preferences. Processes these inputs to set up an analytics environment and outputs a summary of the created instance including endpoints and configuration details.", + "category": "data-analytics", + "parameters": [ + { + "name": "instanceName", + "type": "string", + "description": "Unique name for the analytics instance to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataSources", + "type": "array", + "description": "List of data source configurations specifying connection details and types.", + "required": true, + "defaultValue": "" + }, + { + "name": "transformations", + "type": "array", + "description": "Ordered list of data transformation steps to apply to the data sources.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "storageConfig", + "type": "object", + "description": "Configuration details for data storage, including type and access credentials.", + "required": true, + "defaultValue": "" + }, + { + "name": "visualizationConfig", + "type": "object", + "description": "Settings for desired visualization tools and dashboard options.", + "required": false, + "defaultValue": "" + }, + { + "name": "enableRealtime", + "type": "boolean", + "description": "Flag to enable real-time data processing and updating capabilities.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxComputeUnits", + "type": "number", + "description": "Maximum compute units allocated for the instance to manage performance and cost.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "An object containing the instance ID, configuration summary, active endpoints, and access information." + }, + "aiAgent": { + "useCase": "This tool is ideal when an AI agent needs to programmatically provision a customized analytics environment tailored to specific data sources and user requirements. It helps automate infrastructure setup for data ingestion, transformation, storage, and visualization, ensuring rapid deployment of analytic capabilities.", + "limitations": "It cannot automatically optimize transformations or select the best data sources without user input. It does not manage instance scaling beyond the initial maxComputeUnits parameter and does not handle post-deployment monitoring or error remediation.", + "examples": [ + "Create an instance named 'SalesDashboard', connected to SQL and CSV data sources, with standard transformation steps, using cloud storage, and enable real-time updates.", + "Build an instance that processes IoT sensor data with custom transformation, outputs to a local database, and configures visualizations for anomaly detection.", + "Set up an analytics instance with maxComputeUnits=20, integrating multiple data lakes and enabling dashboard visualizations with caching enabled." + ] + }, + "tags": [ + "data-analytics", + "infrastructure", + "instance", + "provisioning", + "automation", + "visualization", + "transformation" + ], + "examples": [ + { + "inputJson": "{\"instanceName\":\"SalesDashboard\",\"dataSources\":[{\"type\":\"sql\",\"connectionString\":\"Server=myServer;Database=myDB;User Id=myUser;Password=myPass;\"},{\"type\":\"csv\",\"filePath\":\"s3://bucket/sales_data.csv\"}],\"transformations\":[{\"step\":\"cleanse\",\"params\":{\"method\":\"remove_nulls\"}},{\"step\":\"aggregate\",\"params\":{\"groupBy\":\"region\",\"metric\":\"sum\"}}],\"storageConfig\":{\"type\":\"cloud\",\"provider\":\"AWS\",\"bucket\":\"analytics-results\"},\"visualizationConfig\":{\"tool\":\"Tableau\",\"dashboardId\":\"db123\"},\"enableRealtime\":true,\"maxComputeUnits\":15}", + "description": "Build a SalesDashboard instance integrating SQL and CSV data with cleansing and aggregation, storing results in AWS, enabling real-time updates." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Instance", + "context": null + } + }, + { + "name": "data-analytics.buildComponent", + "description": "Builds reusable data visualization or dashboard components based on input datasets and configuration parameters. Accepts structured data and component specifications, processes them to create interactive or static visual components, and outputs code or configuration objects ready for integration into data analytics applications.", + "category": "data-analytics", + "parameters": [ + { + "name": "data", + "type": "array", + "description": "Array of data objects representing structured dataset to visualize or analyze. Must be provided for component construction.", + "required": true, + "defaultValue": "" + }, + { + "name": "componentType", + "type": "string", + "description": "Type of component to build such as 'barChart', 'lineGraph', 'table', or 'dashboardPanel'. Determines visualization style.", + "required": true, + "defaultValue": "" + }, + { + "name": "config", + "type": "object", + "description": "Configuration object specifying component properties like colors, labels, axes, filters, and interactivity options.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format: 'reactComponent', 'jsonSchema', or 'htmlSnippet'. Defines how the built component is returned.", + "required": false, + "defaultValue": "reactComponent" + }, + { + "name": "theme", + "type": "string", + "description": "Optional theme name to apply styling consistent with existing UI/branding, e.g. 'dark', 'light'.", + "required": false, + "defaultValue": "light" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the generated component code or configuration, including metadata such as component type and applied configuration." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically generate data visualization or dashboard components from raw datasets for inclusion in analytics platforms or apps. Ideal for automating UI generation or customizing visual components based on dynamic data inputs.", + "limitations": "This tool does not perform data cleaning or statistical analysis; it assumes input data is preprocessed and suitable for visualization. It also does not render the components but returns code or schema for rendering externally.", + "examples": [ + "Build a bar chart component from sales data with custom color settings.", + "Create a dashboard panel showing key performance indicators from given metrics.", + "Generate a React component for a line graph visualizing monthly revenues." + ] + }, + "tags": [ + "data", + "analytics", + "visualization", + "component", + "dashboard", + "chart", + "code-generation", + "ui" + ], + "examples": [ + { + "inputJson": "{\"data\":[{\"month\":\"Jan\",\"sales\":100},{\"month\":\"Feb\",\"sales\":150}],\"componentType\":\"barChart\",\"config\":{\"color\":\"#FF0000\",\"xAxis\":\"month\",\"yAxis\":\"sales\"},\"outputFormat\":\"reactComponent\",\"theme\":\"dark\"}", + "description": "Build a dark-themed React bar chart component for monthly sales data with red bars." + }, + { + "inputJson": "{\"data\":[{\"metric\":\"Revenue\",\"value\":1000},{\"metric\":\"Profit\",\"value\":200}],\"componentType\":\"dashboardPanel\",\"config\":{\"showLegend\":true},\"outputFormat\":\"jsonSchema\"}", + "description": "Generate a JSON schema for a dashboard panel showing revenue and profit with legends." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Component", + "context": null + } + }, + { + "name": "data-analytics.draftContract", + "description": "This tool assists in drafting a contract document based on input parameters such as contract parties, terms, clauses, and duration. It processes structured input data to generate a coherent, legal-style contract draft text output, suitable for review and further customization.", + "category": "data-analytics", + "parameters": [ + { + "name": "partyOneName", + "type": "string", + "description": "Full name of the first contracting party (individual or organization).", + "required": true, + "defaultValue": "" + }, + { + "name": "partyTwoName", + "type": "string", + "description": "Full name of the second contracting party (individual or organization).", + "required": true, + "defaultValue": "" + }, + { + "name": "contractDurationMonths", + "type": "number", + "description": "Length of the contract in months.", + "required": true, + "defaultValue": "" + }, + { + "name": "contractStartDate", + "type": "string", + "description": "Contract start date in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "paymentTerms", + "type": "string", + "description": "Description of payment terms agreed between parties.", + "required": false, + "defaultValue": "" + }, + { + "name": "confidentialityClause", + "type": "boolean", + "description": "Whether to include a confidentiality clause in the contract.", + "required": false, + "defaultValue": "false" + }, + { + "name": "terminationConditions", + "type": "string", + "description": "Conditions under which the contract can be terminated by either party.", + "required": false, + "defaultValue": "" + }, + { + "name": "additionalClauses", + "type": "array", + "description": "Array of additional custom clauses to include as strings.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated contract draft as a string under the key 'contractText'." + }, + "aiAgent": { + "useCase": "Use this tool when drafting preliminary contract documents between two parties by providing essential details such as party names, contract length, payment terms, and clauses to automate initial contract creation. It helps quickly produce a structured draft that can be reviewed and edited by legal professionals.", + "limitations": "Does not replace professional legal advice. The generated contract draft may lack jurisdiction-specific legal enforceability or complex legal provisions requiring expert review.", + "examples": [ + "Draft a service agreement contract for 12 months starting from 2024-07-01 between Acme Corp and Beta LLC including payment terms and confidentiality clause.", + "Generate a contract draft for a 6-month consulting agreement between John Doe and XYZ Inc. with termination conditions specified.", + "Create a basic partnership contract for an 18-month duration starting 2024-01-15 between Alpha Ltd and Omega Partners with custom additional clauses." + ] + }, + "tags": [ + "document-generation", + "contract-drafting", + "legal", + "automation", + "data-analytics" + ], + "examples": [ + { + "inputJson": "{\"partyOneName\":\"Acme Corporation\",\"partyTwoName\":\"Beta LLC\",\"contractDurationMonths\":12,\"contractStartDate\":\"2024-07-01\",\"paymentTerms\":\"Monthly payment of USD 5,000 within 15 days of invoice receipt.\",\"confidentialityClause\":true,\"terminationConditions\":\"Either party may terminate with 30 days written notice.\",\"additionalClauses\":[\"Dispute resolution via arbitration.\",\"All intellectual property remains with Acme Corporation.\"]}", + "description": "Draft a 1-year contract starting July 1, 2024 with payment, confidentiality, termination, and custom clauses included." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Contract", + "context": null + } + }, + { + "name": "data-analytics.generateReference", + "description": "Generates detailed reference documentation for a dataset or data analytics report by analyzing metadata, statistical summaries, and visualizations. Accepts structured data inputs and outputs formatted reference content including variable definitions, data sources, and summary statistics.", + "category": "data-analytics", + "parameters": [ + { + "name": "dataset", + "type": "object", + "description": "The structured dataset or data summary object to generate reference documentation for, including metadata and statistical information.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeVisualizations", + "type": "boolean", + "description": "Whether to include references to visualizations (charts, graphs) in the generated reference content.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "The natural language to use for the generated reference content, e.g., 'en' for English.", + "required": false, + "defaultValue": "en" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The format of the generated reference document; supports 'markdown', 'html', or 'plaintext'.", + "required": false, + "defaultValue": "markdown" + }, + { + "name": "detailedLevel", + "type": "string", + "description": "Level of detail for the reference content: 'summary' for concise, 'detailed' for comprehensive documentation.", + "required": false, + "defaultValue": "summary" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated reference document as a string, along with metadata such as format and length." + }, + "aiAgent": { + "useCase": "Use this tool when needing to automatically generate human-readable reference documentation for data analytics outputs, enabling better understanding and traceability of datasets and analytical results. It is essential for reporting, compliance, and collaboration.", + "limitations": "Cannot replace domain expert interpretation or generate reference documentation without adequate metadata and data summary inputs; visualizations need to be pre-generated and referenced rather than created by this tool.", + "examples": [ + "Generate a markdown reference document for a dataset summarizing sales data including variable definitions and statistics.", + "Create an HTML formatted data reference for a demographic dataset with detailed descriptions and links to charts.", + "Produce a plaintext summary reference describing the columns, data types, and basic statistics of survey results." + ] + }, + "tags": [ + "data", + "analytics", + "reference", + "documentation", + "reporting", + "metadata" + ], + "examples": [ + { + "inputJson": "{\"dataset\":{\"name\":\"SalesData2023\",\"columns\":[{\"name\":\"Date\",\"type\":\"date\",\"description\":\"Date of sale\"},{\"name\":\"Revenue\",\"type\":\"number\",\"description\":\"Sales revenue in USD\"}],\"summaryStats\":{\"Revenue\":{\"mean\":5000,\"min\":1000,\"max\":10000}}},\"includeVisualizations\":true,\"language\":\"en\",\"outputFormat\":\"markdown\",\"detailedLevel\":\"summary\"}", + "description": "Generate a markdown summary reference document for a sales dataset including variable descriptions and summary statistics with visualization references." + }, + { + "inputJson": "{\"dataset\":{\"name\":\"EmployeeSurvey\",\"columns\":[{\"name\":\"Age\",\"type\":\"number\",\"description\":\"Age of respondent\"},{\"name\":\"Satisfaction\",\"type\":\"number\",\"description\":\"Job satisfaction score\"}],\"summaryStats\":{\"Age\":{\"mean\":35,\"min\":22,\"max\":60}}},\"includeVisualizations\":false,\"language\":\"en\",\"outputFormat\":\"plaintext\",\"detailedLevel\":\"detailed\"}", + "description": "Produce a detailed plaintext reference document describing survey data columns and statistics without visualization references." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Reference", + "context": null + } + }, + { + "name": "data-analytics.generateSession", + "description": "Generates a detailed session analytics report based on raw event data input. Accepts user interaction events with timestamps and metadata, processes session segmentation with configurable timeout, and outputs summary metrics including session length, event counts, and user engagement statistics as structured JSON.", + "category": "data-analytics", + "parameters": [ + { + "name": "eventData", + "type": "array", + "description": "Array of user event objects containing timestamps and metadata for session generation.", + "required": true, + "defaultValue": "" + }, + { + "name": "sessionTimeoutMinutes", + "type": "number", + "description": "Time interval in minutes to separate events into different sessions if no activity occurs.", + "required": false, + "defaultValue": "30" + }, + { + "name": "includeUserSegments", + "type": "boolean", + "description": "Flag to include user segment analysis within sessions if user attribute data is provided.", + "required": false, + "defaultValue": "false" + }, + { + "name": "timeZone", + "type": "string", + "description": "Time zone identifier for interpreting timestamps, defaults to UTC if not provided.", + "required": false, + "defaultValue": "UTC" + }, + { + "name": "maxSessions", + "type": "number", + "description": "Maximum number of sessions to generate for performance control; processes all if zero or omitted.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "A structured JSON object summarizing generated sessions with metrics like session durations, event counts, unique users, and optionally segment analysis." + }, + "aiAgent": { + "useCase": "Use this tool when you need to derive session-level analytics from raw event streams, such as web or app user activity logs. It segments continuous user events into sessions, computes engagement metrics, and can optionally perform user segmentation within those sessions, aiding insights into user behavior patterns and engagement timing.", + "limitations": "This tool cannot process incomplete or inconsistently formatted event data and does not perform real-time streaming analytics. It assumes timestamps are accurate and does not infer missing records.", + "examples": [ + "Generate session analytics for web app user events collected over the last day with default 30-minute session timeout.", + "Create sessions from mobile app event logs, setting session timeout to 15 minutes and including user segmentation.", + "Analyze a large batch of user events with a cap of 100 sessions to limit processing time." + ] + }, + "tags": [ + "analytics", + "sessionization", + "user-behavior", + "event-processing", + "data-insights" + ], + "examples": [ + { + "inputJson": "{\"eventData\":[{\"userId\":\"U1\",\"timestamp\":\"2024-06-01T10:00:00Z\",\"eventType\":\"page_view\"},{\"userId\":\"U1\",\"timestamp\":\"2024-06-01T10:10:00Z\",\"eventType\":\"click\"},{\"userId\":\"U1\",\"timestamp\":\"2024-06-01T11:00:00Z\",\"eventType\":\"page_view\"}],\"sessionTimeoutMinutes\":30,\"includeUserSegments\":false,\"timeZone\":\"UTC\",\"maxSessions\":0}", + "description": "Generate sessions from user U1 events with a 30-minute timeout, no user segmentation, and UTC timezone." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Session", + "context": null + } + }, + { + "name": "data-analytics.generateTrend", + "description": "Generates trend analysis from time series or sequential data. Accepts an array of data points with timestamps and values, applies smoothing and statistical methods to identify upward, downward, or stable trends over selected intervals, and outputs a summarized trend report including trend direction, strength, and confidence metrics.", + "category": "data-analytics", + "parameters": [ + { + "name": "data", + "type": "array", + "description": "Array of data points, each including a timestamp and a numeric value to analyze for trends.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestampKey", + "type": "string", + "description": "The key name used in each data point object representing the timestamp (e.g., 'date' or 'time').", + "required": false, + "defaultValue": "timestamp" + }, + { + "name": "valueKey", + "type": "string", + "description": "The key name used in each data point object representing the numeric value to analyze for trends.", + "required": false, + "defaultValue": "value" + }, + { + "name": "trendInterval", + "type": "string", + "description": "The timespan or frequency (e.g., 'daily', 'weekly', 'monthly') over which to aggregate and evaluate the trend.", + "required": false, + "defaultValue": "daily" + }, + { + "name": "smoothingMethod", + "type": "string", + "description": "The smoothing technique to reduce noise before trend detection, options include 'movingAverage', 'exponential', or 'none'.", + "required": false, + "defaultValue": "movingAverage" + }, + { + "name": "confidenceLevel", + "type": "number", + "description": "Statistical confidence level (0 to 1) to quantify the reliability of the detected trend.", + "required": false, + "defaultValue": "0.95" + }, + { + "name": "detectSeasonality", + "type": "boolean", + "description": "Whether to attempt identifying and adjusting for seasonal patterns during trend analysis.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object summarizing the detected trend including direction ('upward', 'downward', 'stable'), strength (numeric score), confidence (probability), and optionally seasonality info." + }, + "aiAgent": { + "useCase": "Use this tool to analyze time-series datasets to automatically identify and summarize trends across specified intervals. Ideal for financial data, sales figures, web analytics, or any timestamped metrics requiring quantitative trend insights. It helps agents understand data evolution without manual statistical expertise.", + "limitations": "This tool assumes moderately clean, timestamped numeric data. It cannot infer causal relationships or predict future data points beyond trend direction. It may be less accurate with highly erratic or sparse data and does not perform full seasonality decomposition beyond basic adjustments.", + "examples": [ + "Identify the monthly sales trend from last year’s daily sales dataset.", + "Detect the trend direction and strength in website daily visitor counts over the past 6 months.", + "Analyze weekly temperature readings to determine if there is an upward or downward trend." + ] + }, + "tags": [ + "data-analytics", + "trend-analysis", + "time-series", + "statistical-analysis", + "business-intelligence", + "visualization-ready" + ], + "examples": [ + { + "inputJson": "{\"data\":[{\"timestamp\":\"2023-01-01\",\"value\":100},{\"timestamp\":\"2023-01-02\",\"value\":105},{\"timestamp\":\"2023-01-03\",\"value\":110},{\"timestamp\":\"2023-01-04\",\"value\":108},{\"timestamp\":\"2023-01-05\",\"value\":115}],\"timestampKey\":\"timestamp\",\"valueKey\":\"value\",\"trendInterval\":\"daily\",\"smoothingMethod\":\"movingAverage\",\"confidenceLevel\":0.95,\"detectSeasonality\":true}", + "description": "Analyze daily sales values over 5 days to detect trend direction and strength." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Trend", + "context": null + } + }, + { + "name": "data-analytics.generateHTML", + "description": "Generates an HTML report from structured data input, applying optional formatting and visualization options. Accepts data in JSON or CSV format, processes it to create tables, charts, and summaries, and outputs a complete HTML string that can be displayed in browsers or embedded in pages.", + "category": "data-analytics", + "parameters": [ + { + "name": "data", + "type": "string", + "description": "The input dataset in JSON array or CSV string format. Required for generating the report.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataFormat", + "type": "string", + "description": "Format of the input data: 'json' or 'csv'. Defaults to 'json'.", + "required": false, + "defaultValue": "json" + }, + { + "name": "includeCharts", + "type": "boolean", + "description": "Whether to include charts in the HTML report to visualize data trends. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "chartType", + "type": "string", + "description": "Type of charts to generate if includeCharts is true. Options: 'bar', 'line', 'pie'. Defaults to 'bar'.", + "required": false, + "defaultValue": "bar" + }, + { + "name": "title", + "type": "string", + "description": "Title of the HTML report to display at the top. Optional.", + "required": false, + "defaultValue": "" + }, + { + "name": "columns", + "type": "array", + "description": "Array of column names to include in the report. If empty, includes all columns. Optional.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Whether to include a summary section with aggregates (sum, average) for numeric columns. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "theme", + "type": "string", + "description": "CSS theme name for styling the report. Example themes: 'light', 'dark'. Defaults to 'light'.", + "required": false, + "defaultValue": "light" + } + ], + "returns": { + "type": "object", + "description": "An object containing the full HTML string of the generated report under 'html' key." + }, + "aiAgent": { + "useCase": "Use this tool when a user requests an interactive or well-formatted HTML report from raw structured data inputs, enabling web display or embedding without manual coding. Ideal for quick visualization and sharing of datasets as HTML pages.", + "limitations": "Cannot process unstructured data formats or extremely large datasets exceeding memory limits. Charts are basic and limited to common types; advanced custom visualizations require separate tools.", + "examples": [ + "Generate an HTML report with bar charts from JSON data of sales records.", + "Create a simple HTML table from CSV data without charts.", + "Produce a dark-themed HTML report summarizing monthly expenses with pie charts." + ] + }, + "tags": [ + "data-analytics", + "html", + "report", + "visualization", + "charts", + "data transformation" + ], + "examples": [ + { + "inputJson": "{\"data\":\"[{\\\"product\\\":\\\"A\\\",\\\"sales\\\":100},{\\\"product\\\":\\\"B\\\",\\\"sales\\\":150}]\",\"dataFormat\":\"json\",\"includeCharts\":true,\"chartType\":\"bar\",\"title\":\"Sales Report\",\"columns\":[\"product\",\"sales\"],\"includeSummary\":true,\"theme\":\"light\"}", + "description": "Generate a sales report with bar chart from JSON data." + }, + { + "inputJson": "{\"data\":\"product,sales\\nA,100\\nB,150\",\"dataFormat\":\"csv\",\"includeCharts\":false,\"title\":\"Sales Table\",\"columns\":[],\"includeSummary\":false,\"theme\":\"light\"}", + "description": "Create a simple HTML table without charts from CSV data." + }, + { + "inputJson": "{\"data\":\"[{\\\"category\\\":\\\"Food\\\",\\\"amount\\\":200},{\\\"category\\\":\\\"Utilities\\\",\\\"amount\\\":150}]\",\"dataFormat\":\"json\",\"includeCharts\":true,\"chartType\":\"pie\",\"title\":\"Monthly Expenses\",\"columns\":[\"category\",\"amount\"],\"includeSummary\":true,\"theme\":\"dark\"}", + "description": "Generate a dark themed report with pie chart for monthly expenses." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "HTML", + "context": null + } + }, + { + "name": "data-analytics.generateChart", + "description": "Generates a visual chart from provided structured data. Accepts data arrays and configuration options, processes the data to create various chart types (e.g., line, bar, pie), and outputs a chart image or embeddable HTML snippet for visualization and reporting purposes.", + "category": "data-analytics", + "parameters": [ + { + "name": "data", + "type": "array", + "description": "An array of data objects representing rows with key-value pairs; required for plotting the chart.", + "required": true, + "defaultValue": "" + }, + { + "name": "chartType", + "type": "string", + "description": "Type of chart to generate (e.g., 'line', 'bar', 'pie', 'scatter').", + "required": true, + "defaultValue": "bar" + }, + { + "name": "title", + "type": "string", + "description": "Title of the chart displayed on top.", + "required": false, + "defaultValue": "" + }, + { + "name": "xAxisKey", + "type": "string", + "description": "Data object key to use for the x-axis values.", + "required": true, + "defaultValue": "" + }, + { + "name": "yAxisKey", + "type": "string", + "description": "Data object key to use for the y-axis values.", + "required": true, + "defaultValue": "" + }, + { + "name": "colorScheme", + "type": "string", + "description": "Color palette name or hex code for the chart elements.", + "required": false, + "defaultValue": "default" + }, + { + "name": "width", + "type": "number", + "description": "Width of the generated chart in pixels.", + "required": false, + "defaultValue": "800" + }, + { + "name": "height", + "type": "number", + "description": "Height of the generated chart in pixels.", + "required": false, + "defaultValue": "600" + }, + { + "name": "showLegend", + "type": "boolean", + "description": "Whether to display the chart legend or not.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing chart output such as a base64 encoded image string or embeddable HTML." + }, + "aiAgent": { + "useCase": "Use this tool when needing to create visual representations of data for reports, dashboards, or exploratory data analysis by converting raw data arrays into customizable chart visuals. Ideal for assisting users to understand data trends, distribution, or comparisons clearly.", + "limitations": "Cannot perform advanced statistical analysis or generate charts from unstructured or non-tabular data formats. Does not support real-time data streaming or interactive chart features beyond static images or basic embeddable HTML.", + "examples": [ + "Generate a bar chart visualizing monthly sales figures from an array of sales data objects.", + "Create a pie chart to show percentage distribution of categories in a dataset.", + "Produce a line chart illustrating temperature changes over time with custom dimensions and color scheme." + ] + }, + "tags": [ + "data-visualization", + "chart-generation", + "reporting", + "analytics", + "image-output", + "customizable", + "static-charts" + ], + "examples": [ + { + "inputJson": "{\"data\":[{\"month\":\"January\",\"sales\":100},{\"month\":\"February\",\"sales\":150}],\"chartType\":\"bar\",\"title\":\"Monthly Sales\",\"xAxisKey\":\"month\",\"yAxisKey\":\"sales\",\"colorScheme\":\"blue\",\"width\":600,\"height\":400,\"showLegend\":true}", + "description": "Generate a blue bar chart showing sales by month with a title and legend." + }, + { + "inputJson": "{\"data\":[{\"category\":\"A\",\"value\":40},{\"category\":\"B\",\"value\":60}],\"chartType\":\"pie\",\"title\":\"Category Distribution\",\"xAxisKey\":\"category\",\"yAxisKey\":\"value\",\"colorScheme\":\"pastel\",\"width\":500,\"height\":500,\"showLegend\":false}", + "description": "Create a pastel-colored pie chart showing category distribution without legend." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Chart", + "context": null + } + }, + { + "name": "data-analytics.createReference", + "description": "Generates a structured reference dataset from input data by identifying key entities and relationships, enabling consistent cross-referencing and annotation in analytics workflows. Accepts raw or semi-structured data, extracts reference points using customizable extraction rules, and outputs a standardized reference object useful for linking datasets or documentation.", + "category": "data-analytics", + "parameters": [ + { + "name": "inputData", + "type": "object", + "description": "The raw data or dataset object from which to extract reference entities and relationships for analysis and annotation.", + "required": true, + "defaultValue": "" + }, + { + "name": "extractionRules", + "type": "object", + "description": "An optional set of rules or patterns to define how references should be identified and extracted from the input data, such as regex patterns or entity definitions.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Flag indicating whether to include metadata such as timestamps, source info, and extraction confidence scores in the output reference structure.", + "required": false, + "defaultValue": "true" + }, + { + "name": "referenceType", + "type": "string", + "description": "Type or category of references to create, e.g., 'entity', 'term', 'code', allowing for specific tailoring of the extraction process.", + "required": false, + "defaultValue": "entity" + } + ], + "returns": { + "type": "object", + "description": "A structured reference object containing identified entities or terms with their attributes, relationships, and optional metadata suitable for data linkage or annotation." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create a consistent and reusable reference framework from complex datasets to enable cross-dataset annotation, linking, and enhanced data analytics. It is especially useful when dealing with semi-structured or unstructured inputs requiring entity extraction and standardization.", + "limitations": "Cannot perform deep semantic understanding or disambiguation beyond rule-based extraction; relies on quality of input data and extraction rules. Not intended to replace full ontology generation tools.", + "examples": [ + "Create a reference of key entities from a product database for linking with sales records.", + "Generate standardized references of technical terms from a semi-structured document corpus.", + "Extract and structure code references from system logs for correlation analysis." + ] + }, + "tags": [ + "data-analytics", + "reference-creation", + "entity-extraction", + "data-linkage", + "annotation", + "standardization" + ], + "examples": [ + { + "inputJson": "{\"inputData\":{\"documents\":[{\"text\":\"Product A has code X123 and is supplied by Supplier Y.\"}]},\"extractionRules\":{\"entityPatterns\":{\"code\":\"X\\\\d{3}\",\"supplier\":\"Supplier [A-Z]\"}},\"includeMetadata\":true,\"referenceType\":\"entity\"}", + "description": "Extract entities such as product codes and suppliers from product documents, including metadata for reference linking." + }, + { + "inputJson": "{\"inputData\":{\"records\":[{\"term\":\"Latency\",\"definition\":\"The delay before a transfer of data begins.\"},{\"term\":\"Bandwidth\",\"definition\":\"The maximum rate of data transfer.\"}]},\"extractionRules\":{},\"includeMetadata\":false,\"referenceType\":\"term\"}", + "description": "Create a reference of technical terms from a dataset of definitions without additional metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Reference", + "context": null + } + }, + { + "name": "data-analytics.createQueue", + "description": "Creates a configurable data processing queue to manage and process data analytics tasks asynchronously. Accepts parameters defining queue capacity, priority handling, and visibility timeout. Returns configuration and status of the created queue for monitoring and management purposes.", + "category": "data-analytics", + "parameters": [ + { + "name": "queueName", + "type": "string", + "description": "The unique name identifier for the queue to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "maxSize", + "type": "number", + "description": "Maximum number of items the queue can hold before rejecting new entries.", + "required": false, + "defaultValue": "1000" + }, + { + "name": "visibilityTimeout", + "type": "number", + "description": "Duration in seconds that a message remains invisible to other consumers after being retrieved by a worker.", + "required": false, + "defaultValue": "30" + }, + { + "name": "enablePriority", + "type": "boolean", + "description": "Whether the queue should support priority-based message processing.", + "required": false, + "defaultValue": "false" + }, + { + "name": "priorityLevels", + "type": "number", + "description": "Number of priority levels if priority is enabled; ignored if enablePriority is false.", + "required": false, + "defaultValue": "3" + } + ], + "returns": { + "type": "object", + "description": "An object containing the details and configuration of the newly created queue, including its name, capacity, timeout settings, and status." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to set up an asynchronous data analytics task handling system, enabling efficient processing of incoming workloads in a controlled and configurable manner, suitable for batch processing or streaming data analytics workloads.", + "limitations": "This tool only creates and configures the queue infrastructure; it does not process or analyze data itself. Does not handle persistent storage or direct execution of data analytics tasks within the queue system.", + "examples": [ + "Create a data analytics queue named 'analyticsTaskQueue' with a max size of 500 and 45 seconds visibility timeout.", + "Create a priority-enabled queue named 'priorityDataQueue' with 5 priority levels to manage critical data processing tasks.", + "Set up a default queue with name 'defaultQueue' using all default parameters for standard task queuing scenarios." + ] + }, + "tags": [ + "queue", + "data analytics", + "asynchronous processing", + "task management", + "infrastructure" + ], + "examples": [ + { + "inputJson": "{\"queueName\":\"analyticsTaskQueue\",\"maxSize\":500,\"visibilityTimeout\":45}", + "description": "Create a queue named 'analyticsTaskQueue' with a maximum size of 500 and visibility timeout of 45 seconds." + }, + { + "inputJson": "{\"queueName\":\"priorityDataQueue\",\"enablePriority\":true,\"priorityLevels\":5}", + "description": "Create a priority-enabled queue 'priorityDataQueue' with 5 priority levels for managing urgent data tasks." + }, + { + "inputJson": "{\"queueName\":\"defaultQueue\"}", + "description": "Create a queue 'defaultQueue' with default size and timeout settings for general task processing." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Queue", + "context": null + } + }, + { + "name": "data-analytics.createThread", + "description": "Creates a data analytics discussion thread based on provided datasets and metrics. Accepts data sources, key metrics, and visualization preferences, then generates a structured communication thread summarizing insights for collaborative analysis.", + "category": "data-analytics", + "parameters": [ + { + "name": "dataSources", + "type": "array", + "description": "List of data source identifiers or URLs to include in the discussion thread.", + "required": true, + "defaultValue": "" + }, + { + "name": "keyMetrics", + "type": "array", + "description": "Array of metric names to focus on for analysis and discussion.", + "required": true, + "defaultValue": "" + }, + { + "name": "visualizationTypes", + "type": "array", + "description": "Preferred types of visualizations (e.g., bar chart, line graph) to include in the thread.", + "required": false, + "defaultValue": "[\"lineGraph\"]" + }, + { + "name": "threadTitle", + "type": "string", + "description": "Title for the discussion thread.", + "required": true, + "defaultValue": "" + }, + { + "name": "participants", + "type": "array", + "description": "List of participant user IDs to invite to the thread.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Whether to generate a summary of key insights at the start of the thread.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the thread ID, a URL link to access the created thread, and a summary of included insights and visualizations." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to initiate a focused communication thread that consolidates relevant data analytics insights, visualizations, and key metrics for team collaboration or reporting. It helps in generating a structured discussion space anchored on given datasets and metrics.", + "limitations": "This tool does not perform deep data analytics or modeling itself; it relies on existing processed data or data sources and cannot replace detailed analysis tools. It also does not handle real-time data updates within threads.", + "examples": [ + "Create a discussion thread for sales data Q1 focusing on revenue and customer acquisition metrics with bar chart visualizations.", + "Generate a data insights thread on user engagement metrics including line graphs and notify the marketing team.", + "Set up a thread summarizing product performance KPIs extracting key metrics and including a summary section." + ] + }, + "tags": [ + "data", + "analytics", + "discussion", + "thread", + "collaboration", + "visualization", + "insights" + ], + "examples": [ + { + "inputJson": "{\"dataSources\":[\"sales_db_Q1\",\"customer_acquisition_reports\"],\"keyMetrics\":[\"revenue\",\"newCustomers\"],\"visualizationTypes\":[\"barChart\",\"lineGraph\"],\"threadTitle\":\"Q1 Sales Data Analysis\",\"participants\":[\"user123\",\"user456\"],\"includeSummary\":true}", + "description": "Create a sales analysis thread focused on revenue and customers with bar and line charts inviting two users." + }, + { + "inputJson": "{\"dataSources\":[\"engagement_metrics_april\"],\"keyMetrics\":[\"activeUsers\",\"sessionLength\"],\"visualizationTypes\":[\"lineGraph\"],\"threadTitle\":\"April User Engagement Report\",\"participants\":[\"marketing_team\"],\"includeSummary\":true}", + "description": "Generate a user engagement insights thread for April with line graph visualization and marketing team participants." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Thread", + "context": null + } + }, + { + "name": "data-analytics.createDeal", + "description": "Creates a detailed business deal record from input parameters including involved parties, terms, financial details, and timeline. Processes the inputs to generate a structured deal summary that can be used for reporting, forecasting, or integration with CRM systems.", + "category": "data-analytics", + "parameters": [ + { + "name": "dealName", + "type": "string", + "description": "The title or name identifier for the deal.", + "required": true, + "defaultValue": "" + }, + { + "name": "partiesInvolved", + "type": "array", + "description": "List of stakeholders or companies involved in the deal.", + "required": true, + "defaultValue": "" + }, + { + "name": "dealValue", + "type": "number", + "description": "The monetary value of the deal in USD or specified currency.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "ISO 8601 format start date of the deal.", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "ISO 8601 format expected end or close date of the deal.", + "required": false, + "defaultValue": "" + }, + { + "name": "dealType", + "type": "string", + "description": "Category or type of the deal (e.g., merger, acquisition, partnership).", + "required": false, + "defaultValue": "partnership" + }, + { + "name": "terms", + "type": "string", + "description": "Summary of key terms and conditions relevant to the deal.", + "required": false, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code for the deal value, e.g., USD, EUR. Default is USD.", + "required": false, + "defaultValue": "USD" + }, + { + "name": "isConfidential", + "type": "boolean", + "description": "Flag indicating if the deal details are confidential.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Structured record representing the created deal including all inputs and a unique deal ID." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to formalize or register new business deals from gathered data or user input to support analytics, reporting, or CRM updates. Ideal for scenarios requiring consistent deal data format and capturing critical deal metadata.", + "limitations": "Does not validate the authenticity or legal enforceability of deal terms. It cannot negotiate or modify deal parameters autonomously.", + "examples": [ + "Create a deal named 'Acquisition of XYZ Corp' involving two parties with a value of $5 million starting next month.", + "Generate a partnership deal record between Company A and Company B lasting two years with specified terms.", + "Record a confidential sales agreement deal for $500,000 with specified start and end dates." + ] + }, + "tags": [ + "data-analytics", + "deal-management", + "business", + "crm", + "financial", + "reporting", + "creation" + ], + "examples": [ + { + "inputJson": "{\"dealName\":\"Acquisition of ABC Ltd\",\"partiesInvolved\":[\"Company X\",\"Company Y\"],\"dealValue\":12000000,\"startDate\":\"2024-07-01\",\"endDate\":\"2025-01-01\",\"dealType\":\"acquisition\",\"terms\":\"All assets transferred upon closure.\",\"currency\":\"USD\",\"isConfidential\":false}", + "description": "Creates an acquisition deal record between two companies with detailed terms." + }, + { + "inputJson": "{\"dealName\":\"Strategic Partnership 2024\",\"partiesInvolved\":[\"Tech Innovators Inc\",\"Global Solutions LLC\"],\"dealValue\":5000000,\"startDate\":\"2024-08-15\",\"dealType\":\"partnership\",\"terms\":\"Joint marketing and development efforts.\",\"currency\":\"USD\",\"isConfidential\":true}", + "description": "Registers a confidential strategic partnership deal with specified value and terms." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Deal", + "context": null + } + }, + { + "name": "data-analytics.createThreat", + "description": "Creates a detailed threat profile by analyzing security event data and contextual inputs. Accepts logs, alerts, and metadata to identify potential threats, estimate severity, affected assets, and recommended mitigation strategies. Outputs a structured threat report highlighting key indicators and risk assessment.", + "category": "data-analytics", + "parameters": [ + { + "name": "securityEvents", + "type": "array", + "description": "An array of security event objects or logs to analyze, each containing timestamp, eventType, source, and other relevant details.", + "required": true, + "defaultValue": "" + }, + { + "name": "contextualData", + "type": "object", + "description": "Additional context about the environment, such as asset inventory, network topology, or user roles to enhance threat analysis.", + "required": false, + "defaultValue": "" + }, + { + "name": "threatType", + "type": "string", + "description": "Specify the type of threat to focus on, e.g., malware, phishing, insider threat; if omitted, all types are analyzed.", + "required": false, + "defaultValue": "" + }, + { + "name": "severityThreshold", + "type": "number", + "description": "Minimum severity score (0-10) for threats to be included in the output report.", + "required": false, + "defaultValue": "0" + }, + { + "name": "includeMitigation", + "type": "boolean", + "description": "Whether to include recommended mitigation steps in the generated threat report.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "A structured threat profile containing identified threat indicators, severity scores, affected assets, timestamps, and recommended mitigation actions, formatted as a JSON object suitable for further security processing or reporting." + }, + "aiAgent": { + "useCase": "Use when security event logs and contextual data are available and a comprehensive threat profile is needed to understand current security risks, prioritize response efforts, or generate reports for cybersecurity teams. Especially useful for analyzing large datasets to identify critical threats and their impact.", + "limitations": "Does not replace expert security analysis; may miss novel or highly sophisticated threats without sufficient input data; relies on the quality and completeness of provided security events and context.", + "examples": [ + "Create a threat profile from the past 24 hours of IDS logs to identify high-risk attacks.", + "Analyze recent security alerts to generate a report focusing on insider threats exceeding medium severity.", + "Generate a threat overview including mitigation recommendations based on firewall and endpoint security events." + ] + }, + "tags": [ + "data-analytics", + "threat-analysis", + "security", + "cybersecurity", + "reporting", + "risk-assessment", + "incident-response" + ], + "examples": [ + { + "inputJson": "{\"securityEvents\":[{\"timestamp\":\"2024-06-01T15:30:00Z\",\"eventType\":\"malware-detected\",\"source\":\"endpoint-01\",\"details\":{\"malwareName\":\"Trojan.Generic\",\"severity\":7}}],\"contextualData\":{\"assets\":[{\"id\":\"endpoint-01\",\"type\":\"workstation\",\"owner\":\"user123\"}]},\"severityThreshold\":5,\"includeMitigation\":true}", + "description": "Analyze malware detection events from endpoint logs to generate a threat report including mitigation advice." + }, + { + "inputJson": "{\"securityEvents\":[{\"timestamp\":\"2024-06-02T10:00:00Z\",\"eventType\":\"phishing-email\",\"source\":\"emailGateway\",\"details\":{\"sender\":\"suspicious@example.com\",\"severity\":6}}],\"threatType\":\"phishing\",\"includeMitigation\":false}", + "description": "Generate a phishing-related threat profile based on email gateway alerts without mitigation recommendations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Threat", + "context": null + } + }, + { + "name": "data-analytics.createSecret", + "description": "Generates a secure, random secret key suitable for encryption or tokenization within data analytics workflows. Accepts parameters to specify secret length, allowed character sets, and encoding format. Returns the generated secret as a string along with metadata including entropy bits and creation timestamp.", + "category": "data-analytics", + "parameters": [ + { + "name": "length", + "type": "number", + "description": "Length of the secret string to generate, measured in characters. Must be >= 8 for security.", + "required": true, + "defaultValue": "32" + }, + { + "name": "includeSymbols", + "type": "boolean", + "description": "Whether to include symbols (e.g., !@#$%) in the secret for added complexity.", + "required": false, + "defaultValue": "true" + }, + { + "name": "encoding", + "type": "string", + "description": "Output encoding format of the secret, such as 'base64', 'hex', or 'ascii'.", + "required": false, + "defaultValue": "base64" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated secret string, entropy in bits, and the ISO timestamp of creation." + }, + "aiAgent": { + "useCase": "Use this tool when generating cryptographically secure secrets or keys needed in data analytics contexts, such as API tokens, encryption keys for sensitive data, or session identifiers. It ensures the secret meets length and complexity requirements for security best practices.", + "limitations": "Does not store or manage the lifecycle of the secret; only generates it. Not intended for generating passwords tailored to human memorability. Does not validate usage context or compliance requirements.", + "examples": [ + "Generate a 64-character base64 secret with symbols for encrypting sensitive analytics data.", + "Create a 16-character hex secret without symbols for a lightweight token.", + "Produce a 48-character ascii secret including symbols for API authentication." + ] + }, + "tags": [ + "security", + "secret-generation", + "encryption", + "data-analytics", + "key-management" + ], + "examples": [ + { + "inputJson": "{\"length\":64,\"includeSymbols\":true,\"encoding\":\"base64\"}", + "description": "Generate a 64-character base64-encoded secret including symbols for strong encryption keys." + }, + { + "inputJson": "{\"length\":16,\"includeSymbols\":false,\"encoding\":\"hex\"}", + "description": "Create a 16-character hexadecimal secret without symbols for lightweight tokens." + }, + { + "inputJson": "{\"length\":48,\"includeSymbols\":true,\"encoding\":\"ascii\"}", + "description": "Produce a 48-character ASCII string with symbols for API authentication secrets." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Secret", + "context": null + } + }, + { + "name": "data-analytics.createHTML", + "description": "Generates an HTML report from structured data input, creating interactive tables, charts, and summaries. Accepts data as JSON objects or CSV strings, processes for visualization, and outputs a complete, standalone HTML string to embed or save as a file for web display.", + "category": "data-analytics", + "parameters": [ + { + "name": "data", + "type": "string", + "description": "Input data in JSON string or CSV format to visualize and include in the HTML report.", + "required": true, + "defaultValue": "" + }, + { + "name": "title", + "type": "string", + "description": "Title of the generated HTML report, displayed as the header.", + "required": false, + "defaultValue": "\"Data Analytics Report\"" + }, + { + "name": "chartTypes", + "type": "array", + "description": "Array of chart types (e.g., bar, line, pie) to include in the report based on data columns.", + "required": false, + "defaultValue": "[\"bar\",\"line\"]" + }, + { + "name": "includeTable", + "type": "boolean", + "description": "Whether to include a data table representation along with charts.", + "required": false, + "defaultValue": "true" + }, + { + "name": "theme", + "type": "string", + "description": "Color theme for the report: 'light' or 'dark'.", + "required": false, + "defaultValue": "\"light\"" + }, + { + "name": "summaryStats", + "type": "boolean", + "description": "Include a summary statistics section with mean, median, and counts for numeric data.", + "required": false, + "defaultValue": "true" + }, + { + "name": "cssStyles", + "type": "string", + "description": "Optional custom CSS styles to embed in the HTML report to override default styling.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object with a single property 'htmlReport' containing the full HTML content string of the report." + }, + "aiAgent": { + "useCase": "Use this tool when needing to transform raw structured data (JSON or CSV) into a user-friendly visual report in HTML format that includes interactive charts and tables for web display or sharing. It suits data insights presentation in dashboards, emails, or static sites without further processing.", + "limitations": "This tool does not support real-time data streaming or extremely large datasets that exceed browser memory limits. It cannot generate reports in formats other than HTML or provide server-side data processing.", + "examples": [ + "Generate an HTML report with bar and pie charts from sales data JSON.", + "Create a dark-themed HTML report including a data table and summary stats from CSV input.", + "Produce a clean HTML page with line charts only using custom CSS to match client branding." + ] + }, + "tags": [ + "data", + "visualization", + "html-report", + "charts", + "tables", + "summary", + "analytics", + "interactive" + ], + "examples": [ + { + "inputJson": "{\"data\":\"[{\\\"month\\\":\\\"Jan\\\", \\\"sales\\\":100},{\\\"month\\\":\\\"Feb\\\", \\\"sales\\\":150}]\",\"title\":\"Monthly Sales Report\",\"chartTypes\":[\"bar\",\"pie\"],\"includeTable\":true,\"theme\":\"light\",\"summaryStats\":true,\"cssStyles\":\"\"}", + "description": "Generate an HTML report with bar and pie charts along with data table and summary for monthly sales data." + }, + { + "inputJson": "{\"data\":\"month,sales\\nJan,100\\nFeb,150\\nMar,200\",\"title\":\"Quarterly Sales\",\"chartTypes\":[\"line\"],\"includeTable\":false,\"theme\":\"dark\",\"summaryStats\":false,\"cssStyles\":\"body { font-family: Arial; }\"}", + "description": "Create a dark-themed HTML report with a line chart from CSV sales data without table and summary stats, including custom CSS." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "HTML", + "context": null + } + }, + { + "name": "data-analytics.createAttachment", + "description": "Creates a media attachment for data analytics reports by embedding visual or document files. Accepts file data or URLs referencing images, PDFs, or charts, validates and processes them, and outputs a structured attachment object suitable for integration into analytic dashboards or reports.", + "category": "data-analytics", + "parameters": [ + { + "name": "attachmentName", + "type": "string", + "description": "The display name for the attachment in the report or analytics dashboard.", + "required": true, + "defaultValue": "" + }, + { + "name": "attachmentType", + "type": "string", + "description": "The type of the attachment, e.g., 'image', 'pdf', or 'chart'. Used to determine processing method.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceData", + "type": "string", + "description": "The raw base64-encoded data of the file or a URL string pointing to the media resource.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional description or metadata about the attachment content.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Optional array of tags for classifying or filtering the attachment.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "visibleInReport", + "type": "boolean", + "description": "Flag indicating if the attachment should be visible by default in reports or dashboards.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing metadata about the created attachment including a unique ID, type, name, and preview URL if applicable." + }, + "aiAgent": { + "useCase": "Use this tool when generating or enhancing data analytics reports that require embedding rich media attachments such as charts, images, or PDF references to provide a more comprehensive view of insights. It supports linking or embedding visual elements within reports or dashboards for improved data storytelling.", + "limitations": "This tool cannot generate media content automatically; it only processes and packages existing media files or URLs as attachments. It also does not perform image recognition or content validation beyond basic format checking.", + "examples": [ + "Create an image attachment from a base64-encoded PNG chart for the sales report.", + "Attach a PDF document showing detailed analytics methodology to the data dashboard.", + "Add a remote URL pointing to a hosted infographic as an attachment to a report section." + ] + }, + "tags": [ + "data-analytics", + "attachment", + "media", + "reporting", + "visualization", + "dashboard" + ], + "examples": [ + { + "inputJson": "{\"attachmentName\":\"Q1 Sales Chart\",\"attachmentType\":\"image\",\"sourceData\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA...\",\"description\":\"Bar chart showing Q1 sales by region.\",\"tags\":[\"sales\",\"Q1\",\"chart\"],\"visibleInReport\":true}", + "description": "Embedding a base64-encoded PNG image chart to visually represent quarterly sales data." + }, + { + "inputJson": "{\"attachmentName\":\"Analytics Methodology\",\"attachmentType\":\"pdf\",\"sourceData\":\"https://example.com/docs/analytics_methodology.pdf\",\"description\":\"PDF documenting the analytical techniques used.\",\"tags\":[\"methodology\",\"documentation\"],\"visibleInReport\":false}", + "description": "Linking a PDF document by URL that provides detailed methodology information to complement an analytics report." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Attachment", + "context": null + } + }, + { + "name": "data-analytics.createPipeline", + "description": "Creates a customizable data analytics pipeline by accepting input data source definitions, transformation steps, and output targets. Processes and composes stages to produce an executable pipeline configuration or script that automates data extraction, cleaning, transformation, and visualization tasks.", + "category": "data-analytics", + "parameters": [ + { + "name": "dataSources", + "type": "array", + "description": "Array of data source configurations including type, location, authentication details (e.g., databases, APIs, files).", + "required": true, + "defaultValue": "" + }, + { + "name": "transformations", + "type": "array", + "description": "Ordered list of transformation operations to apply on the data, such as filtering, aggregation, normalization.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputTargets", + "type": "array", + "description": "Array of output destination definitions specifying format (e.g., CSV, JSON, dashboard), location, and delivery method.", + "required": true, + "defaultValue": "" + }, + { + "name": "pipelineName", + "type": "string", + "description": "Human-readable name identifier for the created analytics pipeline.", + "required": false, + "defaultValue": "\"DefaultPipeline\"" + }, + { + "name": "scheduleCron", + "type": "string", + "description": "Optional CRON expression string to schedule automatic pipeline execution.", + "required": false, + "defaultValue": "\"\"" + }, + { + "name": "includeLogging", + "type": "boolean", + "description": "Flag to enable detailed logging of pipeline execution steps and errors.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with pipelineId (unique identifier) and pipelineDefinition (configuration or code representing the data analytics pipeline)." + }, + "aiAgent": { + "useCase": "Use this tool when you need to automate repetitive data analytics workflows by producing a reusable pipeline that extracts data from various sources, applies transformations, and outputs results in desired formats. It is useful for preparing data for visualization, reporting, or further analysis.", + "limitations": "This tool does not execute the pipeline itself; it only generates the configuration or code. It requires that downstream infrastructure or orchestration tools run the pipeline. Complex or custom transformations outside the supported set may require manual adjustments.", + "examples": [ + "Create a pipeline to load sales data from a database, aggregate monthly totals, and export the results as CSV files.", + "Generate a scheduled pipeline that fetches JSON data from an API daily, filters entries based on date, and sends summary reports to an email server.", + "Build an analytic pipeline to read multiple CSV files, clean missing values, normalize fields, and output to a visualization dashboard." + ] + }, + "tags": [ + "data-analytics", + "pipeline", + "automation", + "ETL", + "data-transformation", + "workflow", + "scheduling" + ], + "examples": [ + { + "inputJson": "{\"dataSources\":[{\"type\":\"sql\",\"connectionString\":\"Server=myServer;Database=sales;User Id=admin;Password=****;\"}],\"transformations\":[{\"operation\":\"aggregate\",\"groupBy\":[\"month\"],\"metrics\":[{\"field\":\"revenue\",\"aggFunc\":\"sum\"}]}],\"outputTargets\":[{\"type\":\"file\",\"format\":\"csv\",\"path\":\"/output/monthly_sales.csv\"}],\"pipelineName\":\"MonthlySalesAggregation\",\"scheduleCron\":\"0 0 1 * *\",\"includeLogging\":true}", + "description": "Create a pipeline named MonthlySalesAggregation that extracts sales data from a SQL database, aggregates revenue by month, exports as CSV, and schedules execution on the first day of each month with logging enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Pipeline", + "context": null + } + }, + { + "name": "data-analytics.createWorkflow", + "description": "This tool enables users to design a data analytics workflow by specifying a sequence of data processing and visualization steps. It accepts structured inputs defining data sources, transformation functions, and visualization configurations, then generates an executable workflow object that can be used to process data and produce visual analytics outputs.", + "category": "data-analytics", + "parameters": [ + { + "name": "workflowName", + "type": "string", + "description": "The name identifying the workflow to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataSources", + "type": "array", + "description": "A list of data source objects, each including source type and configuration details for input data.", + "required": true, + "defaultValue": "" + }, + { + "name": "processingSteps", + "type": "array", + "description": "An ordered list of processing step objects describing transformations to be applied on the data.", + "required": true, + "defaultValue": "" + }, + { + "name": "visualizationConfig", + "type": "object", + "description": "Configuration object specifying the types and settings of visualizations for the final output.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired format of the produced workflow output (e.g., JSON, YAML).", + "required": false, + "defaultValue": "JSON" + } + ], + "returns": { + "type": "object", + "description": "An object representing the complete data analytics workflow, including all steps and configuration, ready for execution in compatible platforms." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate or automate the creation of complex data analytics workflows by defining data inputs, processing steps, and visualization outputs in a structured manner. It is helpful for creating reusable and shareable analytics pipelines without manual coding.", + "limitations": "This tool does not perform the actual data processing or visualization rendering; it only constructs the workflow specification. It does not validate data source connectivity or processing logic correctness beyond structural schema.", + "examples": [ + "Create a workflow to load sales data CSV, apply filtering and aggregation, then create a bar chart visualization.", + "Generate a workflow that connects to a SQL database, executes transformation queries, and produces interactive dashboards.", + "Define a reusable workflow to clean sensor data, calculate statistics, and export visual reports as JSON formatted output." + ] + }, + "tags": [ + "data-analytics", + "workflow", + "automation", + "visualization", + "pipeline", + "ETL", + "processing" + ], + "examples": [ + { + "inputJson": "{\"workflowName\":\"MonthlySalesAnalysis\",\"dataSources\":[{\"type\":\"csv\",\"path\":\"/data/sales.csv\"}],\"processingSteps\":[{\"operation\":\"filter\",\"parameters\":{\"field\":\"region\",\"value\":\"EMEA\"}},{\"operation\":\"aggregate\",\"parameters\":{\"groupBy\":[\"productCategory\"],\"metrics\":{\"sales\":\"sum\"}}}],\"visualizationConfig\":{\"type\":\"barChart\",\"xAxis\":\"productCategory\",\"yAxis\":\"sales\"},\"outputFormat\":\"JSON\"}", + "description": "Creates a workflow to analyze monthly sales by filtering EMEA region, aggregating sales by product category, and producing a bar chart." + }, + { + "inputJson": "{\"workflowName\":\"SensorDataPipeline\",\"dataSources\":[{\"type\":\"database\",\"connectionString\":\"Server=myServer;Database=sensors;User Id=user;Password=pass;\"}],\"processingSteps\":[{\"operation\":\"clean\",\"parameters\":{\"method\":\"removeNulls\"}},{\"operation\":\"calculate\",\"parameters\":{\"field\":\"temperature\",\"function\":\"average\"}}],\"visualizationConfig\":{\"type\":\"lineChart\",\"xAxis\":\"timestamp\",\"yAxis\":\"temperatureAverage\"},\"outputFormat\":\"JSON\"}", + "description": "Creates a workflow connecting to a sensor database, cleaning data by removing nulls, calculating average temperature, and creating a line chart visualization." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Workflow", + "context": null + } + }, + { + "name": "data-transformation.analyzeDashboard", + "description": "Analyzes a dashboard configuration JSON to extract key metrics, widget usage statistics, data source summaries, and layout insights. Accepts dashboard JSON input and optional filters. Produces a structured analysis report summarizing component counts, data source types, metric aggregations, and layout distribution for informed decision-making.", + "category": "data-transformation", + "parameters": [ + { + "name": "dashboardJson", + "type": "string", + "description": "A JSON string representing the dashboard configuration to analyze. Must include widgets, data sources, and layout info.", + "required": true, + "defaultValue": "" + }, + { + "name": "filterWidgetTypes", + "type": "array", + "description": "Optional list of widget types to include in analysis (e.g., ['chart','table']). If empty, all widget types are analyzed.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeDataSourceSummary", + "type": "boolean", + "description": "Whether to summarize data sources usage and types in the analysis output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxWidgets", + "type": "number", + "description": "Maximum number of widgets to analyze; if the dashboard contains more, analysis will be limited to this count.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "An object containing overall dashboard statistics, widget counts by type, aggregated metrics summaries, data source details, and layout usage summary." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to understand the composition and metrics of a given dashboard configuration JSON to generate insights, detect inconsistencies, summarize usage patterns, or prepare reports on dashboard contents without rendering the dashboard.", + "limitations": "Cannot render visualizations or interpret user interaction data; depends on well-formed dashboard JSON input; does not alter or optimize the dashboard configuration.", + "examples": [ + "Analyze a given BI dashboard JSON to extract total number of charts and summarize metrics used.", + "Determine which data sources are most frequently used across widgets in a large dashboard.", + "Provide a report of widget type distributions and layout usage from a supplied dashboard configuration." + ] + }, + "tags": [ + "analysis", + "dashboard", + "data-transformation", + "summary", + "metrics", + "data-sources" + ], + "examples": [ + { + "inputJson": "{\"dashboardJson\":\"{\\\"widgets\\\":[{\\\"id\\\":\\\"w1\\\",\\\"type\\\":\\\"chart\\\",\\\"metrics\\\":[{\\\"name\\\":\\\"revenue\\\"}],\\\"dataSource\\\":\\\"salesDB\\\"},{\\\"id\\\":\\\"w2\\\",\\\"type\\\":\\\"table\\\",\\\"metrics\\\":[{\\\"name\\\":\\\"customerCount\\\"}],\\\"dataSource\\\":\\\"crmDB\\\"}],\\\"layout\\\":{\\\"rows\\\":2,\\\"columns\\\":2}}\",\"filterWidgetTypes\":[\"chart\"],\"includeDataSourceSummary\":true,\"maxWidgets\":50}", + "description": "Analyze the dashboard JSON focusing only on 'chart' widgets and include data source summary." + }, + { + "inputJson": "{\"dashboardJson\":\"{\\\"widgets\\\":[{\\\"id\\\":\\\"w1\\\",\\\"type\\\":\\\"chart\\\",\\\"metrics\\\":[{\\\"name\\\":\\\"sales\\\"}],\\\"dataSource\\\":\\\"db1\\\"},{\\\"id\\\":\\\"w2\\\",\\\"type\\\":\\\"chart\\\",\\\"metrics\\\":[{\\\"name\\\":\\\"profit\\\"}],\\\"dataSource\\\":\\\"db2\\\"}],\\\"layout\\\":{\\\"rows\\\":1,\\\"columns\\\":2}}\",\"filterWidgetTypes\":[],\"includeDataSourceSummary\":false,\"maxWidgets\":100}", + "description": "Analyze all widgets in the dashboard without data source summary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Dashboard", + "context": null + } + }, + { + "name": "data-transformation.analyzeKPI", + "description": "Analyzes key performance indicator (KPI) data to provide statistical summaries, trend detection, and performance benchmarks over time. Accepts structured KPI data arrays with timestamps and metric values, processes calculations like averages, growth rates, and variance, then outputs an analysis report with insights and recommendations.", + "category": "data-transformation", + "parameters": [ + { + "name": "kpiData", + "type": "array", + "description": "An array of KPI records each containing a timestamp and one or more metric values to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestampField", + "type": "string", + "description": "The name of the field in kpiData objects representing the timestamp (e.g., 'date').", + "required": true, + "defaultValue": "\"date\"" + }, + { + "name": "metricFields", + "type": "array", + "description": "List of strings naming the numeric metric fields in kpiData to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "comparisonPeriods", + "type": "number", + "description": "Number of past periods to compare for trend detection (e.g., compare last 3 months).", + "required": false, + "defaultValue": "3" + }, + { + "name": "calculateBenchmarks", + "type": "boolean", + "description": "Whether to compute performance benchmarks against historical averages.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the analysis report output, such as 'json' or 'text'.", + "required": false, + "defaultValue": "\"json\"" + } + ], + "returns": { + "type": "object", + "description": "An object containing summary statistics, trend analyses, benchmark comparisons, and actionable insights for each specified KPI metric over the given time series." + }, + "aiAgent": { + "useCase": "Use this tool when needing detailed statistical analysis and performance insights of time-series KPI data, such as sales figures, user engagement metrics, or operational performance indicators. Ideal for dashboard data enrichment, automated report generation, and detecting performance shifts or anomalies in key metrics over defined periods.", + "limitations": "This tool expects well-structured historical KPI data with consistent timestamp formats. It does not perform raw data cleaning or handle missing data imputation. It is not designed for real-time streaming analysis or predictive modeling beyond trend detection.", + "examples": [ + "Analyze monthly sales revenue and user signup KPIs for trend shifts over the past 6 months.", + "Generate a benchmark report comparing current quarter metrics against historical averages for customer retention and churn KPIs.", + "Summarize and detect anomalies in daily web traffic and conversion rates from a time-stamped KPI dataset." + ] + }, + "tags": [ + "data-transformation", + "analysis", + "KPI", + "metrics", + "time-series", + "analytics", + "performance", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"kpiData\":[{\"date\":\"2024-01-01\",\"sales\":1000,\"signups\":120},{\"date\":\"2024-02-01\",\"sales\":1100,\"signups\":130},{\"date\":\"2024-03-01\",\"sales\":1050,\"signups\":125}],\"timestampField\":\"date\",\"metricFields\":[\"sales\",\"signups\"],\"comparisonPeriods\":2,\"calculateBenchmarks\":true,\"outputFormat\":\"json\"}", + "description": "Analyze sales and signups over three months comparing last two months, produce JSON report with benchmarks." + }, + { + "inputJson": "{\"kpiData\":[{\"date\":\"2023-12-01\",\"retention\":0.85,\"churn\":0.15},{\"date\":\"2024-01-01\",\"retention\":0.80,\"churn\":0.20},{\"date\":\"2024-02-01\",\"retention\":0.82,\"churn\":0.18}],\"timestampField\":\"date\",\"metricFields\":[\"retention\",\"churn\"],\"comparisonPeriods\":3,\"calculateBenchmarks\":true,\"outputFormat\":\"text\"}", + "description": "Analyze customer retention and churn KPIs over three months, output textual benchmark summary report." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "KPI", + "context": null + } + }, + { + "name": "data-transformation.analyzeRisk", + "description": "Analyzes input datasets describing system configurations, vulnerabilities, and threat indicators to assess security risk levels. Accepts JSON or CSV data detailing assets, vulnerabilities, and exposure parameters; performs risk scoring based on common frameworks; outputs a detailed risk report including risk scores, identified critical vulnerabilities, and recommended mitigation priorities.", + "category": "data-transformation", + "parameters": [ + { + "name": "inputData", + "type": "string", + "description": "The security-related data to analyze, as a JSON or CSV string containing asset and vulnerability details.", + "required": true, + "defaultValue": "" + }, + { + "name": "inputFormat", + "type": "string", + "description": "Format of the input data: either 'json' or 'csv'.", + "required": true, + "defaultValue": "json" + }, + { + "name": "riskModel", + "type": "string", + "description": "Risk assessment model to use, e.g., 'CVSS', 'OWASP', or 'custom'.", + "required": false, + "defaultValue": "CVSS" + }, + { + "name": "outputDetailLevel", + "type": "string", + "description": "Level of detail in the risk report: 'summary', 'detailed', or 'full'.", + "required": false, + "defaultValue": "detailed" + }, + { + "name": "includeMitigationSuggestions", + "type": "boolean", + "description": "Whether to include mitigation suggestions in the output report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "customWeights", + "type": "object", + "description": "Optional custom weighting factors to adjust risk scores for specific vulnerability types or asset criticality.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured risk assessment report containing overall risk scores, breakdowns by asset and vulnerability, and recommended mitigations." + }, + "aiAgent": { + "useCase": "Use this tool when provided with structured security or system vulnerability data and needing to generate an actionable risk assessment report. Ideal for scenarios requiring automated risk scoring to prioritize security efforts based on data-driven analysis.", + "limitations": "Does not perform vulnerability scanning or collect data; inputs must be pre-processed and curated. The risk models are predefined and may not cover niche security frameworks or dynamic threat intelligence sources.", + "examples": [ + "Analyze risk from JSON vulnerability data for a web application.", + "Generate a summary risk report from imported CSV security asset data.", + "Assess security risk with custom weightings for asset criticality." + ] + }, + "tags": [ + "data transformation", + "risk analysis", + "security", + "vulnerability assessment", + "reporting", + "automation" + ], + "examples": [ + { + "inputJson": "{\"inputData\":\"[{\\\"assetId\\\":\\\"server01\\\", \\\"vulnerabilities\\\": [{\\\"id\\\":\\\"CVE-2023-12345\\\", \\\"severity\\\":9.8}] }]\",", + "description": "Analyze risk from a simple JSON array listing one asset with one critical vulnerability using default CVSS model." + }, + { + "inputJson": "{\"inputData\":\"assetId,vulnerabilityId,severity\\nserver01,CVE-2023-12345,9.8\\nserver02,CVE-2022-56789,5.0\",\"inputFormat\":\"csv\",\"outputDetailLevel\":\"summary\"}", + "description": "Analyze risk from CSV formatted asset vulnerability data producing a summary report." + }, + { + "inputJson": "{\"inputData\":\"[{\\\"assetId\\\":\\\"webapp\\\",\\\"vulnerabilities\\\":[{\\\"id\\\":\\\"OWASP-A1\\\",\\\"severity\\\":8.5}]}]\",\"inputFormat\":\"json\",\"riskModel\":\"OWASP\",\"includeMitigationSuggestions\":false}", + "description": "Analyze risk of a web application using OWASP model without mitigation suggestions." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Risk", + "context": null + } + }, + { + "name": "data-transformation.analyzeComment", + "description": "Analyzes a given text comment to extract key insights such as sentiment polarity, main topics or keywords, and overall language tone. It accepts raw comment text as input and outputs an analysis report detailing sentiment score, detected topics, and tone classification to assist in understanding user feedback or communication patterns.", + "category": "data-transformation", + "parameters": [ + { + "name": "commentText", + "type": "string", + "description": "The raw text content of the comment to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The language code (e.g., 'en' for English) of the comment to improve analysis accuracy.", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeKeywords", + "type": "boolean", + "description": "Whether to extract and return key topics or keywords from the comment.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeSentiment", + "type": "boolean", + "description": "Whether to perform sentiment analysis on the comment.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeTone", + "type": "boolean", + "description": "Whether to classify the overall tone (e.g., formal, informal, neutral) of the comment.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the analysis results including sentiment score (-1 to 1), detected keywords array, tone classification string, and a summary message." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to understand the content and emotional context of user comments, feedback, or messages to provide better responses, routing, or summarization. It helps AI gauge sentiment, extract main topics, and capture tone nuances for communication analysis.", + "limitations": "Does not perform deep context or sarcasm detection. Accuracy depends on language and comment clarity. May not handle highly technical or domain-specific language without additional customization.", + "examples": [ + "Analyze the sentiment and keywords of this customer feedback comment.", + "Detect the emotional tone of this user support message before responding.", + "Extract topics and sentiment from comments left on a product review." + ] + }, + "tags": [ + "analysis", + "text", + "sentiment", + "comment", + "keywords", + "tone", + "communication", + "natural-language-processing" + ], + "examples": [ + { + "inputJson": "{\"commentText\": \"I love how intuitive the new update is, but the app crashes sometimes.\", \"includeSentiment\": true, \"includeKeywords\": true}", + "description": "Analyze sentiment and keywords from a user comment highlighting pros and cons." + }, + { + "inputJson": "{\"commentText\": \"The documentation is confusing and not detailed enough.\", \"includeSentiment\": true, \"includeTone\": true}", + "description": "Analyze sentiment and tone to understand frustration or dissatisfaction expressed in a comment." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Comment", + "context": null + } + }, + { + "name": "data-transformation.analyzePayment", + "description": "Analyzes payment transaction data provided as structured JSON or CSV formats, extracting key financial metrics such as total amounts, average payment values, payment method distribution, and identifying anomalies or missing fields. Outputs a comprehensive summary report including statistics, detected issues, and suggestions for data correction or further processing.", + "category": "data-transformation", + "parameters": [ + { + "name": "paymentData", + "type": "string", + "description": "Raw payment data input as a JSON string or CSV-formatted string containing payment transactions.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataFormat", + "type": "string", + "description": "Format of the input payment data; supported values are 'json' or 'csv'.", + "required": true, + "defaultValue": "json" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code (e.g., 'USD', 'EUR') used for amounts when standardizing or summarizing.", + "required": false, + "defaultValue": "USD" + }, + { + "name": "detectAnomalies", + "type": "boolean", + "description": "Flag to enable detection of anomalies such as duplicate payments or unusually high amounts.", + "required": false, + "defaultValue": "true" + }, + { + "name": "minPaymentAmount", + "type": "number", + "description": "Minimum payment amount threshold to filter out trivial transactions during analysis.", + "required": false, + "defaultValue": "0" + }, + { + "name": "includePaymentMethodsBreakdown", + "type": "boolean", + "description": "Include statistics on distribution and frequency of different payment methods in the report.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "A structured analysis report object including total payments count and sum, average payment value, payment methods breakdown, list of data quality issues detected, and anomaly summary if enabled." + }, + "aiAgent": { + "useCase": "Use this tool when you have raw payment transaction data and need a detailed analytical summary to understand financial performance metrics, quality issues, or unusual patterns. It is ideal for financial analysts, operations teams, or AI agents automating financial data audits or reporting pipelines.", + "limitations": "Does not perform currency conversion beyond simple labeling; anomalies detection is rule-based and may not catch complex fraud patterns; expects well-formed input data respecting JSON or CSV standards.", + "examples": [ + "Analyze payment JSON data to get total sales, average payment value, and detect anomalies.", + "Provide a CSV string of payments and ask for a report including payment method breakdown, filtering out payments below $10.", + "Check payment data quality issues and summarize overall payment volume in EUR currency." + ] + }, + "tags": [ + "data transformation", + "payment analysis", + "financial data", + "analytics", + "transaction processing", + "data quality" + ], + "examples": [ + { + "inputJson": "{\"paymentData\":\"[{\\\"id\\\":\\\"p1\\\",\\\"amount\\\":100.5,\\\"method\\\":\\\"credit_card\\\",\\\"date\\\":\\\"2024-05-10\\\"},{\\\"id\\\":\\\"p2\\\",\\\"amount\\\":250,\\\"method\\\":\\\"paypal\\\",\\\"date\\\":\\\"2024-05-11\\\"}]\",\"dataFormat\":\"json\",\"currency\":\"USD\",\"detectAnomalies\":true,\"minPaymentAmount\":0,\"includePaymentMethodsBreakdown\":true}", + "description": "Analyze JSON payment data including anomaly detection and payment methods breakdown." + }, + { + "inputJson": "{\"paymentData\":\"id,amount,method,date\\np1,15,cash,2024-05-12\\np2,8,credit_card,2024-05-13\\np3,150,paypal,2024-05-14\",\"dataFormat\":\"csv\",\"currency\":\"EUR\",\"detectAnomalies\":false,\"minPaymentAmount\":10,\"includePaymentMethodsBreakdown\":true}", + "description": "Analyze CSV payment data, filter payments under 10 EUR, without anomaly detection." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Payment", + "context": null + } + }, + { + "name": "data-transformation.analyzeLink", + "description": "This tool accepts a URL string as input and analyzes the link to extract metadata such as page title, description, domain information, and content type. It performs HTTP fetching and parsing of the linked content's HTML metadata, returning a structured summary of the link's key attributes.", + "category": "data-transformation", + "parameters": [ + { + "name": "url", + "type": "string", + "description": "The URL of the link to analyze. Required.", + "required": true, + "defaultValue": "" + }, + { + "name": "fetchTimeout", + "type": "number", + "description": "Maximum time in milliseconds to wait for fetching the URL content. Optional; defaults to 5000 ms.", + "required": false, + "defaultValue": "5000" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include HTTP response headers in the output metadata. Optional; defaults to false.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the link's metadata including title, description, domain, content type, final resolved URL, and optionally HTTP headers." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically extract and summarize metadata from a web link to understand its content without manual browsing. Useful for preview generation, content filtering, or link categorization.", + "limitations": "Cannot analyze dynamically generated content behind JavaScript-heavy sites; limited to metadata available in server response and HTML source; may fail on inaccessible or restricted URLs.", + "examples": [ + "Analyze the metadata of a given news article link.", + "Extract the domain and page title from a URL to create a link preview.", + "Check the content type of a supplied URL to classify resource type." + ] + }, + "tags": [ + "data-transformation", + "link-analysis", + "metadata-extraction", + "web-scraping", + "url-processing", + "content-summary" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://www.example.com/article/12345\"}", + "description": "Analyze the metadata of a given article URL to extract title and description." + }, + { + "inputJson": "{\"url\":\"https://github.com\",\"includeHeaders\":true}", + "description": "Fetch link information from github.com including HTTP headers for advanced analysis." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Link", + "context": null + } + }, + { + "name": "data-transformation.downloadJSON", + "description": "This tool accepts a JavaScript object or JSON string as input, optionally formats it with indentation, and generates a downloadable JSON file with a specified filename. It helps to easily export data structures as JSON files suitable for client-side downloading in web or app environments.", + "category": "data-transformation", + "parameters": [ + { + "name": "data", + "type": "object", + "description": "The JavaScript object or JSON-serializable data to be converted and downloaded as a JSON file.", + "required": true, + "defaultValue": "" + }, + { + "name": "filename", + "type": "string", + "description": "The name of the output file including .json extension to be used for the downloaded file.", + "required": false, + "defaultValue": "\"data.json\"" + }, + { + "name": "prettyPrint", + "type": "boolean", + "description": "Whether to format the JSON output with indentation and spaces for readability (true) or compact (false).", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing a downloadable Blob URL and the filename used, to facilitate file download actions." + }, + "aiAgent": { + "useCase": "Use this tool when needing to convert in-memory data objects or raw JSON strings into a downloadable JSON file for users, such as exporting configurations, reports, or data snapshots in client applications.", + "limitations": "This tool does not handle storage beyond immediate download creation, nor does it validate JSON schema correctness beyond standard serialization. It also requires a runtime environment supporting Blob and URL APIs, typically a browser.", + "examples": [ + "Export the current user settings object as a formatted JSON file named 'settings.json'.", + "Download received API data as a pretty-printed JSON file called 'responseData.json'.", + "Save internal state data objects as a compact JSON file for debugging purposes." + ] + }, + "tags": [ + "download", + "json", + "export", + "data-transformation", + "file", + "client-side" + ], + "examples": [ + { + "inputJson": "{\"data\":{\"user\":{\"id\":123,\"name\":\"Alice\"},\"active\":true},\"filename\":\"user-profile.json\",\"prettyPrint\":true}", + "description": "Download a nicely formatted JSON file named user-profile.json containing user id and name." + }, + { + "inputJson": "{\"data\":{\"items\":[1,2,3],\"count\":3},\"filename\":\"items.json\",\"prettyPrint\":false}", + "description": "Download a compact JSON file named items.json with an array and its count." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "JSON", + "context": null + } + }, + { + "name": "data-transformation.analyzeTable", + "description": "Analyzes a tabular dataset provided as a JSON array of objects or CSV string to produce statistical summaries, data type inference for each column, and detection of missing or anomalous values. Output includes column-wise metadata and summary statistics helping to understand data structure and quality.", + "category": "data-transformation", + "parameters": [ + { + "name": "tableData", + "type": "string", + "description": "The input table data as a JSON array of objects or CSV-formatted string.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataFormat", + "type": "string", + "description": "Format of the input data: 'json' for JSON array or 'csv' for CSV string.", + "required": true, + "defaultValue": "json" + }, + { + "name": "columnsToAnalyze", + "type": "array", + "description": "Optional list of column names to focus the analysis on. If empty or omitted, analyze all columns.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "detectAnomalies", + "type": "boolean", + "description": "Whether to perform anomaly detection (simple outlier detection) on numeric columns.", + "required": false, + "defaultValue": "false" + }, + { + "name": "missingValueIndicators", + "type": "array", + "description": "Array of string values that should be considered as missing values in the data (e.g., ['', 'NA', 'null']).", + "required": false, + "defaultValue": "[\"\"]" + } + ], + "returns": { + "type": "object", + "description": "An object mapping column names to metadata including inferred data type, count of non-missing values, count of missing values, basic statistics (min, max, mean, median for numerics), unique values count, and anomaly count if enabled." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to quickly understand the structure and quality of tabular data from JSON or CSV input, such as summarizing datasets before further processing, detecting data issues, or generating reports on data characteristics.", + "limitations": "Does not perform advanced statistical modeling or complex anomaly detection beyond simple outlier identification. Large datasets may cause performance issues. Assumes structured tabular data without nested or hierarchical fields.", + "examples": [ + "Analyze the dataset to get column statistics and missing value counts.", + "Detect anomalies in numeric columns of a CSV sales report.", + "Summarize data types and unique values for selected columns in JSON input." + ] + }, + "tags": [ + "data", + "analysis", + "table", + "statistics", + "data-quality", + "json", + "csv" + ], + "examples": [ + { + "inputJson": "{\"tableData\":\"[{'id':1,'age':25,'income':50000},{'id':2,'age':30,'income':null},{'id':3,'age':22,'income':48000}]\",\"dataFormat\":\"json\",\"columnsToAnalyze\":[],\"detectAnomalies\":false,\"missingValueIndicators\":[\"null\",\"null\",\"null\"]}", + "description": "Analyze all columns in a small JSON dataset, identifying missing values and data types." + }, + { + "inputJson": "{\"tableData\":\"id,age,income\\n1,25,50000\\n2,30,\\n3,22,48000\",\"dataFormat\":\"csv\",\"columnsToAnalyze\":[\"age\",\"income\"],\"detectAnomalies\":true,\"missingValueIndicators\":[\"\"]}", + "description": "Analyze specific columns from a CSV input detecting anomalies in numeric columns." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Table", + "context": null + } + }, + { + "name": "data-transformation.downloadDataset", + "description": "Downloads dataset files from specified sources such as public API endpoints, cloud storage URLs, or FTP servers. The tool accepts dataset identifiers or URLs, optional authentication details, and output format preferences. It processes the requests by retrieving the data files and delivers them in the requested format or as raw content.", + "category": "data-transformation", + "parameters": [ + { + "name": "sourceUrl", + "type": "string", + "description": "The URL or endpoint from which to download the dataset. Can be HTTP(S), FTP, or cloud storage URL.", + "required": true, + "defaultValue": "" + }, + { + "name": "datasetId", + "type": "string", + "description": "An optional identifier for the dataset if required by the source to specify which dataset to download.", + "required": false, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Optional authentication token or API key required to access protected datasets.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired format for the downloaded dataset file (e.g., csv, json, xml, zip).", + "required": false, + "defaultValue": "csv" + }, + { + "name": "saveToPath", + "type": "string", + "description": "Local file system path where the downloaded dataset will be saved. If empty, the data is returned in memory.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait for the download before timing out.", + "required": false, + "defaultValue": "60" + }, + { + "name": "retryAttempts", + "type": "number", + "description": "Number of retry attempts upon failure to download the dataset.", + "required": false, + "defaultValue": "3" + } + ], + "returns": { + "type": "object", + "description": "An object containing the dataset contents as a byte array or string, along with metadata such as file name, format, and download status." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically download a dataset from a remote URL or API source for data transformation, analysis, or ingestion workflows. It automates fetching datasets given identifiers or URLs, supporting authentication and format selection.", + "limitations": "Cannot transform or parse dataset contents after download; purely a fetching and saving utility. Does not handle proprietary authentication methods beyond token support. Large dataset streaming and pagination are not inherently managed.", + "examples": [ + "Download a public CSV dataset from a URL without authentication.", + "Download a JSON dataset from a secured API using an auth token and save locally.", + "Retry downloading a dataset up to 5 times if initial attempts fail." + ] + }, + "tags": [ + "download", + "dataset", + "data-transformation", + "api", + "file-fetch", + "cloud-storage", + "data-ingestion" + ], + "examples": [ + { + "inputJson": "{\"sourceUrl\":\"https://example.com/data/sample.csv\",\"outputFormat\":\"csv\"}", + "description": "Download a public CSV dataset from an HTTP URL." + }, + { + "inputJson": "{\"sourceUrl\":\"https://api.securedata.com/v1/datasets/12345\",\"authToken\":\"abcdef123456\",\"outputFormat\":\"json\",\"saveToPath\":\"/tmp/dataset.json\"}", + "description": "Download a secured JSON dataset from an API using authentication and save it locally." + }, + { + "inputJson": "{\"sourceUrl\":\"ftp://ftp.example.org/datasets/data.zip\",\"retryAttempts\":5}", + "description": "Download a ZIP dataset file from an FTP server with up to 5 retry attempts on failure." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Dataset", + "context": null + } + }, + { + "name": "data-transformation.uploadImage", + "description": "Uploads an image file to a specified remote server or cloud storage with optional image validation and metadata inclusion. Accepts image file data or URL, processes and compresses image if requested, and returns upload status and location URL.", + "category": "data-transformation", + "parameters": [ + { + "name": "imageData", + "type": "string", + "description": "Base64 encoded image data or image URL to upload.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetUrl", + "type": "string", + "description": "Remote server or cloud storage URL to upload the image to.", + "required": true, + "defaultValue": "" + }, + { + "name": "imageFormat", + "type": "string", + "description": "Desired image format for upload (e.g., jpg, png). If different from source, image will be converted.", + "required": false, + "defaultValue": "jpg" + }, + { + "name": "compress", + "type": "boolean", + "description": "Flag indicating if the image should be compressed before upload to reduce size.", + "required": false, + "defaultValue": "false" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional dictionary of metadata to attach to the image during upload (e.g., description, tags).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the success status, uploaded image URL, and any error messages encountered during upload." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically upload image files to remote storage or servers for applications such as content management, backup, or sharing. It supports input as direct image data or URLs, handles compression and format conversion, and returns accessible URLs for downstream use.", + "limitations": "This tool does not support direct image editing beyond simple compression and format conversion. It requires valid remote URLs that accept uploads via specified protocols and cannot verify upload success for all server types.", + "examples": [ + "Upload a PNG image from base64 data to a cloud storage endpoint with compression enabled.", + "Upload an image by providing its URL to a remote content server in JPEG format without compression.", + "Upload an image with metadata tags to a remote endpoint to associate descriptive information." + ] + }, + "tags": [ + "upload", + "image", + "data-transformation", + "compression", + "metadata", + "remote-storage" + ], + "examples": [ + { + "inputJson": "{\"imageData\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA...\",\"targetUrl\":\"https://example-storage.com/upload\",\"imageFormat\":\"jpg\",\"compress\":true}", + "description": "Upload a base64 PNG image to a remote URL converting it to JPG with compression." + }, + { + "inputJson": "{\"imageData\":\"https://example.com/image.png\",\"targetUrl\":\"https://cdn.example.com/api/upload\",\"compress\":false}", + "description": "Upload an image by URL directly to a CDN endpoint in the original format with no compression." + }, + { + "inputJson": "{\"imageData\":\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD...\",\"targetUrl\":\"https://media.example.org/upload\",\"metadata\":{\"title\":\"Profile Pic\",\"tags\":[\"user\",\"avatar\"]}}", + "description": "Upload a base64 JPEG image with metadata information to a media server endpoint." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Image", + "context": null + } + }, + { + "name": "data-transformation.sendNotification", + "description": "Sends a notification message to specified recipients via a chosen delivery channel. Accepts input parameters defining the message content, recipient identifiers, and channel type (e.g., email, SMS, push). Processes and formats the notification accordingly, then returns the delivery status and response details for tracking.", + "category": "data-transformation", + "parameters": [ + { + "name": "messageContent", + "type": "string", + "description": "The main content body of the notification to be sent.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientList", + "type": "array", + "description": "Array of recipient identifiers such as email addresses, phone numbers, or device tokens depending on channel.", + "required": true, + "defaultValue": "" + }, + { + "name": "channelType", + "type": "string", + "description": "The delivery channel type for the notification (e.g., 'email', 'sms', 'push').", + "required": true, + "defaultValue": "" + }, + { + "name": "senderId", + "type": "string", + "description": "Optional identifier for the sender, such as an email address or phone number, displayed to the recipient.", + "required": false, + "defaultValue": "" + }, + { + "name": "subject", + "type": "string", + "description": "Subject or title of the notification, applicable mainly for email or push channels.", + "required": false, + "defaultValue": "" + }, + { + "name": "priority", + "type": "string", + "description": "Priority level of the notification, e.g., 'normal', 'high'.", + "required": false, + "defaultValue": "normal" + }, + { + "name": "scheduledTime", + "type": "string", + "description": "Optional ISO 8601 timestamp to schedule notification send time; immediate if omitted.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing overall status of the send operation, array of per-recipient statuses including success or failure, and any error messages." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically send notifications to users or systems across multiple delivery channels such as email, SMS, or push. It consolidates message formatting, multi-channel selection, and tracking into one action for automation and batch processing.", + "limitations": "This tool does not internally handle authentication with third-party messaging services; credentials and transport setup are assumed to be configured externally. It also does not guarantee message delivery, only reports transmission status.", + "examples": [ + "Send an urgent alert email to a list of user emails.", + "Send a promotional SMS message to phone numbers collected from a marketing database.", + "Schedule a push notification for app users at a specific future time." + ] + }, + "tags": [ + "notification", + "messaging", + "data-transformation", + "multi-channel", + "send", + "automation" + ], + "examples": [ + { + "inputJson": "{\"messageContent\":\"Your account balance is low.\",\"recipientList\":[\"user@example.com\"],\"channelType\":\"email\",\"senderId\":\"noreply@bank.com\",\"subject\":\"Alert: Low Balance\",\"priority\":\"high\"}", + "description": "Send a high-priority alert email about account balance to a user." + }, + { + "inputJson": "{\"messageContent\":\"Don't miss our sale! 20% off all items.\",\"recipientList\":[\"+1234567890\",\"+1987654321\"],\"channelType\":\"sms\"}", + "description": "Send a promotional SMS message to a list of phone numbers." + }, + { + "inputJson": "{\"messageContent\":\"Your daily summary is ready.\",\"recipientList\":[\"deviceToken123\"],\"channelType\":\"push\",\"scheduledTime\":\"2024-07-01T09:00:00Z\"}", + "description": "Schedule a push notification to app users at 9 AM UTC." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Notification", + "context": null + } + }, + { + "name": "data-transformation.uploadJSON", + "description": "Uploads a JSON data object to a specified remote server endpoint via HTTP POST. Accepts raw JSON input or a JSON string, validates syntax optionally, and sends it to the target URL. Returns the server's response status and body to confirm successful upload or report errors.", + "category": "data-transformation", + "parameters": [ + { + "name": "jsonData", + "type": "object", + "description": "The JSON object to be uploaded to the server. Must be valid JSON data.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetUrl", + "type": "string", + "description": "The remote server URL where the JSON data should be uploaded via HTTP POST.", + "required": true, + "defaultValue": "" + }, + { + "name": "validateSyntax", + "type": "boolean", + "description": "If true, validates JSON syntax before upload to catch errors early.", + "required": false, + "defaultValue": "true" + }, + { + "name": "headers", + "type": "object", + "description": "Additional HTTP headers as key-value pairs to include in the upload request, e.g. for authentication.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time to wait for server response before timing out, in seconds.", + "required": false, + "defaultValue": "30" + } + ], + "returns": { + "type": "object", + "description": "An object containing the server response status code, success boolean, response body, and any error message encountered during upload." + }, + "aiAgent": { + "useCase": "Use this tool when you need to send JSON formatted data to a remote API endpoint, such as submitting configurations, updating records, or syncing data stores. It handles direct POST upload and optionally verifies the JSON is valid before sending. Suitable in workflows requiring programmatic data transfer and API interactions.", + "limitations": "This tool does not transform or generate JSON content; it only uploads given valid JSON data. It cannot handle non-JSON payloads or perform complex authentication flows beyond header customization.", + "examples": [ + "Upload a configuration JSON object to a remote server endpoint.", + "Send sensor data formatted as JSON to a cloud service for storage.", + "Post user profile updates in JSON format to a REST API." + ] + }, + "tags": [ + "upload", + "json", + "http", + "data-transfer", + "api", + "remote", + "post" + ], + "examples": [ + { + "inputJson": "{\"jsonData\":{\"userId\":123,\"action\":\"update\",\"preferences\":{\"theme\":\"dark\"}},\"targetUrl\":\"https://api.example.com/user/update\",\"validateSyntax\":true}", + "description": "Uploading user profile update JSON to a REST API endpoint with syntax validation enabled." + }, + { + "inputJson": "{\"jsonData\":{\"sensorId\":\"abc123\",\"temperature\":22.5,\"humidity\":58},\"targetUrl\":\"https://dataserver.example.com/upload\",\"headers\":{\"Authorization\":\"Bearer token123\"},\"timeoutSeconds\":10}", + "description": "Uploading IoT sensor data as JSON to a cloud data ingestion endpoint with an authorization header and a 10-second timeout." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "JSON", + "context": null + } + }, + { + "name": "data-transformation.uploadDataset", + "description": "Uploads a dataset file to a specified storage location or data platform. Accepts dataset files in common formats (CSV, JSON, XLSX) along with metadata. Processes the file by validating format and content, then stores the dataset for downstream use, returning upload status and dataset reference info.", + "category": "data-transformation", + "parameters": [ + { + "name": "filePath", + "type": "string", + "description": "Local or accessible path or URL to the dataset file to upload.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileFormat", + "type": "string", + "description": "Format of the dataset file. Supported: 'csv', 'json', 'xlsx'.", + "required": true, + "defaultValue": "" + }, + { + "name": "destination", + "type": "string", + "description": "Target storage or platform identifier where the dataset will be uploaded (e.g., cloud bucket, database name).", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional metadata about the dataset; keys and values providing context (e.g., description, tags, author).", + "required": false, + "defaultValue": "{}" + }, + { + "name": "overwrite", + "type": "boolean", + "description": "Whether to overwrite an existing dataset with the same name at the destination.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Result of the upload operation including success status, dataset identifier at destination, and messages if any." + }, + "aiAgent": { + "useCase": "Use when you need to programmatically upload structured data files into a target repository for further processing, storage, or analytics. Useful in automating data ingestion pipelines from diverse sources and formats with metadata tracking.", + "limitations": "Does not perform extensive data cleaning or transformation other than format validation. Does not handle streaming data or databases directly. Requires accessible file path or URL and correct format specification.", + "examples": [ + "Upload a CSV sales dataset to the cloud storage bucket 'sales-data' with descriptive metadata.", + "Upload a JSON configuration dataset to the analytics platform specifying overwrite true.", + "Upload an XLSX scientific data file to a local database directory without metadata." + ] + }, + "tags": [ + "upload", + "dataset", + "data ingestion", + "file upload", + "data transformation", + "csv", + "json", + "xlsx" + ], + "examples": [ + { + "inputJson": "{\"filePath\":\"/data/sales_q1.csv\",\"fileFormat\":\"csv\",\"destination\":\"cloud_bucket_sales\",\"metadata\":{\"description\":\"Q1 sales data\",\"author\":\"analytics_team\"},\"overwrite\":false}", + "description": "Uploading a CSV file containing Q1 sales data to a cloud storage bucket with metadata." + }, + { + "inputJson": "{\"filePath\":\"https://example.com/config.json\",\"fileFormat\":\"json\",\"destination\":\"analytics_platform\",\"metadata\":{},\"overwrite\":true}", + "description": "Uploading a JSON configuration file to an analytics platform with overwrite enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Dataset", + "context": null + } + }, + { + "name": "data-transformation.renderReport", + "description": "This tool accepts structured data inputs along with a template and configuration settings to generate formatted reports in PDF or HTML. It processes raw data, applies the specified template styles and formats, and produces a visually organized report document suitable for presentations or sharing.", + "category": "data-transformation", + "parameters": [ + { + "name": "data", + "type": "object", + "description": "The structured data to be included in the report, e.g., JSON objects or arrays representing the report content.", + "required": true, + "defaultValue": "" + }, + { + "name": "template", + "type": "string", + "description": "A report template identifier or a raw template string defining layout, styling, and content placeholders.", + "required": true, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "The output report format, either 'pdf' or 'html'.", + "required": true, + "defaultValue": "pdf" + }, + { + "name": "includeTableOfContents", + "type": "boolean", + "description": "Whether to generate and include a table of contents in the report.", + "required": false, + "defaultValue": "false" + }, + { + "name": "pageSize", + "type": "string", + "description": "Page size for PDF output (e.g., 'A4', 'Letter'). Ignored if format is 'html'.", + "required": false, + "defaultValue": "A4" + }, + { + "name": "includePageNumbers", + "type": "boolean", + "description": "Whether to include page numbers in the footer of each report page.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "Language locale for report generation to adapt formatting and text direction, e.g., 'en', 'fr'.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated report as a base64-encoded string under 'reportContent' and a MIME type of the output file under 'mimeType'." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert raw structured data and a chosen template into a finalized report document in PDF or HTML format suitable for distribution or presentation. It is ideal for generating business, financial, or technical reports programmatically within workflows.", + "limitations": "This tool does not perform data analysis or validation — it expects input data to be preprocessed and clean. It cannot generate reports without a valid template or produce formats other than PDF and HTML. Complex interactive reports are not supported.", + "examples": [ + "Generate a quarterly sales summary report in PDF using the 'corporate' template with page numbers and a table of contents.", + "Produce a HTML formatted technical report from JSON data in French locale without page numbers.", + "Create a PDF financial report with Letter size pages using custom template and including page numbers." + ] + }, + "tags": [ + "data-transformation", + "report-generation", + "pdf", + "html", + "template", + "document" + ], + "examples": [ + { + "inputJson": "{\"data\":{\"sales\":[{\"month\":\"Jan\",\"revenue\":100000},{\"month\":\"Feb\",\"revenue\":120000}]},\"template\":\"corporate\",\"format\":\"pdf\",\"includeTableOfContents\":true,\"pageSize\":\"A4\",\"includePageNumbers\":true,\"language\":\"en\"}", + "description": "Generate a PDF quarterly sales report using the corporate template with table of contents and page numbers." + }, + { + "inputJson": "{\"data\":{\"metrics\":{\"cpu\":75,\"memory\":60}},\"template\":\"technical\",\"format\":\"html\",\"includeTableOfContents\":false,\"includePageNumbers\":false,\"language\":\"fr\"}", + "description": "Produce an HTML technical report in French without page numbers from system metrics data." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Report", + "context": null + } + }, + { + "name": "data-transformation.formatContract", + "description": "Transforms a contract document provided in JSON or plain text into a professionally formatted text or PDF output. Accepts the contract content and formatting options, applies standard legal document styling, and returns a formatted contract suitable for presentation or signing.", + "category": "data-transformation", + "parameters": [ + { + "name": "contractContent", + "type": "string", + "description": "The raw content of the contract in JSON or plain text format.", + "required": true, + "defaultValue": "" + }, + { + "name": "inputFormat", + "type": "string", + "description": "Specifies the format of the input contract content, e.g., 'json' or 'text'.", + "required": true, + "defaultValue": "json" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format, such as 'pdf' or 'text'.", + "required": true, + "defaultValue": "pdf" + }, + { + "name": "styleTemplate", + "type": "string", + "description": "Name or identifier of the formatting style template to apply (e.g., 'standardLegal', 'minimalist').", + "required": false, + "defaultValue": "standardLegal" + }, + { + "name": "includePageNumbers", + "type": "boolean", + "description": "If true, include page numbers in the formatted document.", + "required": false, + "defaultValue": "true" + }, + { + "name": "headerFooterText", + "type": "object", + "description": "Optional text to include in headers and footers, e.g., {'header':'Confidential', 'footer':'Company Name - 2024'}.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted contract document as a base64 encoded string and a MIME type indicating the file type." + }, + "aiAgent": { + "useCase": "Use this tool when you have a contract draft in JSON or plain text format and need to produce a clean, consistently styled formatted document for review, printing, or electronic signing. It helps automate producing professional legal documents with standard formatting, pagination, and optional branding or legalese in headers/footers.", + "limitations": "Cannot interpret or generate contract content; does not provide legal advice or validate contract clauses. The input must be well-structured and suitable for formatting. Complex embedded media or annotations are not supported.", + "examples": [ + "Format a contract JSON object into a PDF with standard legal styling and page numbers.", + "Convert a plain text contract draft into a minimalist styled PDF without headers/footers.", + "Generate a text-based formatted contract file from JSON including custom header and footer notes." + ] + }, + "tags": [ + "data-transformation", + "contract", + "document-formatting", + "legal", + "pdf", + "text", + "formatting" + ], + "examples": [ + { + "inputJson": "{\"contractContent\":\"{\\\"parties\\\":[\\\"Alice\\\",\\\"Bob\\\"],\\\"terms\\\":[\\\"Payment within 30 days\\\",\\\"Confidentiality clause\\\"]}\",\"inputFormat\":\"json\",\"outputFormat\":\"pdf\",\"styleTemplate\":\"standardLegal\",\"includePageNumbers\":true,\"headerFooterText\":{\"header\":\"Confidential Agreement\",\"footer\":\"ACME Corp 2024\"}}", + "description": "Format a JSON contract with standard legal style to PDF including page numbers and custom header/footer." + }, + { + "inputJson": "{\"contractContent\":\"This contract establishes the terms between Alice and Bob including payment and confidentiality.\",\"inputFormat\":\"text\",\"outputFormat\":\"text\",\"styleTemplate\":\"minimalist\",\"includePageNumbers\":false,\"headerFooterText\":{}}", + "description": "Format a plain text contract into a minimalist styled text output without page numbers or headers/footers." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Contract", + "context": null + } + }, + { + "name": "data-transformation.buildPullRequest", + "description": "Builds a structured pull request object from given inputs including source branch, target branch, title, description, and optional reviewers or labels. It validates required fields, organizes the data into a standard pull request format used in code collaboration platforms, and outputs the pull request object ready for submission.", + "category": "data-transformation", + "parameters": [ + { + "name": "sourceBranch", + "type": "string", + "description": "The name of the source branch for the pull request.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetBranch", + "type": "string", + "description": "The name of the target branch where changes will be merged.", + "required": true, + "defaultValue": "" + }, + { + "name": "title", + "type": "string", + "description": "The title of the pull request summarizing the changes made.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A detailed description of the pull request, explaining the purpose and changes.", + "required": false, + "defaultValue": "" + }, + { + "name": "reviewers", + "type": "array", + "description": "List of usernames or IDs to request reviews from.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "labels", + "type": "array", + "description": "List of labels or tags to classify the pull request.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "draft", + "type": "boolean", + "description": "Whether the pull request should be created as a draft (not ready to merge).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object representing the constructed pull request, including all input fields and standardized metadata." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically prepare a pull request object with all necessary details for submission in a version control system. This is applicable in automation pipelines, code bot integrations, or assisted development tools preparing changes for review.", + "limitations": "This tool does not connect to any repository or remote service; it only builds the pull request object. Actual submission to version control hosting services like GitHub or GitLab requires additional integration.", + "examples": [ + "Create a pull request from feature/login to develop with a descriptive title and multiple reviewers.", + "Prepare a draft pull request with labels for enhancement and backend area.", + "Build a standard pull request object for hotfix targeting master from a specific branch with no reviewers or labels." + ] + }, + "tags": [ + "data-transformation", + "pull-request", + "code-collaboration", + "automation", + "version-control", + "development", + "build" + ], + "examples": [ + { + "inputJson": "{\"sourceBranch\":\"feature/login\",\"targetBranch\":\"develop\",\"title\":\"Add login feature\",\"description\":\"Implements user login with validation and session management.\",\"reviewers\":[\"alice\",\"bob\"],\"labels\":[\"feature\",\"backend\"],\"draft\":false}", + "description": "Building a pull request for new login feature from feature branch to develop with reviewers and labels." + }, + { + "inputJson": "{\"sourceBranch\":\"hotfix/urgent-fix\",\"targetBranch\":\"master\",\"title\":\"Fix critical bug in payment processing\",\"description\":\"Corrects a bug causing failed transactions.\",\"reviewers\":[],\"labels\":[\"bugfix\"],\"draft\":false}", + "description": "Building an urgent hotfix pull request targeting master with bugfix label and no reviewers." + }, + { + "inputJson": "{\"sourceBranch\":\"feature/ui-update\",\"targetBranch\":\"develop\",\"title\":\"Draft: UI redesign proposal\",\"description\":\"Initial draft for UI redesign, pending review.\",\"reviewers\":[\"carol\"],\"labels\":[\"draft\",\"UI\"],\"draft\":true}", + "description": "Building a draft pull request for UI redesign with a designated reviewer and labels." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "PullRequest", + "context": null + } + }, + { + "name": "data-transformation.buildContainer", + "description": "Builds a data container by aggregating, transforming, and packaging input datasets into a structured container format. Accepts multiple data inputs in JSON or CSV, applies optional schema and transformations, and outputs a containerized data object suitable for further processing or storage.", + "category": "data-transformation", + "parameters": [ + { + "name": "inputData", + "type": "array", + "description": "Array of data objects or file paths (JSON or CSV) to be included in the container.", + "required": true, + "defaultValue": "" + }, + { + "name": "containerType", + "type": "string", + "description": "The target container format to build: 'JSON', 'ZIP', or 'tar'.", + "required": true, + "defaultValue": "JSON" + }, + { + "name": "schema", + "type": "object", + "description": "Optional schema definition to validate and transform input data fields.", + "required": false, + "defaultValue": "" + }, + { + "name": "transformations", + "type": "array", + "description": "List of transformation rules to apply on input data, such as filters or mapping functions.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Flag to include generation metadata (timestamps, source info) inside the container.", + "required": false, + "defaultValue": "true" + }, + { + "name": "compressionLevel", + "type": "number", + "description": "Compression level for ZIP or tar containers from 0 (none) to 9 (max).", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "A structured data container object containing the aggregated and transformed data, along with metadata if requested, formatted as per containerType." + }, + "aiAgent": { + "useCase": "Use this tool when you need to unify and package multiple diverse data sources into a single, validated container for easy downstream processing or transport. Suitable for scenarios needing aggregation, format standardization, and optional compression.", + "limitations": "Does not support complex relational database exports or streaming large datasets beyond available memory. Cannot perform real-time data ingestion.", + "examples": [ + "Build a JSON container from multiple JSON data objects applying a standardized schema.", + "Package CSV data files into a compressed ZIP container with transformation filters applied.", + "Aggregate and validate data inputs into a tar archive including metadata for auditing." + ] + }, + "tags": [ + "data-transformation", + "container-build", + "aggregation", + "schema-validation", + "compression" + ], + "examples": [ + { + "inputJson": "{\"inputData\":[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}],\"containerType\":\"JSON\",\"schema\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"number\"}},\"required\":[\"name\",\"age\"]},\"includeMetadata\":true}", + "description": "Aggregate in-memory JSON objects into a JSON container with schema validation and metadata." + }, + { + "inputJson": "{\"inputData\":[\"data1.csv\",\"data2.csv\"],\"containerType\":\"ZIP\",\"transformations\":[{\"field\":\"age\",\"operation\":\"filter\",\"value\":\">18\"}],\"compressionLevel\":7}", + "description": "Build a ZIP container from CSV files applying a filter transformation and moderate compression." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Container", + "context": null + } + }, + { + "name": "data-transformation.buildService", + "description": "Builds a structured service configuration object from given input parameters specifying service name, environment, dependencies, and resource limits. Accepts inputs as JSON or structured parameters, validates and assembles a finalized service deployment specification JSON.", + "category": "data-transformation", + "parameters": [ + { + "name": "serviceName", + "type": "string", + "description": "The unique name identifier of the service to build.", + "required": true, + "defaultValue": "" + }, + { + "name": "environment", + "type": "string", + "description": "Target deployment environment (e.g., production, staging).", + "required": true, + "defaultValue": "" + }, + { + "name": "dependencies", + "type": "array", + "description": "List of service dependencies by name, specifying other services this service depends on.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "resourceLimits", + "type": "object", + "description": "Resource constraints including CPU and memory limits for the service.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "replicas", + "type": "number", + "description": "Desired number of service replicas to deploy.", + "required": false, + "defaultValue": "1" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional metadata labels and annotations for the service configuration.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing the complete service configuration specification suitable for deployment." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically generate or update a service deployment specification from component parameters, enabling automated configuration generation for deployment pipelines or infrastructure management.", + "limitations": "Does not deploy or run the service. It cannot validate runtime compatibility beyond structural correctness. It does not generate code or scripts, only configuration objects.", + "examples": [ + "Build a service config for a web-app with database dependency in production environment with 3 replicas.", + "Create a staging environment service setup named 'analytics-service' with resource limits for CPU and memory.", + "Generate a deployment spec for a backend microservice with metadata labels and no dependencies." + ] + }, + "tags": [ + "data-transformation", + "service", + "configuration", + "infrastructure", + "deployment", + "build", + "automation" + ], + "examples": [ + { + "inputJson": "{\"serviceName\":\"user-api\",\"environment\":\"production\",\"dependencies\":[\"auth-service\",\"db-service\"],\"resourceLimits\":{\"cpu\":\"500m\",\"memory\":\"256Mi\"},\"replicas\":3}", + "description": "Build a production service configuration named 'user-api' with dependencies and resource limits, scaled to 3 replicas." + }, + { + "inputJson": "{\"serviceName\":\"cache\",\"environment\":\"staging\",\"replicas\":1}", + "description": "Build a minimal staging environment service configuration named 'cache' with a single replica and no dependencies." + }, + { + "inputJson": "{\"serviceName\":\"analytics\",\"environment\":\"production\",\"dependencies\":[],\"metadata\":{\"team\":\"data-science\",\"priority\":\"high\"}}", + "description": "Create a production service configuration named 'analytics' with metadata labels for team and priority, no dependencies." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Service", + "context": null + } + }, + { + "name": "data-transformation.buildConfig", + "description": "Builds a structured configuration object from provided parameters in various formats (JSON, YAML, or key-value) and returns it as a normalized JSON config string. Accepts input as raw configuration data or parameter object, processes and merges defaults, validates required keys, and outputs ready-to-use configuration text.", + "category": "data-transformation", + "parameters": [ + { + "name": "inputFormat", + "type": "string", + "description": "Specifies the format of the input configuration data, e.g., 'json', 'yaml', or 'keyValue'.", + "required": true, + "defaultValue": "json" + }, + { + "name": "configData", + "type": "string", + "description": "The raw configuration content as a string matching the specified inputFormat.", + "required": true, + "defaultValue": "" + }, + { + "name": "defaultConfig", + "type": "object", + "description": "A JSON object containing default configuration keys and values to merge with input config.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "validateSchema", + "type": "boolean", + "description": "If true, perform schema validation against a predefined JSON schema before building the config.", + "required": false, + "defaultValue": "false" + }, + { + "name": "requiredKeys", + "type": "array", + "description": "An array of strings listing keys that must be present in the final configuration; tool errors if missing.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired output format for the built configuration: 'json' or 'yaml'.", + "required": false, + "defaultValue": "json" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing a 'configString' which is the built configuration in the specified outputFormat, and 'configObject' which is the parsed JSON object representing the configuration." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert and build a configuration file from raw input in various formats, merge it with default settings, enforce required keys, and obtain a clean, validated config output in JSON or YAML format. Ideal for dynamic config generation or transformation pipelines.", + "limitations": "This tool does not perform deep validation beyond required keys and optional JSON schema validation; it cannot execute configuration or resolve environment-specific variables.", + "examples": [ + "Build a JSON config from given YAML input merging with defaults", + "Validate and build a config ensuring certain keys are present", + "Convert key-value pair config string into formatted JSON" + ] + }, + "tags": [ + "data transformation", + "config builder", + "json", + "yaml", + "validation", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"inputFormat\":\"yaml\",\"configData\":\"\\nserver:\\n port: 8080\\ndatabase:\\n host: localhost\\n port: 3306\\n\",\"defaultConfig\":{\"server\":{\"host\":\"0.0.0.0\"},\"database\":{\"user\":\"root\"}},\"validateSchema\":false,\"requiredKeys\":[\"server\",\"database\"],\"outputFormat\":\"json\"}", + "description": "Build JSON config from YAML input with default values merged and required keys enforced." + }, + { + "inputJson": "{\"inputFormat\":\"keyValue\",\"configData\":\"host=example.com\\nport=443\\n\",\"defaultConfig\":{},\"validateSchema\":false,\"requiredKeys\":[\"host\",\"port\"],\"outputFormat\":\"json\"}", + "description": "Build JSON config from simple key-value input string, requiring host and port keys." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Config", + "context": null + } + }, + { + "name": "data-transformation.buildBranch", + "description": "Constructs a structured representation of a code branch from input data describing commits and metadata. Accepts branch information including commit details, author, and parent branches, then outputs a comprehensive branch object suitable for code management or version control automation.", + "category": "data-transformation", + "parameters": [ + { + "name": "branchName", + "type": "string", + "description": "Name of the branch to build (e.g., feature/new-ui)", + "required": true, + "defaultValue": "" + }, + { + "name": "commits", + "type": "array", + "description": "Array of commit objects containing message, author, timestamp, and hash", + "required": true, + "defaultValue": "" + }, + { + "name": "parentBranches", + "type": "array", + "description": "List of parent branch names this branch is derived from", + "required": false, + "defaultValue": "[]" + }, + { + "name": "metadata", + "type": "object", + "description": "Additional optional metadata for the branch like creation date or tags", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "A comprehensive branch object including name, commit history, parent branch references, and metadata suitable for version control tasks." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically create a detailed branch representation from raw commit and branch metadata, especially for automated code workflow orchestration or code repository management where structured branch objects are needed.", + "limitations": "This tool builds a data representation of a branch but does not perform actual version control operations such as pushing to remote repositories or merging branches.", + "examples": [ + "Build a branch object for a new feature branch with three commits.", + "Create a branch structure from a series of commit data and reference to a main parent branch.", + "Assemble metadata-rich branch information including commits and tags for automation purposes." + ] + }, + "tags": [ + "data-transformation", + "branch", + "version-control", + "code-management", + "commit-history" + ], + "examples": [ + { + "inputJson": "{\"branchName\":\"feature/login-improvements\",\"commits\":[{\"message\":\"Add login form validation\",\"author\":\"dev1\",\"timestamp\":\"2024-06-01T10:00:00Z\",\"hash\":\"a1b2c3\"},{\"message\":\"Fix login redirect bug\",\"author\":\"dev2\",\"timestamp\":\"2024-06-02T13:15:00Z\",\"hash\":\"d4e5f6\"}],\"parentBranches\":[\"develop\"],\"metadata\":{\"createdBy\":\"dev1\",\"priority\":\"high\"}}", + "description": "Build a branch named 'feature/login-improvements' with two commits derived from 'develop' branch along with metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Branch", + "context": null + } + }, + { + "name": "data-transformation.generateDashboard", + "description": "This tool accepts raw JSON or CSV data representing analytics metrics, user activity, or KPIs and generates a customizable dashboard configuration object. It processes the input data, applies aggregation, filtering, and visualization rules as specified in parameters, and outputs a structured dashboard model including charts, tables, and summary widgets ready for rendering by UI frameworks.", + "category": "data-transformation", + "parameters": [ + { + "name": "inputData", + "type": "string", + "description": "Raw data as JSON string or CSV content representing analytics metrics or events.", + "required": true, + "defaultValue": "" + }, + { + "name": "inputFormat", + "type": "string", + "description": "Format of the input data. Supported values: 'json' or 'csv'.", + "required": true, + "defaultValue": "" + }, + { + "name": "visualizationTypes", + "type": "array", + "description": "List of visualization types to include in the dashboard, e.g., ['barChart','lineChart','table'].", + "required": false, + "defaultValue": "[\"barChart\",\"lineChart\",\"table\"]" + }, + { + "name": "filters", + "type": "object", + "description": "Object specifying filters to apply on data before visualization, e.g., {\"dateRange\":{\"start\":\"2024-01-01\",\"end\":\"2024-01-31\"},\"region\":\"EMEA\"}.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "aggregationMethod", + "type": "string", + "description": "Aggregation function to summarize data, such as 'sum', 'average', 'count'.", + "required": false, + "defaultValue": "sum" + }, + { + "name": "dashboardTitle", + "type": "string", + "description": "Title to display on the generated dashboard.", + "required": false, + "defaultValue": "\"Analytics Dashboard\"" + }, + { + "name": "theme", + "type": "string", + "description": "Optional dashboard theme like 'light' or 'dark' to adjust visual styling.", + "required": false, + "defaultValue": "\"light\"" + } + ], + "returns": { + "type": "object", + "description": "A structured dashboard configuration object including metadata, a list of visualization widgets with their types, data sources post-filtering & aggregation, and layout details suitable for UI rendering." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to transform raw metric or event data into a coherent, visual dashboard configuration that can be rendered by front-end analytics applications or BI tools. Ideal for generating summary analytics views from raw or semi-structured data inputs automatically.", + "limitations": "Cannot render or display the dashboard UI itself; only provides structured configuration data. Complex custom visualizations beyond predefined types are not supported. Requires reasonably structured input data for meaningful output.", + "examples": [ + "Generate a dashboard from user activity JSON logs with line charts and tables.", + "Create a sales KPI dashboard from CSV sales records filtered by region and date range.", + "Summarize website traffic analytics into a dashboard with bar and line charts using average aggregation." + ] + }, + "tags": [ + "data-transformation", + "dashboard", + "analytics", + "visualization", + "aggregation", + "filtering", + "BI" + ], + "examples": [ + { + "inputJson": "{\"inputData\":\"[{\\\"date\\\":\\\"2024-06-01\\\",\\\"sales\\\":100},{\\\"date\\\":\\\"2024-06-02\\\",\\\"sales\\\":150}]\",\"inputFormat\":\"json\",\"visualizationTypes\":[\"lineChart\"],\"filters\":{\"dateRange\":{\"start\":\"2024-06-01\",\"end\":\"2024-06-30\"}},\"aggregationMethod\":\"sum\",\"dashboardTitle\":\"June Sales\"}", + "description": "Generate a line chart dashboard showing total sales per day for June from JSON data." + }, + { + "inputJson": "{\"inputData\":\"date,region,sales\\n2024-06-01,EMEA,200\\n2024-06-01,APAC,180\\n2024-06-02,EMEA,210\",\"inputFormat\":\"csv\",\"visualizationTypes\":[\"barChart\",\"table\"],\"filters\":{\"region\":\"EMEA\"},\"aggregationMethod\":\"sum\",\"dashboardTitle\":\"EMEA Region Sales\"}", + "description": "Create a dashboard with bar chart and table visualizations showing sales in the EMEA region from CSV input." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Dashboard", + "context": null + } + }, + { + "name": "data-transformation.buildModule", + "description": "This tool accepts structured input describing a software module's components, such as functions, classes, dependencies, and configuration options. It processes this description to generate complete module code in a specified programming language, assembling the defined components into a cohesive, ready-to-use code module as a text output.", + "category": "data-transformation", + "parameters": [ + { + "name": "moduleName", + "type": "string", + "description": "The name identifier for the module to be built.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language for the generated code module (e.g., JavaScript, Python).", + "required": true, + "defaultValue": "" + }, + { + "name": "components", + "type": "array", + "description": "An array of component objects defining the module's internal parts such as functions, classes, and variables with their signatures and details.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeDependencies", + "type": "boolean", + "description": "Whether to include import or require statements for external dependencies.", + "required": false, + "defaultValue": "true" + }, + { + "name": "dependencies", + "type": "array", + "description": "List of external dependencies to include, each as a string name or path.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "moduleConfig", + "type": "object", + "description": "Optional configuration parameters for the module such as export style or coding conventions.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated source code as a string along with optional metadata such as file name and language." + }, + "aiAgent": { + "useCase": "Use this tool when you need to automatically build a structured code module from a high-level design description, including functions, classes, and dependencies, especially for rapid prototyping or code scaffolding in supported languages.", + "limitations": "This tool does not compile or run the generated code. It cannot validate logic correctness or handle dynamic runtime configurations. It generates code based on provided static component definitions only.", + "examples": [ + "Generate a JavaScript module named 'mathUtils' including add and subtract functions.", + "Create a Python module with a class for data processing and associated helper functions.", + "Build a module that imports lodash and exports utility functions under specified config." + ] + }, + "tags": [ + "code-generation", + "module-building", + "software-engineering", + "code-scaffolding", + "data-transformation" + ], + "examples": [ + { + "inputJson": "{\"moduleName\":\"stringUtils\",\"language\":\"JavaScript\",\"components\":[{\"type\":\"function\",\"name\":\"capitalize\",\"params\":[\"text\"],\"body\":\"return text.charAt(0).toUpperCase() + text.slice(1);\"},{\"type\":\"function\",\"name\":\"toLowerCase\",\"params\":[\"text\"],\"body\":\"return text.toLowerCase();\"}],\"includeDependencies\":false,\"dependencies\":[],\"moduleConfig\":{\"exportStyle\":\"named\"}}", + "description": "Build a JavaScript module named 'stringUtils' with two utility functions for string capitalization and lowering case, no dependencies, using named exports." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Module", + "context": null + } + }, + { + "name": "data-transformation.createKPI", + "description": "Creates a Key Performance Indicator (KPI) metric from raw input data by applying specified aggregation functions and filters. Accepts input data as arrays of objects representing records, processes it to compute KPI values based on user-defined parameters, and outputs structured KPI summaries for analytics dashboards or reporting.", + "category": "data-transformation", + "parameters": [ + { + "name": "inputData", + "type": "array", + "description": "Array of objects containing raw data records from which the KPI will be derived.", + "required": true, + "defaultValue": "" + }, + { + "name": "metricField", + "type": "string", + "description": "The key in input data objects representing the numeric metric to aggregate or analyze for the KPI.", + "required": true, + "defaultValue": "" + }, + { + "name": "aggregationFunction", + "type": "string", + "description": "The aggregation method to apply to metricField values. Supported functions include 'sum', 'average', 'count', 'max', and 'min'.", + "required": true, + "defaultValue": "sum" + }, + { + "name": "filterConditions", + "type": "object", + "description": "Optional key-value pairs to filter input records before aggregation. Keys are data fields, values are the required matching value.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "groupByFields", + "type": "array", + "description": "Optional list of data field names to group the KPI calculation by, producing results per group.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "timePeriod", + "type": "string", + "description": "Optional ISO date range string (e.g., '2023-01-01/2023-01-31') to limit data considered in the KPI calculation.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the returned KPI result: 'summary' returns a numeric value, 'detailed' returns an array with grouped breakdowns.", + "required": false, + "defaultValue": "summary" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the computed KPI value(s). If groupByFields specified or outputFormat is 'detailed', returns an array of objects with group keys and KPI values; otherwise returns a single numeric KPI value under the key 'kpiValue'." + }, + "aiAgent": { + "useCase": "Use this tool when you need to transform raw dataset inputs into actionable Key Performance Indicators for monitoring or reporting purposes. It is useful in scenarios requiring aggregation of metrics possibly filtered by criteria, grouped by categories, and summarized over time windows to produce analytics-friendly KPI outputs.", + "limitations": "This tool cannot perform complex predictive analytics or trend forecasting. It requires structured data input and does not infer semantics from unstructured text. Aggregation functions are limited to basic summaries and cannot apply custom formulae.", + "examples": [ + "Create a monthly sales sum KPI for January 2023 filtered by region.", + "Compute average customer rating grouped by product category.", + "Generate total active user count without grouping or filters." + ] + }, + "tags": [ + "data-transformation", + "KPI", + "analytics", + "aggregation", + "filtering", + "grouping", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"inputData\":[{\"date\":\"2023-01-05\",\"region\":\"East\",\"sales\":100},{\"date\":\"2023-01-10\",\"region\":\"East\",\"sales\":150},{\"date\":\"2023-01-15\",\"region\":\"West\",\"sales\":200}],\"metricField\":\"sales\",\"aggregationFunction\":\"sum\",\"filterConditions\":{\"region\":\"East\"},\"timePeriod\":\"2023-01-01/2023-01-31\",\"outputFormat\":\"summary\"}", + "description": "Calculate the total sales in January 2023 for the East region." + }, + { + "inputJson": "{\"inputData\":[{\"product\":\"A\",\"category\":\"Electronics\",\"rating\":4.5},{\"product\":\"B\",\"category\":\"Electronics\",\"rating\":4.0},{\"product\":\"C\",\"category\":\"Books\",\"rating\":5.0}],\"metricField\":\"rating\",\"aggregationFunction\":\"average\",\"groupByFields\":[\"category\"],\"outputFormat\":\"detailed\"}", + "description": "Compute average customer rating grouped by product category." + }, + { + "inputJson": "{\"inputData\":[{\"userId\":\"user1\",\"active\":true},{\"userId\":\"user2\",\"active\":false},{\"userId\":\"user3\",\"active\":true}],\"metricField\":\"active\",\"aggregationFunction\":\"count\",\"filterConditions\":{\"active\":true},\"outputFormat\":\"summary\"}", + "description": "Count number of active users from dataset." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "KPI", + "context": null + } + }, + { + "name": "data-transformation.generateKPI", + "description": "Generates key performance indicators (KPIs) from structured input data. Accepts raw or aggregated datasets in JSON format, applies specified KPI formulas or metrics, and outputs KPI values with optional breakdowns per dimension or time period. Useful for producing business analytics metrics from operational data.", + "category": "data-transformation", + "parameters": [ + { + "name": "inputData", + "type": "object", + "description": "The structured source data from which to calculate KPIs, typically as an array of records with numerical and categorical fields.", + "required": true, + "defaultValue": "" + }, + { + "name": "kpiDefinitions", + "type": "array", + "description": "List of KPI definitions specifying metric names, calculation formulas, aggregation functions, and fields to use. Each element is an object defining one KPI.", + "required": true, + "defaultValue": "" + }, + { + "name": "groupByFields", + "type": "array", + "description": "Optional array of field names to group the data by before KPI calculation (e.g., by region, product).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "timeGranularity", + "type": "string", + "description": "Optional time granularity for time-based KPIs, such as 'daily', 'weekly', 'monthly'. Requires time fields in input data.", + "required": false, + "defaultValue": "" + }, + { + "name": "filterCriteria", + "type": "object", + "description": "Optional filtering criteria applied to inputData to restrict records before KPI calculation. Should be key-value pairs for fields and allowed values.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object mapping KPI names to their calculated values. Values can be simple numbers or nested objects keyed by groupByFields or time periods." + }, + "aiAgent": { + "useCase": "Use this tool when needing to compute business or operational metrics (KPIs) from raw or aggregated data to support reporting or analytics tasks. The tool supports grouping and filtering to tailor the KPIs to specific segments or time frames.", + "limitations": "This tool does not source or clean raw data; input data must be preprocessed and formatted correctly. Complex KPI formulas requiring external data joins or advanced statistical methods are not supported directly.", + "examples": [ + "Generate sales and profit margin KPIs grouped by product category and month from transaction records.", + "Calculate customer churn rate and average revenue per user (ARPU) filtered for a specific region.", + "Produce overall operational KPIs like average handle time and first call resolution rate from service desk logs." + ] + }, + "tags": [ + "data-transformation", + "analytics", + "KPI", + "business-intelligence", + "metrics", + "aggregation", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"inputData\":[{\"date\":\"2023-01-01\",\"category\":\"A\",\"sales\":100,\"profit\":30},{\"date\":\"2023-01-01\",\"category\":\"B\",\"sales\":150,\"profit\":50},{\"date\":\"2023-02-01\",\"category\":\"A\",\"sales\":120,\"profit\":40}],\"kpiDefinitions\":[{\"name\":\"totalSales\",\"field\":\"sales\",\"aggregation\":\"sum\"},{\"name\":\"profitMargin\",\"formula\":\"sum(profit)/sum(sales)\"}],\"groupByFields\":[\"category\"],\"timeGranularity\":\"monthly\"}", + "description": "Calculate total sales and profit margin KPIs grouped by category and month." + }, + { + "inputJson": "{\"inputData\":[{\"customerId\":1,\"region\":\"North\",\"churned\":false,\"revenue\":500},{\"customerId\":2,\"region\":\"South\",\"churned\":true,\"revenue\":0}],\"kpiDefinitions\":[{\"name\":\"churnRate\",\"formula\":\"count(churned==true)/count()\"},{\"name\":\"averageRevenuePerUser\",\"formula\":\"sum(revenue)/count()\"}],\"filterCriteria\":{\"region\":[\"North\"]}}", + "description": "Calculate customer churn rate and ARPU filtered for the North region." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "KPI", + "context": null + } + }, + { + "name": "data-transformation.generateQuery", + "description": "Generates structured SQL queries from user-defined specifications. Accepts an input object describing tables, fields, filtering criteria, sorting, and aggregation. Processes to produce syntactically correct SQL query strings compatible with common relational databases.", + "category": "data-transformation", + "parameters": [ + { + "name": "tables", + "type": "array", + "description": "List of table names involved in the query. Required for FROM clause and joins.", + "required": true, + "defaultValue": "" + }, + { + "name": "fields", + "type": "array", + "description": "List of fields to select. Can include aliases and aggregate functions.", + "required": true, + "defaultValue": "" + }, + { + "name": "filters", + "type": "array", + "description": "Array of filter objects specifying conditions for WHERE clause (field, operator, value).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "joins", + "type": "array", + "description": "Array of join definitions specifying type, left table, right table and join condition.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "groupBy", + "type": "array", + "description": "List of fields for GROUP BY clause to aggregate results.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "orderBy", + "type": "array", + "description": "List of ordering instructions with field and direction (ASC/DESC).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "limit", + "type": "number", + "description": "Limits the number of rows returned by the query.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "Object with a single property 'query' containing the generated SQL query string." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to construct SQL queries based on user intent or structured query parameters. It helps transform natural language or structured data into executable SQL code, supporting data analysis, reporting, or database interaction workflows.", + "limitations": "This tool generates standard SQL queries but does not validate schema correctness or execute queries against a database. It cannot optimize complex query performance or generate queries for non-SQL data stores.", + "examples": [ + "Generate a SELECT query to get user names and emails where user is active.", + "Create a query joining orders and customers tables filtered by order date.", + "Generate an aggregation query to count sales per region ordered by total sales descending." + ] + }, + "tags": [ + "sql", + "query-generation", + "data-transformation", + "database", + "code-generation", + "analytics" + ], + "examples": [ + { + "inputJson": "{\"tables\":[\"users\"],\"fields\":[\"id\",\"name\",\"email\"],\"filters\":[{\"field\":\"active\",\"operator\":\"=\",\"value\":true}],\"joins\":[],\"groupBy\":[],\"orderBy\":[{\"field\":\"name\",\"direction\":\"ASC\"}],\"limit\":100}", + "description": "Select id, name, email from users where active=true ordered by name ascending, limit 100." + }, + { + "inputJson": "{\"tables\":[\"orders\",\"customers\"],\"fields\":[\"orders.id\",\"customers.name\",\"orders.total\"],\"filters\":[{\"field\":\"orders.date\",\"operator\":\">=\",\"value\":\"2023-01-01\"}],\"joins\":[{\"type\":\"INNER JOIN\",\"leftTable\":\"orders\",\"rightTable\":\"customers\",\"condition\":\"orders.customer_id = customers.id\"}],\"groupBy\":[],\"orderBy\":[{\"field\":\"orders.date\",\"direction\":\"DESC\"}],\"limit\":50}", + "description": "Inner join orders and customers selecting order id, customer name, order total where order date is after 2023-01-01 ordered by date descending." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Query", + "context": null + } + }, + { + "name": "data-transformation.createDashboard", + "description": "Creates a customizable analytics dashboard from structured data sources by accepting datasets and configuration options; processes data visualizations like charts and tables; outputs a dashboard JSON object defining the layout, widgets, and data bindings ready for rendering or further integration.", + "category": "data-transformation", + "parameters": [ + { + "name": "dataSources", + "type": "array", + "description": "An array of data source objects containing datasets to be visualized. Each data source includes data and metadata.", + "required": true, + "defaultValue": "" + }, + { + "name": "widgets", + "type": "array", + "description": "List of widget configurations specifying type (chart, table, KPI), data mapping, and display options for each dashboard element.", + "required": true, + "defaultValue": "" + }, + { + "name": "layout", + "type": "object", + "description": "Object defining the dashboard layout including grid size, widget positions, and sizing for flexible arrangement.", + "required": false, + "defaultValue": "" + }, + { + "name": "theme", + "type": "string", + "description": "Optional theme name to style the dashboard visuals with predefined colors and fonts.", + "required": false, + "defaultValue": "light" + }, + { + "name": "title", + "type": "string", + "description": "Title of the dashboard for display purposes.", + "required": false, + "defaultValue": "\"Untitled Dashboard\"" + } + ], + "returns": { + "type": "object", + "description": "A dashboard configuration object containing the processed layout, widget setups, data links, and styling information representable in JSON format for rendering or saving." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a structured, interactive analytics dashboard from given datasets and specifications, particularly when visual summaries across multiple data sources and visualization types are required. It helps generate a ready-to-render dashboard configuration for BI tools or web apps.", + "limitations": "Does not execute or render the dashboard UI; cannot fetch or refresh data sources dynamically; widgets are limited to predefined visualization types; requires input data to be preprocessed and clean.", + "examples": [ + "Create a sales performance dashboard with bar charts and KPIs from quarterly data.", + "Generate a custom dashboard layout showing user engagement metrics and tables from multiple input datasets.", + "Build a dashboard with pie charts and line graphs using specified color themes and grid layouts." + ] + }, + "tags": [ + "data transformation", + "dashboard", + "analytics", + "visualization", + "BI", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"dataSources\":[{\"id\":\"ds1\",\"data\":[{\"month\":\"Jan\",\"sales\":1000},{\"month\":\"Feb\",\"sales\":1500}]},{\"id\":\"ds2\",\"data\":[{\"product\":\"A\",\"units\":200},{\"product\":\"B\",\"units\":300}]}],\"widgets\":[{\"type\":\"barChart\",\"dataSourceId\":\"ds1\",\"xField\":\"month\",\"yField\":\"sales\",\"title\":\"Monthly Sales\"},{\"type\":\"table\",\"dataSourceId\":\"ds2\",\"columns\":[\"product\",\"units\"],\"title\":\"Product Units Sold\"}],\"layout\":{\"columns\":2,\"rows\":1,\"positions\":[{\"widgetId\":0,\"col\":1,\"row\":1},{\"widgetId\":1,\"col\":2,\"row\":1}]},\"theme\":\"light\",\"title\":\"Sales Dashboard\"}", + "description": "Create a sales dashboard with a bar chart of monthly sales and a table of product units sold, arranged in two columns on one row with a light theme." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dashboard", + "context": null + } + }, + { + "name": "data-transformation.createInstance", + "description": "Creates a new data transformation instance based on a specified configuration object. Accepts input parameters defining the data source type, transformation rules, and output format. Processes the configuration to instantiate an executable transformation pipeline, returning a reference object with instance ID, status, and summary of the setup.", + "category": "data-transformation", + "parameters": [ + { + "name": "instanceName", + "type": "string", + "description": "Unique name to identify the transformation instance.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceType", + "type": "string", + "description": "Type of data source (e.g., 'csv', 'json', 'database').", + "required": true, + "defaultValue": "" + }, + { + "name": "transformationRules", + "type": "object", + "description": "Specification of transformation rules and mappings to apply on data.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output data format after transformation (e.g., 'json', 'xml').", + "required": true, + "defaultValue": "" + }, + { + "name": "schedule", + "type": "string", + "description": "Optional cron expression to schedule recurring transformation runs.", + "required": false, + "defaultValue": "" + }, + { + "name": "enableLogging", + "type": "boolean", + "description": "Flag to enable or disable detailed logging of the transformation process.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing instanceId, creationTimestamp, currentStatus, and a brief summary of the transformation configuration." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically set up a reusable data transformation instance by defining the data source type, transformation logic, and output format. Ideal for automating ETL pipelines or data integration tasks where configuration is required before execution.", + "limitations": "This tool does not execute the transformation itself; it only creates the instance. It cannot validate the correctness of transformation rules beyond basic schema checks.", + "examples": [ + "Create a data transformation instance that reads CSV files, applies specified mapping rules, and outputs JSON format.", + "Set up a scheduled instance for transforming database exports into XML nightly.", + "Generate a transformation instance with logging enabled for debugging purposes." + ] + }, + "tags": [ + "data-transformation", + "instance-creation", + "etl", + "pipeline", + "automation" + ], + "examples": [ + { + "inputJson": "{\"instanceName\":\"csvToJsonTransform\",\"sourceType\":\"csv\",\"transformationRules\":{\"mapColumns\":{\"Name\":\"fullName\",\"Age\":\"ageYears\"}},\"outputFormat\":\"json\",\"enableLogging\":true}", + "description": "Create an instance to transform CSV data to JSON with column mappings and logging enabled." + }, + { + "inputJson": "{\"instanceName\":\"dbExportToXml\",\"sourceType\":\"database\",\"transformationRules\":{\"filterRows\":{\"status\":\"active\"}},\"outputFormat\":\"xml\",\"schedule\":\"0 2 * * *\"}", + "description": "Scheduled instance to export active database records and convert them into XML format at 2 AM daily." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Instance", + "context": null + } + }, + { + "name": "data-transformation.createVideo", + "description": "Creates a video file by combining a sequence of images, audio tracks, and optional text overlays. Accepts input in form of image URLs or base64-encoded images, audio files, and timing parameters. Processes these inputs to produce a playable video file in specified format and resolution.", + "category": "data-transformation", + "parameters": [ + { + "name": "images", + "type": "array", + "description": "Array of image objects representing frames or slides to include in the video. Each object contains image data (URL or base64) and optional display duration in seconds.", + "required": true, + "defaultValue": "" + }, + { + "name": "audioTracks", + "type": "array", + "description": "Array of audio track objects to overlay on the video. Each object includes audio data (URL or base64) and start time in seconds for playback.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "textOverlays", + "type": "array", + "description": "Optional array of text overlay objects specifying text content, position (x,y), font size, color, start time, and duration on screen.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "videoFormat", + "type": "string", + "description": "Output video file format, e.g., 'mp4', 'webm', or 'avi'.", + "required": false, + "defaultValue": "mp4" + }, + { + "name": "frameRate", + "type": "number", + "description": "Frames per second (fps) for the output video. Typical values are between 24 and 60.", + "required": false, + "defaultValue": "30" + }, + { + "name": "resolution", + "type": "object", + "description": "Resolution of the output video with width and height in pixels.", + "required": false, + "defaultValue": "{\"width\":1280,\"height\":720}" + }, + { + "name": "loopAudio", + "type": "boolean", + "description": "Whether to loop audio tracks to match video length if audio is shorter.", + "required": false, + "defaultValue": "false" + }, + { + "name": "backgroundColor", + "type": "string", + "description": "Background color for video frames where images do not cover entire frame, in hex format (e.g., '#000000').", + "required": false, + "defaultValue": "#000000" + } + ], + "returns": { + "type": "object", + "description": "Object containing video metadata and data URL or download URL of the created video file." + }, + "aiAgent": { + "useCase": "Use this tool when an AI or automation agent needs to programmatically generate videos from dynamic sets of images, audio, and texts—such as creating video summaries, tutorials, presentations, or marketing clips without manual video editing.", + "limitations": "This tool cannot perform complex video editing tasks like advanced transitions, effects, or 3D animations. It relies on input image and audio quality, supports limited video formats and resolutions dictated by processing engine.", + "examples": [ + "Create a slideshow video from a series of product images with background music and captions for each slide.", + "Generate a tutorial video with step images, overlayed instructions as text, and a narrator audio track.", + "Produce a marketing clip combining branded images and an audio jingle, exporting as MP4 in 1080p." + ] + }, + "tags": [ + "video", + "creation", + "media", + "images", + "audio", + "text-overlay", + "data-transformation" + ], + "examples": [ + { + "inputJson": "{\"images\":[{\"data\":\"https://example.com/image1.jpg\",\"duration\":3},{\"data\":\"https://example.com/image2.jpg\",\"duration\":4}],\"audioTracks\":[{\"data\":\"https://example.com/music.mp3\",\"startTime\":0}],\"textOverlays\":[{\"text\":\"Welcome\",\"x\":100,\"y\":50,\"fontSize\":24,\"color\":\"#FFFFFF\",\"startTime\":0,\"duration\":3}],\"videoFormat\":\"mp4\",\"frameRate\":30,\"resolution\":{\"width\":1280,\"height\":720}}", + "description": "Create a 7-second MP4 video slideshow from 2 images with background music and a welcome text overlay." + }, + { + "inputJson": "{\"images\":[{\"data\":\"data:image/png;base64,iVBORw0KGgoAAAANS...\",\"duration\":5}],\"audioTracks\":[],\"videoFormat\":\"webm\",\"frameRate\":25,\"resolution\":{\"width\":1920,\"height\":1080},\"backgroundColor\":\"#FFFFFF\"}", + "description": "Generate a 5-second white background video in WebM format from a single base64-encoded image without audio." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Video", + "context": null + } + }, + { + "name": "data-transformation.createRisk", + "description": "Creates a structured risk assessment object from given input data including risk description, likelihood, impact, and mitigation steps. It validates input parameters, computes a risk severity score, and outputs a detailed risk object suitable for security or project risk management processes.", + "category": "data-transformation", + "parameters": [ + { + "name": "riskId", + "type": "string", + "description": "A unique identifier for the risk being created.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A detailed description of the identified risk.", + "required": true, + "defaultValue": "" + }, + { + "name": "likelihood", + "type": "number", + "description": "The likelihood of the risk occurring, on a numeric scale (e.g., 1-5).", + "required": true, + "defaultValue": "" + }, + { + "name": "impact", + "type": "number", + "description": "The potential impact severity if the risk occurs, on a numeric scale (e.g., 1-5).", + "required": true, + "defaultValue": "" + }, + { + "name": "mitigationSteps", + "type": "array", + "description": "List of recommended mitigation steps or controls for managing the risk.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "category", + "type": "string", + "description": "Risk category or type (e.g., Security, Operational, Compliance).", + "required": false, + "defaultValue": "General" + }, + { + "name": "detectedDate", + "type": "string", + "description": "Date the risk was identified, in ISO 8601 format (YYYY-MM-DD).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured Risk object including id, description, likelihood, impact, severity score, mitigation steps, category, and detected date." + }, + "aiAgent": { + "useCase": "This tool is useful when an AI agent needs to create or transform raw risk data inputs into standardized risk assessment objects, typically during security assessments, compliance checks, or project risk evaluations. It helps in generating a consistent risk profile with calculated severity for further analysis or reporting.", + "limitations": "This tool does not conduct risk analysis or identify risks from unstructured data; it requires predefined input parameters. It cannot evaluate the effectiveness of mitigation steps, nor replace expert judgment in risk prioritization.", + "examples": [ + "Create a risk entry for a new cybersecurity threat with description, likelihood 4, impact 5, and mitigation steps.", + "Generate a risk object for operational risk detected during audit with medium likelihood and low impact.", + "Build a general compliance risk using the given risk ID, description, and category." + ] + }, + "tags": [ + "data-transformation", + "risk-management", + "security", + "compliance", + "assessment", + "severity-calculation" + ], + "examples": [ + { + "inputJson": "{\"riskId\":\"RISK-2024-001\",\"description\":\"Unauthorized access to confidential customer data.\",\"likelihood\":4,\"impact\":5,\"mitigationSteps\":[\"Implement multi-factor authentication\",\"Regular access audits\"],\"category\":\"Security\",\"detectedDate\":\"2024-05-12\"}", + "description": "Creating a security risk object for unauthorized data access with mitigation steps and severity calculated." + }, + { + "inputJson": "{\"riskId\":\"RISK-2024-002\",\"description\":\"Project delay due to supplier failure.\",\"likelihood\":3,\"impact\":3,\"mitigationSteps\":[\"Identify alternative suppliers\",\"Increase inventory buffer\"],\"category\":\"Operational\"}", + "description": "Creating an operational risk object with moderate risk values and mitigation strategies." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Risk", + "context": null + } + }, + { + "name": "data-transformation.createPayment", + "description": "Creates a structured payment object from input data including payer and payee information, amount, currency, and optional metadata. Validates and formats the input to produce a standardized payment JSON object ready for processing or storage.", + "category": "data-transformation", + "parameters": [ + { + "name": "payerId", + "type": "string", + "description": "Unique identifier for the payer initiating the payment.", + "required": true, + "defaultValue": "" + }, + { + "name": "payeeId", + "type": "string", + "description": "Unique identifier for the payee receiving the payment.", + "required": true, + "defaultValue": "" + }, + { + "name": "amount", + "type": "number", + "description": "The numeric value of the payment amount to be transferred, must be positive.", + "required": true, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "The ISO 4217 currency code (e.g., USD, EUR) used in the payment transaction.", + "required": true, + "defaultValue": "USD" + }, + { + "name": "paymentDate", + "type": "string", + "description": "ISO 8601 formatted date and time string representing when the payment is made.", + "required": false, + "defaultValue": "" + }, + { + "name": "paymentMethod", + "type": "string", + "description": "Method of payment, e.g., credit_card, bank_transfer, paypal.", + "required": false, + "defaultValue": "bank_transfer" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value pairs containing additional payment information or notes.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A validated, standardized payment object containing payerId, payeeId, amount, currency, paymentDate, paymentMethod, and metadata fields suitable for downstream processing." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to construct a consistent payment data structure from raw input parameters, ensuring proper format, validation, and default handling for integration into payment processing systems or databases.", + "limitations": "This tool does not execute payments or communicate with financial institutions; it solely prepares the payment data structure.", + "examples": [ + "Create a payment record for $150 USD from user123 to vendor456 scheduled for today using credit card.", + "Generate a payment object for transferring 200 EUR from clientA to supplierB with notes in metadata.", + "Build a payment JSON for instant bank transfer of 50 USD between two account IDs." + ] + }, + "tags": [ + "data-transformation", + "payment", + "financial", + "create", + "formatting", + "validation" + ], + "examples": [ + { + "inputJson": "{\"payerId\":\"user123\",\"payeeId\":\"vendor456\",\"amount\":150,\"currency\":\"USD\",\"paymentDate\":\"2024-06-01T10:00:00Z\",\"paymentMethod\":\"credit_card\",\"metadata\":{\"orderId\":\"ORD789\"}}", + "description": "Create a credit card payment of $150 USD from user123 to vendor456 with associated order ID." + }, + { + "inputJson": "{\"payerId\":\"clientA\",\"payeeId\":\"supplierB\",\"amount\":200,\"currency\":\"EUR\",\"paymentMethod\":\"bank_transfer\"}", + "description": "Generate payment structure for a 200 EUR bank transfer with no specific payment date, defaults apply." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Payment", + "context": null + } + }, + { + "name": "data-transformation.createOpportunity", + "description": "Creates a standardized Opportunity object from raw input data by extracting, validating, and transforming relevant business opportunity information such as customer details, potential revenue, stage, and expected close date. Outputs a structured Opportunity JSON ready for CRM integration or further processing.", + "category": "data-transformation", + "parameters": [ + { + "name": "rawInputData", + "type": "object", + "description": "Raw input data containing opportunity details in any format (e.g., from form submissions, spreadsheets, or APIs).", + "required": true, + "defaultValue": "" + }, + { + "name": "mappingSchema", + "type": "object", + "description": "Defines how to map fields from rawInputData to standardized Opportunity fields (e.g., keys to 'customerName', 'amount', 'stage').", + "required": true, + "defaultValue": "" + }, + { + "name": "validateFields", + "type": "boolean", + "description": "Flag to enable validation of required Opportunity fields such as customerName and amount.", + "required": false, + "defaultValue": "true" + }, + { + "name": "defaultStage", + "type": "string", + "description": "Default sales stage to assign if none found in the input data.", + "required": false, + "defaultValue": "Prospecting" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code for the opportunity amount if not specified in the input.", + "required": false, + "defaultValue": "USD" + } + ], + "returns": { + "type": "object", + "description": "A standardized Opportunity object with fields like customerName, amount, currency, stage, expectedCloseDate, and additional metadata for CRM ingestion or reporting." + }, + "aiAgent": { + "useCase": "Use this tool when the AI agent receives unstructured or semi-structured business lead data requiring normalization into a clean Opportunity object for CRM systems or sales analytics. It helps convert disparate input formats into a consistent schema with validation and default handling.", + "limitations": "Cannot enrich or validate external customer data beyond given inputs; complex nested raw data may require pre-processing before mapping.", + "examples": [ + "Create an Opportunity object from submitted web form data containing lead info and potential deal size.", + "Transform spreadsheet rows of prospect details into standardized Opportunity JSON for bulk upload.", + "Generate Opportunity objects from mixed API responses for integration with sales pipeline software." + ] + }, + "tags": [ + "data-transformation", + "business", + "CRM", + "opportunity", + "sales", + "normalization", + "data-mapping" + ], + "examples": [ + { + "inputJson": "{\"rawInputData\":{\"clientName\":\"Acme Corp\",\"potentialRevenue\":\"50000\",\"closeDate\":\"2024-12-31\",\"status\":\"Negotiation\"},\"mappingSchema\":{\"customerName\":\"clientName\",\"amount\":\"potentialRevenue\",\"expectedCloseDate\":\"closeDate\",\"stage\":\"status\"},\"validateFields\":true,\"defaultStage\":\"Qualification\",\"currency\":\"USD\"}", + "description": "Map raw client lead data into standardized Opportunity structure with validation enabled." + }, + { + "inputJson": "{\"rawInputData\":{\"company\":\"Beta LLC\",\"dealSize\":120000},\"mappingSchema\":{\"customerName\":\"company\",\"amount\":\"dealSize\"},\"validateFields\":false,\"defaultStage\":\"Prospecting\"}", + "description": "Create Opportunity with minimal fields and default stage; skip validation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Opportunity", + "context": null + } + }, + { + "name": "data-transformation.createTable", + "description": "Creates a structured data table from raw input data by defining columns and rows. Accepts input as an array of objects or arrays, along with optional column configurations. Outputs a consistent table representation as an array of objects with uniform keys, suitable for further data processing or export.", + "category": "data-transformation", + "parameters": [ + { + "name": "dataRows", + "type": "array", + "description": "An array of data entries representing rows; can be arrays or objects. Each entry corresponds to one table row.", + "required": true, + "defaultValue": "" + }, + { + "name": "columnHeaders", + "type": "array", + "description": "Optional array of strings defining the column headers. If omitted and dataRows contains objects, keys are extracted automatically.", + "required": false, + "defaultValue": "" + }, + { + "name": "fillMissingValues", + "type": "boolean", + "description": "If true, missing values in rows are filled with nulls to ensure consistent column counts.", + "required": false, + "defaultValue": "true" + }, + { + "name": "convertToObjects", + "type": "boolean", + "description": "If true, converts all rows into objects using columnHeaders as keys. If false, output remains array of arrays.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns a standardized table object containing 'headers' as an array of strings and 'rows' as an array of objects with keys matching headers. Ensures uniform structure for further data handling." + }, + "aiAgent": { + "useCase": "Use this tool when incoming data needs to be structured into a tabular format, especially when source data varies in format or completeness. Ideal for preparing data for visualization, storage, or transformation workflows requiring consistent tables. It simplifies heterogeneous or incomplete records into uniform rows and columns.", + "limitations": "Does not parse or clean individual cell content beyond uniform structuring. It cannot infer complex data types or validate data semantic correctness. Not designed for large-scale database table creation or direct database interaction.", + "examples": [ + "Create a table from JSON array where some rows have missing fields.", + "Convert array of arrays into a table with specified column headers.", + "Fill missing values with null to maintain alignment in the table output." + ] + }, + "tags": [ + "data-transformation", + "table", + "structure", + "formatting", + "preprocessing" + ], + "examples": [ + { + "inputJson": "{\"dataRows\":[{\"name\":\"Alice\",\"age\":30},{\"name\":\"Bob\"}],\"fillMissingValues\":true}", + "description": "Create a table from array of objects with missing fields, filling missing values." + }, + { + "inputJson": "{\"dataRows\":[[\"Alice\",30],[\"Bob\"],[\"Charlie\",25]],\"columnHeaders\":[\"name\",\"age\"],\"convertToObjects\":true}", + "description": "Convert array of arrays to table objects with specified headers." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Table", + "context": null + } + }, + { + "name": "data-transformation.createVariable", + "description": "Creates a declaration statement of a programming variable based on the specified language, variable name, type, and initial value. Accepts variable details and outputs a code snippet string initializing the variable as per language syntax conventions.", + "category": "data-transformation", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The name identifier for the variable to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "variableType", + "type": "string", + "description": "Data type of the variable, such as int, string, boolean, float, or language-specific types.", + "required": true, + "defaultValue": "" + }, + { + "name": "initialValue", + "type": "string", + "description": "Optional initial value to assign to the variable; left empty if no initialization desired.", + "required": false, + "defaultValue": "" + }, + { + "name": "programmingLanguage", + "type": "string", + "description": "Target programming language for the variable declaration, e.g., JavaScript, Python, Java, C#, or C++. Case insensitive.", + "required": true, + "defaultValue": "" + }, + { + "name": "isConstant", + "type": "boolean", + "description": "Whether the variable should be declared as a constant (immutable) if supported by the language.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated variable declaration code as a string." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to generate syntactically correct variable declaration code for a specified language and variable configuration, such as during code generation, templating, or automated scripting.", + "limitations": "The tool does not validate semantic correctness of variable types beyond basic mappings and does not generate complex initialization expressions or handle language-specific scoping or modifiers beyond constants.", + "examples": [ + "Create a constant integer variable named maxCount initialized to 10 in JavaScript.", + "Generate a mutable string variable userName with no initial value in Python.", + "Declare a boolean variable isEnabled initialized to true in Java." + ] + }, + "tags": [ + "data-transformation", + "code-generation", + "variable", + "programming", + "templating" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"maxCount\",\"variableType\":\"int\",\"initialValue\":\"10\",\"programmingLanguage\":\"JavaScript\",\"isConstant\":true}", + "description": "Create a constant integer variable named maxCount initialized to 10 in JavaScript." + }, + { + "inputJson": "{\"variableName\":\"userName\",\"variableType\":\"string\",\"initialValue\":\"\",\"programmingLanguage\":\"Python\",\"isConstant\":false}", + "description": "Create a mutable string variable userName with no initial value in Python." + }, + { + "inputJson": "{\"variableName\":\"isEnabled\",\"variableType\":\"boolean\",\"initialValue\":\"true\",\"programmingLanguage\":\"Java\",\"isConstant\":false}", + "description": "Create a mutable boolean variable isEnabled initialized to true in Java." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Variable", + "context": null + } + }, + { + "name": "data-validation.analyzeDashboard", + "description": "Analyzes dashboard data to validate data quality and integrity by examining metrics, visualizations, and filters. Accepts JSON dashboard configurations including data sources, metrics, filters, and layout. Processes to detect inconsistencies, missing data, or anomalies and produces a comprehensive report of validation results and suggested corrections.", + "category": "data-validation", + "parameters": [ + { + "name": "dashboardConfig", + "type": "object", + "description": "JSON object representing the dashboard configuration including data sources, metrics, filters, and visual elements to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "validationRules", + "type": "array", + "description": "Optional list of specific validation rules or checks to apply, such as 'missingData', 'outliers', or 'filterConflicts'.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeSuggestions", + "type": "boolean", + "description": "Whether to include suggestions for correcting detected data issues in the output report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxIssues", + "type": "number", + "description": "Maximum number of detected issues to include in the report to avoid excessive detail.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "An object containing a summary of validation results including total issues detected, detailed issues list with type, severity, location on dashboard, and optional suggestions for fixes." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to validate the accuracy, completeness, and consistency of data presented in dashboard configurations often before deployment or update. It helps ensure dashboards do not contain errors like missing data, inconsistent filters, or visual misrepresentations that could mislead users.", + "limitations": "Cannot directly connect to live data sources to fetch real-time data; requires dashboard configuration input. Does not fix issues automatically, only suggests corrections. May not detect all domain-specific semantic errors without custom validation rules.", + "examples": [ + "Analyze a sales dashboard config for missing values and conflicting filters.", + "Check marketing dashboard metrics for outliers and data inconsistencies.", + "Validate proposed dashboard layout and data sources for correctness before release." + ] + }, + "tags": [ + "data-validation", + "dashboard", + "analytics", + "quality-assurance", + "data-integrity", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"dashboardConfig\":{\"widgets\":[{\"type\":\"chart\",\"dataSource\":\"sales_db\",\"metric\":\"total_sales\",\"filters\":[{\"field\":\"region\",\"value\":\"NA\"}]}]}, \"validationRules\":[\"missingData\",\"filterConflicts\"], \"includeSuggestions\":true, \"maxIssues\":10}", + "description": "Analyze a sales dashboard configuration to identify missing data issues and filter conflicts, returning suggestions for fixing detected problems." + }, + { + "inputJson": "{\"dashboardConfig\":{\"widgets\":[{\"type\":\"table\",\"dataSource\":\"marketing_stats\",\"metric\":\"click_rate\",\"filters\":[]}],\"layout\":{\"rows\":1,\"columns\":1}}, \"validationRules\":[\"outliers\"], \"includeSuggestions\":false}", + "description": "Analyze a marketing dashboard focusing on detecting outliers in click rates without suggestions in the report." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Dashboard", + "context": null + } + }, + { + "name": "data-validation.analyzeLink", + "description": "This tool accepts a URL or hyperlink string and performs a thorough analysis to validate its format, check for URL safety, accessibility, and potential redirections. It outputs a detailed report including URL validity, HTTP status, safety assessment, final resolved URL, and any detected issues like broken links or suspicious patterns.", + "category": "data-validation", + "parameters": [ + { + "name": "url", + "type": "string", + "description": "The URL or hyperlink string to be analyzed for validation and safety checks.", + "required": true, + "defaultValue": "" + }, + { + "name": "checkAccessibility", + "type": "boolean", + "description": "Whether to perform an HTTP request to verify the URL is accessible (default: true).", + "required": false, + "defaultValue": "true" + }, + { + "name": "checkRedirects", + "type": "boolean", + "description": "Whether to follow the URL redirects to find the final destination URL (default: true).", + "required": false, + "defaultValue": "true" + }, + { + "name": "safetyScan", + "type": "boolean", + "description": "Whether to perform a safety scan to detect potentially malicious URLs (default: true).", + "required": false, + "defaultValue": "true" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "The maximum time in seconds to wait for HTTP responses during checks (default: 5).", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "An object containing the URL validation results, including isValidFormat (boolean), httpStatusCode (number|null), isAccessible (boolean|null), finalUrl (string|null), safetyStatus (string), issues (array of strings describing detected issues)" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to verify if a URL is syntactically valid, accessible, safe to visit, and to detect any redirects or potential issues such as broken links or suspicious URLs before further processing or presentation to users.", + "limitations": "This tool cannot guarantee absolute safety from all malicious URLs. It relies on heuristics and publicly available safety databases, and may not detect zero-day or very new threats. It also depends on network availability for accessibility and redirect checks.", + "examples": [ + "Analyze the safety and accessibility of the URL https://example.com.", + "Check if https://malicious-site.test is a valid and safe link to share.", + "Verify accessibility and final redirect destination of the provided hyperlink." + ] + }, + "tags": [ + "validation", + "links", + "URL", + "security", + "accessibility", + "analysis" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://example.com\"}", + "description": "Basic validation and safety check on a common URL." + }, + { + "inputJson": "{\"url\":\"http://bit.ly/2HlzRf1\",\"checkRedirects\":true}", + "description": "Analyze a shortened URL and follow redirects to find the final destination." + }, + { + "inputJson": "{\"url\":\"htp://invalid-url\",\"checkAccessibility\":false}", + "description": "Test URL with invalid format and skip accessibility check to just validate syntax." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Link", + "context": null + } + }, + { + "name": "data-validation.analyzeRisk", + "description": "This tool accepts structured data records containing various attributes relevant to security and operational contexts. It processes this input by applying configurable risk analysis algorithms including threat probability estimation, impact assessment, and vulnerability correlation. The output is a detailed risk report with risk scores, categorizations (e.g., high, medium, low), and suggested mitigations to inform decision-making and prioritization.", + "category": "data-validation", + "parameters": [ + { + "name": "dataRecords", + "type": "array", + "description": "An array of data objects representing assets, events, or conditions to be analyzed for risk. Each record should include necessary attributes like asset value, known vulnerabilities, and threat indicators.", + "required": true, + "defaultValue": "" + }, + { + "name": "riskModel", + "type": "string", + "description": "The specific risk analysis model or methodology to apply (e.g., 'OWASP Top 10', 'NIST SP 800-30', 'custom'). Determines how risk factors are weighted and aggregated.", + "required": false, + "defaultValue": "NIST SP 800-30" + }, + { + "name": "thresholdHigh", + "type": "number", + "description": "Numeric threshold above which risk is categorized as 'High'. Helps in classifying the severity of detected risks.", + "required": false, + "defaultValue": "0.7" + }, + { + "name": "thresholdMedium", + "type": "number", + "description": "Numeric threshold above which risk is categorized as 'Medium'. Values below this but above Medium threshold are 'Low'.", + "required": false, + "defaultValue": "0.4" + }, + { + "name": "includeMitigations", + "type": "boolean", + "description": "Whether the output should include recommended mitigation strategies for identified risks.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing an array of risk assessments for each input record, including calculated risk score, risk level (High, Medium, Low), identified risk factors, and optional mitigation recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when needing to assess and prioritize security or operational risks based on input data about the environment, assets, vulnerabilities, or threats. It is ideal for generating risk reports to guide mitigation and resource allocation decisions.", + "limitations": "Does not perform real-time monitoring or breach detection. Quality and completeness of risk evaluation depend heavily on input data accuracy and chosen risk model.", + "examples": [ + "Analyze risk levels for a list of IT assets with known vulnerabilities using the NIST model.", + "Evaluate risk for security events input and receive mitigation recommendations.", + "Generate a risk report for operational risks in a manufacturing environment with customized thresholds." + ] + }, + "tags": [ + "data-validation", + "risk-analysis", + "security", + "assessment", + "threat-evaluation", + "mitigation" + ], + "examples": [ + { + "inputJson": "{\"dataRecords\":[{\"id\":\"asset1\",\"assetValue\":100000,\"vulnerabilities\":[\"CVE-2021-1234\"],\"threatIndicators\":[\"phishing\"]}],\"riskModel\":\"NIST SP 800-30\",\"thresholdHigh\":0.7,\"thresholdMedium\":0.4,\"includeMitigations\":true}", + "description": "Analyzing risk for a single IT asset with a known vulnerability and phishing threat indicator using default NIST risk thresholds and including mitigation suggestions." + }, + { + "inputJson": "{\"dataRecords\":[{\"id\":\"event42\",\"eventType\":\"loginFailure\",\"frequency\":50,\"impactScore\":0.3}],\"riskModel\":\"custom\",\"thresholdHigh\":0.8,\"thresholdMedium\":0.5,\"includeMitigations\":false}", + "description": "Evaluating an event risk profile with a custom model and thresholds, excluding mitigation recommendations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Risk", + "context": null + } + }, + { + "name": "data-validation.sendNotification", + "description": "Sends a notification message to specified recipients when a data validation event occurs. Accepts inputs for message content, recipient details, and notification type, processes the information to format a notification, and outputs the delivery status and any errors encountered.", + "category": "data-validation", + "parameters": [ + { + "name": "message", + "type": "string", + "description": "The content of the notification message to be sent.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipients", + "type": "array", + "description": "A list of recipient contact strings such as email addresses or phone numbers to receive the notification.", + "required": true, + "defaultValue": "" + }, + { + "name": "notificationType", + "type": "string", + "description": "The type or channel of notification to send, e.g. 'email', 'sms', or 'push'.", + "required": true, + "defaultValue": "email" + }, + { + "name": "priority", + "type": "string", + "description": "Optional priority level of the notification, such as 'high', 'normal', or 'low'.", + "required": false, + "defaultValue": "normal" + }, + { + "name": "subject", + "type": "string", + "description": "Optional subject line for the notification when sent via email or similar channels.", + "required": false, + "defaultValue": "" + }, + { + "name": "dataValidationEventId", + "type": "string", + "description": "Identifier for the data validation event triggering this notification, for tracking purposes.", + "required": false, + "defaultValue": "" + }, + { + "name": "sendAsync", + "type": "boolean", + "description": "Flag indicating whether to send the notification asynchronously (default true).", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the status of the notification delivery for each recipient, including success indicators and error messages if any." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to notify stakeholders or systems about the results or status of data validation operations. It facilitates real-time alerts or messages for errors, warnings, or completions to ensure prompt attention.", + "limitations": "This tool does not perform data validation itself, nor can it guarantee delivery on unreliable communication channels. It also does not support advanced multi-channel fallbacks or analytics.", + "examples": [ + "Send a warning notification to the data engineering team if data validation fails.", + "Notify the compliance officer via email with the details of validation errors.", + "Alert system administrators by SMS about high priority data validation exceptions." + ] + }, + "tags": [ + "notification", + "data-validation", + "alert", + "communication", + "messaging", + "event-driven" + ], + "examples": [ + { + "inputJson": "{\"message\":\"Data validation failed for batch #123.\",\"recipients\":[\"ops-team@example.com\"],\"notificationType\":\"email\",\"priority\":\"high\",\"subject\":\"Validation Error Alert\",\"dataValidationEventId\":\"evt-7890\",\"sendAsync\":true}", + "description": "Send a high priority email notification about a failed validation event to the operations team." + }, + { + "inputJson": "{\"message\":\"Data integrity check passed successfully.\",\"recipients\":[\"admin@example.com\",\"qa-team@example.com\"],\"notificationType\":\"email\",\"priority\":\"normal\",\"subject\":\"Validation Success\",\"sendAsync\":false}", + "description": "Synchronous notification to admin and QA team on successful data validation." + }, + { + "inputJson": "{\"message\":\"Critical validation error detected.\",\"recipients\":[\"+15551234567\"],\"notificationType\":\"sms\",\"priority\":\"high\",\"sendAsync\":true}", + "description": "Send a high priority SMS alert about a critical data validation error to a phone number." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Notification", + "context": null + } + }, + { + "name": "data-validation.uploadImage", + "description": "This tool accepts image files as input and performs validation checks to ensure image quality and integrity. It verifies file format, resolution, file size, and scans for corruption or unsupported content. The tool returns a validation report indicating if the image meets specified criteria or detailing errors found.", + "category": "data-validation", + "parameters": [ + { + "name": "imageData", + "type": "string", + "description": "Base64-encoded string or URL of the image file to validate", + "required": true, + "defaultValue": "" + }, + { + "name": "allowedFormats", + "type": "array", + "description": "List of acceptable image formats (e.g., [\"jpg\", \"png\", \"gif\"]). If empty, defaults to common formats.", + "required": false, + "defaultValue": "[\"jpg\",\"png\",\"gif\",\"bmp\",\"tiff\"]" + }, + { + "name": "minResolution", + "type": "object", + "description": "Minimum required resolution with width and height in pixels (e.g., {\"width\":800,\"height\":600})", + "required": false, + "defaultValue": "{\"width\":0,\"height\":0}" + }, + { + "name": "maxResolution", + "type": "object", + "description": "Maximum allowed resolution with width and height in pixels", + "required": false, + "defaultValue": "{\"width\":10000,\"height\":10000}" + }, + { + "name": "maxFileSizeMB", + "type": "number", + "description": "Maximum allowed file size in megabytes", + "required": false, + "defaultValue": "5" + }, + { + "name": "scanForCorruption", + "type": "boolean", + "description": "If true, performs a scan to detect corrupted or partially broken images", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "ValidationResult object containing overall isValid boolean, list of error messages if any, detected image format, dimensions, and file size in bytes." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to validate uploaded image files for format correctness, quality thresholds, and integrity before further processing such as analysis, classification, or storage. It helps ensure only valid images that meet criteria proceed.", + "limitations": "This tool cannot repair corrupted images or enhance image quality. It does not perform detailed content analysis beyond format and structural validation.", + "examples": [ + "Validate if user-uploaded profile picture is an acceptable JPEG or PNG under 5MB and minimum 400x400 pixels.", + "Check batch of images for valid formats and no corruption before processing.", + "Validate an image URL's format and size before downloading and using it." + ] + }, + "tags": [ + "image", + "validation", + "upload", + "file-quality", + "format-check", + "corruption-detection" + ], + "examples": [ + { + "inputJson": "{\"imageData\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA\",\"allowedFormats\":[\"png\",\"jpg\"],\"minResolution\":{\"width\":400,\"height\":400},\"maxFileSizeMB\":2,\"scanForCorruption\":true}", + "description": "Validate a small uploaded PNG image ensuring it meets size and format requirements." + }, + { + "inputJson": "{\"imageData\":\"https://example.com/photo.jpg\",\"allowedFormats\":[\"jpg\"],\"minResolution\":{\"width\":800,\"height\":600},\"maxResolution\":{\"width\":1920,\"height\":1080},\"maxFileSizeMB\":3,\"scanForCorruption\":true}", + "description": "Validate an image by URL with resolution and size constraints to confirm it is suitable for website use." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Image", + "context": null + } + }, + { + "name": "data-validation.uploadDataset", + "description": "Uploads a dataset in CSV or JSON format to the data validation system. It performs initial integrity checks such as schema conformity, missing values detection, and basic data quality assessment. Returns a detailed validation report indicating detected issues and summary statistics.", + "category": "data-validation", + "parameters": [ + { + "name": "datasetName", + "type": "string", + "description": "The unique name to identify the uploaded dataset.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataFormat", + "type": "string", + "description": "Format of the dataset being uploaded. Supported formats: 'csv', 'json'.", + "required": true, + "defaultValue": "" + }, + { + "name": "datasetContent", + "type": "string", + "description": "The raw content of the dataset in string format, representing the complete CSV text or JSON array/object.", + "required": true, + "defaultValue": "" + }, + { + "name": "schemaDefinition", + "type": "object", + "description": "Optional JSON schema defining expected fields, types, and constraints for validating dataset structure and data types.", + "required": false, + "defaultValue": "" + }, + { + "name": "allowPartialUpload", + "type": "boolean", + "description": "If true, allows upload to succeed with warnings even if some non-critical validation issues are found.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing validation results including success status, list of detected errors or warnings, row counts, and summary statistics for numeric fields." + }, + "aiAgent": { + "useCase": "Use this tool when ingesting new datasets that require automated data quality and integrity validation before further processing or storage. This is especially useful for ensuring datasets meet schema requirements and contain no critical data quality issues to prevent downstream errors.", + "limitations": "This tool validates format, schema compliance, and basic data integrity but does not perform deep semantic validation or complex anomaly detection. It relies on provided schema for structure validation and cannot correct data errors automatically.", + "examples": [ + "Upload a sales transactions CSV file with specified schema to validate field types and completeness.", + "Ingest a JSON dataset of customer profiles ensuring required attributes are present and valid.", + "Submit a dataset with known missing optional fields but allow partial upload with warnings." + ] + }, + "tags": [ + "data-validation", + "dataset-management", + "upload", + "data-quality", + "schema-validation" + ], + "examples": [ + { + "inputJson": "{\"datasetName\":\"customer_data_june\",\"dataFormat\":\"csv\",\"datasetContent\":\"id,name,email,age\\n1,John Doe,john@example.com,30\\n2,Jane Smith,jane@sample.com,25\",\"schemaDefinition\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\"},\"name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"age\":{\"type\":\"integer\",\"minimum\":0}},\"required\":[\"id\",\"name\",\"email\"]},\"allowPartialUpload\":false}", + "description": "Uploading a customer data CSV with specific schema requiring id, name, email fields." + }, + { + "inputJson": "{\"datasetName\":\"product_inventory\",\"dataFormat\":\"json\",\"datasetContent\":\"[{\\\"product_id\\\":101,\\\"name\\\":\\\"Widget\\\",\\\"quantity\\\":50},{\\\"product_id\\\":102,\\\"name\\\":\\\"Gadget\\\",\\\"quantity\\\":-5}]\",\"schemaDefinition\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"product_id\":{\"type\":\"integer\"},\"name\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\",\"minimum\":0}},\"required\":[\"product_id\",\"name\",\"quantity\"]}},\"allowPartialUpload\":true}", + "description": "Uploading a product inventory dataset with quantity validation and allowing partial upload despite a negative quantity warning." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Dataset", + "context": null + } + }, + { + "name": "data-validation.downloadDataset", + "description": "Downloads datasets from specified URL sources, validates their integrity using optional checksum verification and format checks, and outputs the dataset content along with validation status and metadata.", + "category": "data-validation", + "parameters": [ + { + "name": "datasetUrl", + "type": "string", + "description": "The URL from which to download the dataset file.", + "required": true, + "defaultValue": "" + }, + { + "name": "expectedChecksum", + "type": "string", + "description": "Optional SHA256 checksum string to verify dataset integrity after download.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileFormat", + "type": "string", + "description": "Expected format of the dataset file (e.g., csv, json, xml) for validation purposes.", + "required": false, + "defaultValue": "" + }, + { + "name": "maxFileSizeMB", + "type": "number", + "description": "Maximum allowed file size in megabytes to prevent downloading excessively large files.", + "required": false, + "defaultValue": "100" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait for the download to complete before timing out.", + "required": false, + "defaultValue": "60" + }, + { + "name": "retryCount", + "type": "number", + "description": "Number of retry attempts if the download fails due to network errors.", + "required": false, + "defaultValue": "3" + } + ], + "returns": { + "type": "object", + "description": "An object containing the dataset content as a string or parsed structure, validation status, error messages if any, and metadata such as file size and download duration." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically retrieve datasets from remote URLs and ensure their quality by validating file integrity and format before processing. This is helpful in data pipelines, automated data ingestion, or pre-processing steps where verified data is crucial.", + "limitations": "This tool does not parse complex nested data formats fully, only basic format validation is performed. It cannot handle datasets requiring authentication or stored behind secured APIs without additional support. It does not perform semantic validation of data content beyond format and size checks.", + "examples": [ + "Download a CSV file from a public repository and verify its SHA256 checksum.", + "Fetch a JSON dataset with a file size limit to avoid large downloads.", + "Attempt to download a dataset with retry support on unstable connections." + ] + }, + "tags": [ + "data-validation", + "dataset-download", + "integrity-check", + "file-download", + "format-validation" + ], + "examples": [ + { + "inputJson": "{\"datasetUrl\":\"https://example.com/data/sample.csv\",\"expectedChecksum\":\"d2d2d2e1f1c3a4b5c6d7e8f9a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8g9h0\",\"fileFormat\":\"csv\",\"maxFileSizeMB\":50}", + "description": "Download a CSV dataset from a public URL with checksum verification and 50 MB size limit." + }, + { + "inputJson": "{\"datasetUrl\":\"https://api.opendata.org/dataset.json\",\"fileFormat\":\"json\",\"timeoutSeconds\":30,\"retryCount\":2}", + "description": "Download a JSON dataset with a 30 second timeout and up to 2 retries on failure." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Dataset", + "context": null + } + }, + { + "name": "data-validation.downloadImage", + "description": "Downloads an image from a provided URL and validates its integrity by checking if the image data is fully retrievable and matches expected content-type headers. Accepts image URL and optional timeout parameters, returns download status, image metadata, and validation results.", + "category": "data-validation", + "parameters": [ + { + "name": "imageUrl", + "type": "string", + "description": "The URL of the image to download and validate.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait for the download before timing out.", + "required": false, + "defaultValue": "30" + }, + { + "name": "validateContentType", + "type": "boolean", + "description": "Whether to validate the HTTP Content-Type header corresponds to a known image MIME type.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxImageSizeMB", + "type": "number", + "description": "Maximum allowed image size in megabytes; downloads exceeding this size are aborted.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "An object containing a success flag, image metadata (format, size, dimensions), HTTP status code, error messages if any, and validation results indicating integrity and content-type checks." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically download images from URLs for validation purposes, ensuring the image is authentic, complete, and meets size and type expectations before processing or storage. Applicable in pipelines for data ingestion, web scraping, or content validation workflows.", + "limitations": "Does not perform deep content authenticity checks beyond content-type validation and size. Cannot validate images behind authentication or require advanced image forensic checks.", + "examples": [ + "Download and validate an image from a public URL to ensure it is complete and a valid JPEG before processing.", + "Check if an image from a URL meets size constraints and content-type expectations before saving.", + "Download an image with a custom timeout and validate its MIME type to avoid corrupted downloads." + ] + }, + "tags": [ + "data-validation", + "download", + "image", + "url", + "integrity-check", + "media" + ], + "examples": [ + { + "inputJson": "{\"imageUrl\":\"https://example.com/image.jpg\",\"timeoutSeconds\":15,\"validateContentType\":true}", + "description": "Download and validate a JPEG image from a public URL with a 15 second timeout and content-type check." + }, + { + "inputJson": "{\"imageUrl\":\"https://example.com/large-image.png\",\"maxImageSizeMB\":5}", + "description": "Attempt to download an image enforcing a maximum size of 5 MB, to prevent excessive resource use." + }, + { + "inputJson": "{\"imageUrl\":\"https://example.com/image.gif\",\"validateContentType\":false}", + "description": "Download a GIF image without validating the content-type header." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Image", + "context": null + } + }, + { + "name": "data-validation.formatDataset", + "description": "Formats a dataset by validating and standardizing its structure based on provided schema rules. Accepts dataset input as JSON or CSV string, applies formatting rules such as type coercion, required field enforcement, and date formatting, and outputs a cleaned, consistently structured dataset in JSON format along with validation status and error details if any.", + "category": "data-validation", + "parameters": [ + { + "name": "dataset", + "type": "string", + "description": "Input dataset as a JSON string or CSV string to be formatted and validated.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatType", + "type": "string", + "description": "Specify the input dataset format type: 'json' or 'csv'.", + "required": true, + "defaultValue": "json" + }, + { + "name": "schema", + "type": "object", + "description": "Schema object defining expected fields, data types, required flags, and formatting rules.", + "required": true, + "defaultValue": "" + }, + { + "name": "dateFormat", + "type": "string", + "description": "Desired date format string to normalize date fields (e.g., 'YYYY-MM-DD').", + "required": false, + "defaultValue": "YYYY-MM-DD" + }, + { + "name": "enforceRequiredFields", + "type": "boolean", + "description": "Whether to enforce required fields defined in the schema and report missing fields as errors.", + "required": false, + "defaultValue": "true" + }, + { + "name": "coerceTypes", + "type": "boolean", + "description": "Whether to attempt coercion of field values to the specified types in the schema.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing 'formattedDataset' (array of validated and formatted records), 'isValid' (boolean indicating overall dataset validity), and 'errors' (array detailing any errors per record)." + }, + "aiAgent": { + "useCase": "Use this tool when you need to clean, validate, and standardize datasets before analysis or ingestion into systems. Ideal for transforming raw JSON or CSV data into a consistent format ensuring data integrity follows a predefined schema, normalizing types and date representations.", + "limitations": "The tool does not perform advanced data imputation or external reference checks. It relies on the accuracy and completeness of the provided schema for validation and formatting.", + "examples": [ + "Format a CSV sales data file according to provided schema to ensure dates and numbers are standardized and required fields exist.", + "Validate JSON customer records against a schema to ensure all required fields are present, correct data types, and normalize dates.", + "Coerce and format a loosely structured JSON dataset of events to a consistent shape and output clean JSON array." + ] + }, + "tags": [ + "data-validation", + "dataset-formatting", + "data-cleaning", + "schema-validation", + "json", + "csv" + ], + "examples": [ + { + "inputJson": "{\"dataset\":\"[{\\\"id\\\":\\\"123\\\",\\\"date\\\":\\\"01/12/2024\\\",\\\"amount\\\":\\\"1000\\\"},{\\\"id\\\":\\\"124\\\",\\\"date\\\":\\\"2024-12-02\\\",\\\"amount\\\":\\\"950.5\\\"}]\",\"formatType\":\"json\",\"schema\":{\"id\":{\"type\":\"string\",\"required\":true},\"date\":{\"type\":\"date\",\"required\":true},\"amount\":{\"type\":\"number\",\"required\":true}},\"dateFormat\":\"YYYY-MM-DD\",\"enforceRequiredFields\":true,\"coerceTypes\":true}", + "description": "Format JSON dataset, coercing types and normalizing dates to YYYY-MM-DD." + }, + { + "inputJson": "{\"dataset\":\"id,date,amount\\n1,2024/01/15,1500\\n2,15-01-2024,2000\",\"formatType\":\"csv\",\"schema\":{\"id\":{\"type\":\"number\",\"required\":true},\"date\":{\"type\":\"date\",\"required\":true},\"amount\":{\"type\":\"number\",\"required\":true}},\"dateFormat\":\"YYYY-MM-DD\",\"enforceRequiredFields\":true,\"coerceTypes\":true}", + "description": "Format CSV string dataset by parsing and validating fields with date conversion." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Dataset", + "context": null + } + }, + { + "name": "data-validation.sendAlert", + "description": "This tool accepts alert details including severity, message, and metadata about a security-related data validation failure. It processes the input to format and send alerts through configured notification channels (email, SMS, or webhook). It returns a confirmation of alert delivery status with timestamps and any error messages.", + "category": "data-validation", + "parameters": [ + { + "name": "alertSeverity", + "type": "string", + "description": "Severity level of the alert (e.g., low, medium, high, critical).", + "required": true, + "defaultValue": "" + }, + { + "name": "alertMessage", + "type": "string", + "description": "Primary message describing the data validation issue triggering the alert.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Additional contextual information related to the alert such as data source, validation rule, or affected dataset.", + "required": false, + "defaultValue": "" + }, + { + "name": "notificationChannels", + "type": "array", + "description": "List of channels to send the alert through (e.g., ['email', 'sms', 'webhook']).", + "required": true, + "defaultValue": "[\"email\"]" + }, + { + "name": "recipients", + "type": "array", + "description": "List of recipients for the alert notification, such as email addresses or phone numbers.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "webhookUrl", + "type": "string", + "description": "Webhook URL to send alert payload if 'webhook' is among notification channels.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Object containing the status of the alert dispatch including success flags, timestamps, and error details if any." + }, + "aiAgent": { + "useCase": "Use this tool when a data validation process detects anomalies or failures that require immediate attention, and automated alerting is necessary to notify security teams or data owners through preferred communication channels.", + "limitations": "This tool does not itself perform data validation or fix data issues; it only sends alert notifications. Channel configurations like email server setup or SMS gateway integrations must be preconfigured externally.", + "examples": [ + "Send an alert for a critical data validation failure to email and SMS recipients.", + "Dispatch a high severity alert with metadata via webhook to monitoring system." + ] + }, + "tags": [ + "data-validation", + "alerting", + "notification", + "security", + "monitoring" + ], + "examples": [ + { + "inputJson": "{\"alertSeverity\":\"critical\",\"alertMessage\":\"Data integrity check failed for Customer dataset.\",\"metadata\":{\"ruleId\":\"VAL-102\",\"source\":\"ETL Pipeline\"},\"notificationChannels\":[\"email\",\"sms\"],\"recipients\":[\"secops@example.com\",\"+15555551234\"]}", + "description": "Send a critical alert about data integrity failure to security operations via email and SMS." + }, + { + "inputJson": "{\"alertSeverity\":\"high\",\"alertMessage\":\"Unexpected null values detected in transaction records.\",\"metadata\":{\"affectedTable\":\"transactions_2024\"},\"notificationChannels\":[\"webhook\"],\"recipients\":[],\"webhookUrl\":\"https://hooks.example.com/alerts\"}", + "description": "Send a high severity alert with metadata through a webhook to an incident tracking system." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Alert", + "context": null + } + }, + { + "name": "data-validation.formatWord", + "description": "This tool accepts a word input as a string and formats it according to specified parameters such as case style (e.g., uppercase, lowercase, title case), locale-specific capitalization rules, and optional trimming of whitespace. It outputs the transformed word string, ensuring consistent formatting for data validation or display purposes.", + "category": "data-validation", + "parameters": [ + { + "name": "word", + "type": "string", + "description": "The input word string to format.", + "required": true, + "defaultValue": "" + }, + { + "name": "caseStyle", + "type": "string", + "description": "The desired case format: 'uppercase', 'lowercase', 'titlecase', or 'none' for no change.", + "required": false, + "defaultValue": "none" + }, + { + "name": "locale", + "type": "string", + "description": "Locale code (e.g., 'en-US', 'tr-TR') to apply locale-specific casing rules when applicable.", + "required": false, + "defaultValue": "en-US" + }, + { + "name": "trimWhitespace", + "type": "boolean", + "description": "Whether to trim leading and trailing whitespace from the input word before formatting.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted word string under 'formattedWord' key." + }, + "aiAgent": { + "useCase": "Use this tool when you need to standardize the format of a single word input for data validation, UI display, or text normalization, especially when locale-specific casing or whitespace trimming is needed. It helps ensure consistent word formatting across data entries or user inputs.", + "limitations": "This tool only formats a single word string; it does not handle multiple words or sentences, nor does it perform semantic validation or spell checking.", + "examples": [ + "Format the word 'straße' to uppercase with German locale rules.", + "Convert the word ' example ' to title case and trim whitespace.", + "Return the lowercase version of the input word without trimming." + ] + }, + "tags": [ + "formatting", + "validation", + "string", + "word", + "localization", + "text-processing" + ], + "examples": [ + { + "inputJson": "{\"word\":\"straße\",\"caseStyle\":\"uppercase\",\"locale\":\"de-DE\",\"trimWhitespace\":true}", + "description": "Formats the German word 'straße' to uppercase with German locale rules, resulting in 'STRASSE'." + }, + { + "inputJson": "{\"word\":\" example \",\"caseStyle\":\"titlecase\",\"locale\":\"en-US\",\"trimWhitespace\":true}", + "description": "Trims whitespace and converts 'example' to Title Case, resulting in 'Example'." + }, + { + "inputJson": "{\"word\":\"Hello\",\"caseStyle\":\"lowercase\",\"locale\":\"en-US\",\"trimWhitespace\":false}", + "description": "Returns 'hello' by converting the input word to lowercase without trimming whitespace." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Word", + "context": null + } + }, + { + "name": "data-validation.formatText", + "description": "This tool accepts raw text input and formats it according to specified standards such as trimming whitespace, converting case styles (uppercase, lowercase, title case), normalizing whitespace, and applying custom replacements. It outputs the formatted text string ready for validation or further processing.", + "category": "data-validation", + "parameters": [ + { + "name": "inputText", + "type": "string", + "description": "The raw input text string to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "trimWhitespace", + "type": "boolean", + "description": "Remove leading and trailing whitespace from the input text.", + "required": false, + "defaultValue": "true" + }, + { + "name": "caseStyle", + "type": "string", + "description": "Convert the text to a case style: 'none', 'uppercase', 'lowercase', or 'titlecase'.", + "required": false, + "defaultValue": "none" + }, + { + "name": "normalizeWhitespace", + "type": "boolean", + "description": "Reduce multiple internal whitespace characters to a single space.", + "required": false, + "defaultValue": "true" + }, + { + "name": "customReplacements", + "type": "object", + "description": "An object containing key-value pairs for replacing specific substrings in the text. Keys are strings to find; values are replacement strings.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted text string under 'formattedText' key." + }, + "aiAgent": { + "useCase": "Use this tool when raw text inputs require cleaning and standard formatting before validation or further processing, such as normalizing user input, logs, or dataset entries to ensure consistency. It helps prepare text data by adjusting case, removing unwanted whitespace, and applying specific substring replacements to match a desired format.", + "limitations": "This tool does not perform semantic text analysis, grammar correction, or language translation. It only modifies formatting aspects based on supplied parameters.", + "examples": [ + "Format a user-submitted address by trimming spaces and converting to title case.", + "Normalize log messages by converting to lowercase and removing extra internal spaces.", + "Apply specific substring replacements like correcting common misspellings before validation." + ] + }, + "tags": [ + "formatting", + "text", + "data cleaning", + "validation", + "normalization" + ], + "examples": [ + { + "inputJson": "{\"inputText\":\" hello WORLD! \",\"trimWhitespace\":true,\"caseStyle\":\"titlecase\",\"normalizeWhitespace\":true,\"customReplacements\":{}}", + "description": "Trim spaces and convert text to title case." + }, + { + "inputJson": "{\"inputText\":\"This is a TEST.\",\"trimWhitespace\":false,\"caseStyle\":\"lowercase\",\"normalizeWhitespace\":true,\"customReplacements\":{}}", + "description": "Normalize internal spaces and convert all letters to lowercase." + }, + { + "inputJson": "{\"inputText\":\"Errorrrrr in input.\",\"trimWhitespace\":true,\"caseStyle\":\"none\",\"normalizeWhitespace\":true,\"customReplacements\":{\"Errorrrrr\":\"Error\"}}", + "description": "Trim spaces, normalize whitespace, and fix a repeated character mistake with custom replacement." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Text", + "context": null + } + }, + { + "name": "data-validation.composeWord", + "description": "This tool accepts parameters to construct a word that meets specified validation constraints such as length boundaries, character sets, and inclusion or exclusion of certain substrings. It processes the constraints and composes a single word string that adheres to all given validation rules. It outputs the composed word or an error message if no valid word can be created.", + "category": "data-validation", + "parameters": [ + { + "name": "minLength", + "type": "number", + "description": "The minimum length of the composed word (inclusive).", + "required": false, + "defaultValue": "1" + }, + { + "name": "maxLength", + "type": "number", + "description": "The maximum length of the composed word (inclusive).", + "required": false, + "defaultValue": "20" + }, + { + "name": "allowedCharacters", + "type": "string", + "description": "String containing all allowed characters that can be used in the composed word.", + "required": false, + "defaultValue": "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + }, + { + "name": "mustIncludeSubstrings", + "type": "array", + "description": "Array of substrings that must appear somewhere within the composed word.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "mustExcludeSubstrings", + "type": "array", + "description": "Array of substrings that must not appear anywhere in the composed word.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "caseSensitive", + "type": "boolean", + "description": "Whether the substring constraints are case sensitive.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing either the composed valid word or an error message if no valid word could be generated." + }, + "aiAgent": { + "useCase": "An AI agent should use data-validation.composeWord when it needs to generate a single word that complies with specific validation constraints before further processing or submitting to systems requiring validated input. This is useful for generating test data, passwords, codes, or controlled vocabulary entries that fulfill exact integrity rules.", + "limitations": "This tool cannot generate meaningful dictionary words on demand; it constructs words syntactically valid based on the parameters, but without semantic awareness. It also may fail to generate a word if given overly restrictive constraints.", + "examples": [ + "Compose a word of length between 5 and 8 with only lowercase letters that includes 'cat' but excludes 'dog'.", + "Generate a case-insensitive word of length 3 to 6 that must include the substrings 'ab' and exclude 'xyz'.", + "Create a valid word of length 4 to 10 using letters only, without any substring constraints." + ] + }, + "tags": [ + "data-validation", + "word-generation", + "string-composition", + "input-validation", + "constraint-satisfaction" + ], + "examples": [ + { + "inputJson": "{\"minLength\":5,\"maxLength\":8,\"allowedCharacters\":\"abcdefghijklmnopqrstuvwxyz\",\"mustIncludeSubstrings\":[\"cat\"],\"mustExcludeSubstrings\":[\"dog\"],\"caseSensitive\":false}", + "description": "Compose a lowercase word between 5 and 8 letters that includes 'cat' and excludes 'dog'" + }, + { + "inputJson": "{\"minLength\":3,\"maxLength\":6,\"allowedCharacters\":\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",\"mustIncludeSubstrings\":[\"Ab\"],\"mustExcludeSubstrings\":[\"xyz\"],\"caseSensitive\":true}", + "description": "Generate a case-sensitive word including 'Ab' but not containing 'xyz', length 3-6" + }, + { + "inputJson": "{\"minLength\":4,\"maxLength\":10,\"allowedCharacters\":\"abcdefghijklmnopqrstuvwxyz\",\"mustIncludeSubstrings\":[],\"mustExcludeSubstrings\":[],\"caseSensitive\":true}", + "description": "Create a lowercase word of length between 4 and 10 with no substring constraints" + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Word", + "context": null + } + }, + { + "name": "data-validation.formatTest", + "description": "Validates and formats test code snippets to ensure consistent style and correctness. Accepts code as a string in common programming languages, applies formatting rules (indentation, spacing), and returns the formatted code along with validation status and error messages if formatting rules are violated.", + "category": "data-validation", + "parameters": [ + { + "name": "code", + "type": "string", + "description": "The source code of the test to be validated and formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming language of the test code (e.g., 'javascript', 'python').", + "required": true, + "defaultValue": "" + }, + { + "name": "styleGuide", + "type": "string", + "description": "Optional style guide or formatting rules to follow (e.g., 'Google', 'Airbnb').", + "required": false, + "defaultValue": "" + }, + { + "name": "maxLineLength", + "type": "number", + "description": "Maximum allowed line length for the formatted code.", + "required": false, + "defaultValue": "80" + }, + { + "name": "fixErrors", + "type": "boolean", + "description": "Whether to automatically fix detected formatting errors if possible.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Object containing the formatted test code, validation status, and an array of formatting errors if any." + }, + "aiAgent": { + "useCase": "Use this tool when needing to ensure test code snippets conform to specific formatting and style standards before integration or further processing. It is particularly useful for preparing tests to pass CI/CD linters or for generating readable code examples.", + "limitations": "This tool does not validate test logic or correctness beyond formatting rules. It also may not support all programming languages or deep semantic validation.", + "examples": [ + "Format and validate a JavaScript Jest test snippet to conform to Airbnb style guide.", + "Check and automatically fix formatting issues in a Python unittest test case.", + "Validate formatting of a Java JUnit test without automatic fixing." + ] + }, + "tags": [ + "data-validation", + "formatting", + "code", + "test", + "style-guide", + "linting" + ], + "examples": [ + { + "inputJson": "{\"code\":\"test(\\\"adds 1 + 2 to equal 3\\\",()=>{expect(sum(1,2)).toBe(3);});\",\"language\":\"javascript\",\"styleGuide\":\"Airbnb\",\"maxLineLength\":80,\"fixErrors\":true}", + "description": "Format and fix a JavaScript Jest test snippet according to Airbnb style guide." + }, + { + "inputJson": "{\"code\":\"def test_addition():\\n assert add(1,2) == 3\",\"language\":\"python\",\"styleGuide\":\"Google\",\"maxLineLength\":100,\"fixErrors\":false}", + "description": "Validate formatting of a Python unittest function using Google style guide without fixing." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Test", + "context": null + } + }, + { + "name": "data-validation.formatContract", + "description": "Formats a contract text input according to specified style guidelines and ensures standard contract sections are present and properly structured. Accepts raw contract text, formatting rules, and returns the formatted contract text with summarized compliance to standards.", + "category": "data-validation", + "parameters": [ + { + "name": "contractText", + "type": "string", + "description": "The raw text of the contract document to be formatted and validated.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatStyle", + "type": "string", + "description": "The style guideline to apply for formatting, e.g., 'legal-standard', 'compact', or 'detailed'.", + "required": false, + "defaultValue": "legal-standard" + }, + { + "name": "requiredSections", + "type": "array", + "description": "List of contract section names that must be present, e.g., ['Introduction','Terms','Signatures'].", + "required": false, + "defaultValue": "[\"Introduction\",\"Terms\",\"Signatures\"]" + }, + { + "name": "maxLineLength", + "type": "number", + "description": "Maximum number of characters per line after formatting, for readability.", + "required": false, + "defaultValue": "80" + }, + { + "name": "includeNumbering", + "type": "boolean", + "description": "Whether to include section and subsection numbering in the formatted contract.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the formatted contract text and a compliance summary indicating presence of required sections." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to prepare a contract document for review or publication by ensuring formatting standards and critical sections are included correctly. Ideal for standardizing contracts or legal documents to improve clarity and compliance.", + "limitations": "Cannot interpret legal content correctness or validate legal enforceability; only formats and checks structural presence of specified contract sections.", + "examples": [ + "Format this raw contract text according to legal standard style including Introduction, Terms, and Signatures sections.", + "Given a contract draft, apply compact formatting and add numbering to sections.", + "Check if the contract text includes required standard sections and format it to a max line length of 100 characters." + ] + }, + "tags": [ + "data-validation", + "formatting", + "contract", + "legal", + "document", + "structure", + "compliance" + ], + "examples": [ + { + "inputJson": "{\"contractText\":\"This Agreement is made between Buyer and Seller...\\nTerms and conditions follow...\\nSignatures: Buyer and Seller.\",\"formatStyle\":\"legal-standard\",\"requiredSections\":[\"Introduction\",\"Terms\",\"Signatures\"],\"maxLineLength\":80,\"includeNumbering\":true}", + "description": "Format a plain contract text applying the legal standard style, ensuring all standard sections are present and numbering is included." + }, + { + "inputJson": "{\"contractText\":\"Confidentiality Agreement text here...\",\"formatStyle\":\"compact\",\"requiredSections\":[\"Definitions\",\"Obligations\",\"Termination\"],\"maxLineLength\":100,\"includeNumbering\":false}", + "description": "Format a confidentiality agreement in a compact style without numbering but verifying required sections are included." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Contract", + "context": null + } + }, + { + "name": "data-validation.buildPullRequest", + "description": "This tool accepts structured data about code changes, validations, and metadata to build a comprehensive Pull Request object often used in code hosting and review platforms. Given inputs like title, description, changed files, and validation results, it constructs a validated Pull Request object ready for further processing or submission.", + "category": "data-validation", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title of the pull request, summarizing the changes.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Detailed description of the pull request.", + "required": false, + "defaultValue": "" + }, + { + "name": "author", + "type": "string", + "description": "Username or identifier of the pull request author.", + "required": true, + "defaultValue": "" + }, + { + "name": "changedFiles", + "type": "array", + "description": "List of files changed with details such as filename and change type.", + "required": true, + "defaultValue": "" + }, + { + "name": "validations", + "type": "object", + "description": "Object containing validation results such as build status, test coverage, lint warnings, and code quality metrics.", + "required": false, + "defaultValue": "" + }, + { + "name": "baseBranch", + "type": "string", + "description": "The base branch against which the PR is created, e.g., 'main' or 'develop'.", + "required": true, + "defaultValue": "main" + }, + { + "name": "targetBranch", + "type": "string", + "description": "The feature or topic branch that contains the changes for the pull request.", + "required": true, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A PullRequest object structured with metadata, change details, validation summaries, and ready to be used for submission or review." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to aggregate and validate all relevant data related to a code change into a single Pull Request object for code review, CI/CD pipeline integration, or further automation. It ensures the PR data is consistent and includes validated build/test results to improve automation reliability.", + "limitations": "This tool does not create the pull request in a remote repository; it only builds the PR data object. It also does not perform validations itself but expects validation results as inputs.", + "examples": [ + "Build a pull request object for a feature branch with files changed and test results.", + "Generate a pull request object that includes validation info from CI indicating build success and coverage.", + "Assemble a pull request for review based on provided metadata, changed files and linting warnings." + ] + }, + "tags": [ + "data-validation", + "pull-request", + "code", + "ci-cd", + "automation", + "code-review" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Add user authentication\",\"description\":\"Implement OAuth2 login flow\",\"author\":\"devAlice\",\"changedFiles\":[{\"filename\":\"auth.js\",\"changeType\":\"modified\"},{\"filename\":\"login.html\",\"changeType\":\"added\"}],\"validations\":{\"buildStatus\":\"success\",\"testCoverage\":92,\"lintWarnings\":3},\"baseBranch\":\"main\",\"targetBranch\":\"feature/auth\"}", + "description": "Build a PullRequest object for a feature branch adding authentication with validations from CI." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "PullRequest", + "context": null + } + }, + { + "name": "data-validation.draftReport", + "description": "This tool accepts data validation results as input and drafts a structured report summarizing data quality issues, metrics, and recommendations. It processes validation flags, error counts, and data profiles to generate a clear, human-readable report useful for stakeholders and data engineers.", + "category": "data-validation", + "parameters": [ + { + "name": "validationResults", + "type": "object", + "description": "An object containing the output of data validation processes including error details, warning counts, and summary statistics.", + "required": true, + "defaultValue": "" + }, + { + "name": "reportTitle", + "type": "string", + "description": "Title of the report to be included in the header section.", + "required": false, + "defaultValue": "\"Data Validation Report\"" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "Flag indicating whether to append remediation recommendations based on validation issues found.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Specifies the desired output format of the report, e.g., 'text', 'markdown', or 'html'.", + "required": false, + "defaultValue": "\"text\"" + }, + { + "name": "dateGenerated", + "type": "string", + "description": "Optional ISO 8601 date string to include as the report generation date. Defaults to the current date if omitted.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the drafted report as a string in the requested format and metadata such as word count and a summary of included sections." + }, + "aiAgent": { + "useCase": "Use this tool when you have raw data validation outputs and you need to create a comprehensive and readable report for data quality stakeholders that summarizes errors, warnings, data profiles, and actionable recommendations.", + "limitations": "This tool does not perform data validation itself; it only drafts reports based on provided validation data. It cannot analyze raw data or execute real-time validation.", + "examples": [ + "Draft a markdown report summarizing the results of a recent database validation run including recommendations.", + "Generate a plain text data quality report from JSON validation output to share with data engineers.", + "Create an HTML formatted data validation summary for a BI dashboard display." + ] + }, + "tags": [ + "data-validation", + "reporting", + "data-quality", + "summary", + "automation", + "documentation" + ], + "examples": [ + { + "inputJson": "{\"validationResults\":{\"errors\":{\"missingValues\":15,\"invalidFormats\":3},\"warnings\":{\"duplicates\":7},\"summary\":{\"totalRecords\":1000,\"validatedFields\":10}},\"reportTitle\":\"Monthly Data Quality Report\",\"includeRecommendations\":true,\"outputFormat\":\"markdown\",\"dateGenerated\":\"2024-06-05T10:30:00Z\"}", + "description": "Generate a markdown report titled 'Monthly Data Quality Report' including recommendations and validation summary with errors and warnings." + }, + { + "inputJson": "{\"validationResults\":{\"errors\":{},\"warnings\":{\"incompleteData\":5},\"summary\":{\"totalRecords\":5000,\"validatedFields\":8}},\"reportTitle\":\"Quarterly Data Validation\",\"includeRecommendations\":false,\"outputFormat\":\"text\"}", + "description": "Create a plain text quarterly data validation report that includes warnings but excludes remediation suggestions." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Report", + "context": null + } + }, + { + "name": "data-validation.buildContainer", + "description": "Validates the integrity and quality of container infrastructure configurations by accepting container specification data (e.g., Dockerfile, Kubernetes YAML) and checking for common misconfigurations, security issues, and compliance errors. Outputs a detailed validation report highlighting detected issues and suggestions for remediation.", + "category": "data-validation", + "parameters": [ + { + "name": "containerSpec", + "type": "string", + "description": "Configuration data defining the container setup, such as Dockerfile contents or Kubernetes manifest in YAML or JSON format.", + "required": true, + "defaultValue": "" + }, + { + "name": "specFormat", + "type": "string", + "description": "The format of the container specification provided (e.g., 'dockerfile', 'kubernetes', 'helm').", + "required": true, + "defaultValue": "dockerfile" + }, + { + "name": "validateSecurity", + "type": "boolean", + "description": "Whether to perform security checks on container configuration, such as scanning for insecure base images or exposed secrets.", + "required": false, + "defaultValue": "true" + }, + { + "name": "validateCompliance", + "type": "boolean", + "description": "Whether to check container specs against compliance standards like CIS benchmarks or internal policies.", + "required": false, + "defaultValue": "true" + }, + { + "name": "strictMode", + "type": "boolean", + "description": "If true, treat warnings as errors causing validation failure; otherwise, only report them.", + "required": false, + "defaultValue": "false" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the validation report output, either 'json' for machine-readable or 'text' for human-readable report.", + "required": false, + "defaultValue": "json" + } + ], + "returns": { + "type": "object", + "description": "An object containing the validation results including a summary, detailed list of issues with severity levels, and remediation recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to verify container infrastructure configuration files for correctness, security, or compliance before deployment. It helps catch errors early, improve container security posture, and ensure adherence to organizational policies.", + "limitations": "This tool does not build or deploy containers; it only validates configuration data. It requires well-formed input specifications and cannot fix detected issues automatically.", + "examples": [ + "Validate a Dockerfile for security vulnerabilities and compliance issues.", + "Check a Kubernetes YAML manifest for configuration errors and policy violations.", + "Generate a human-readable report summarizing container spec validation findings." + ] + }, + "tags": [ + "validation", + "container", + "infrastructure", + "security", + "compliance", + "kubernetes", + "docker", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"containerSpec\":\"FROM ubuntu:18.04\\nRUN apt-get update && apt-get install -y curl\\nEXPOSE 8080\",\"specFormat\":\"dockerfile\",\"validateSecurity\":true,\"validateCompliance\":true,\"strictMode\":false,\"outputFormat\":\"json\"}", + "description": "Validate a Dockerfile for security and compliance issues with JSON output." + }, + { + "inputJson": "{\"containerSpec\":\"apiVersion: v1\\nkind: Pod\\nmetadata:\\n name: test-pod\\nspec:\\n containers:\\n - name: nginx\\n image: nginx:latest\\n ports:\\n - containerPort: 80\",\"specFormat\":\"kubernetes\",\"validateSecurity\":true,\"validateCompliance\":false,\"strictMode\":true,\"outputFormat\":\"text\"}", + "description": "Validate a Kubernetes pod manifest focusing on security issues in strict mode, generating human-readable text report." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Container", + "context": null + } + }, + { + "name": "data-validation.composeText", + "description": "This tool accepts multiple text inputs along with specified validation rules, validates each text for compliance (e.g., length, forbidden words, format), and composes a single, cleaned, and concatenated output text string that meets the specified validation criteria. It outputs the composed text and a validation report per input segment.", + "category": "data-validation", + "parameters": [ + { + "name": "texts", + "type": "array", + "description": "Array of text strings to validate and compose into a single output.", + "required": true, + "defaultValue": "" + }, + { + "name": "validationRules", + "type": "object", + "description": "Object specifying validation rules such as minLength, maxLength, forbiddenWords, regexPatterns for each input text segment.", + "required": true, + "defaultValue": "" + }, + { + "name": "concatenationSeparator", + "type": "string", + "description": "String used to separate concatenated texts in the composed output.", + "required": false, + "defaultValue": " " + }, + { + "name": "toLowerCase", + "type": "boolean", + "description": "If true, converts all text to lowercase before validation and concatenation.", + "required": false, + "defaultValue": "false" + }, + { + "name": "trimWhitespace", + "type": "boolean", + "description": "If true, trims leading and trailing whitespace from each input text before processing.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing 'composedText' which is the validated, concatenated string, and 'validationReport', an array of validation results for each input text segment indicating pass/fail and error messages if any." + }, + "aiAgent": { + "useCase": "Use this tool when given multiple text inputs that must be validated against defined quality or style criteria before assembling them into one unified text output. It helps ensure data integrity, conformity to content rules, and prepares text data for downstream processing or display.", + "limitations": "Cannot generate or correct text content beyond validation and basic formatting (e.g., not capable of grammar correction or semantic improvements). Validation is limited to the specified rules and does not infer meaning or context outside defined patterns.", + "examples": [ + "Validate an array of user-submitted comments to ensure none exceed 200 characters and contain forbidden words before composing a summary text.", + "Compose multiple validated product descriptions into a single formatted catalog entry ensuring each description meets length and style restrictions.", + "Validate and concatenate multiple code or script snippets ensuring they match required syntax patterns before deployment." + ] + }, + "tags": [ + "validation", + "text", + "concatenation", + "data-quality", + "content-processing", + "input-sanitization" + ], + "examples": [ + { + "inputJson": "{\"texts\": [\"Hello, world!\", \"This is a test.\"], \"validationRules\": {\"minLength\": 5, \"maxLength\": 50}, \"concatenationSeparator\": \" \", \"toLowerCase\": false, \"trimWhitespace\": true}", + "description": "Validate two input sentences for minimum and maximum length, then concatenate with a space." + }, + { + "inputJson": "{\"texts\": [\" ForbiddenWord should not appear.\", \"Valid text here.\"], \"validationRules\": {\"forbiddenWords\": [\"ForbiddenWord\"]}, \"concatenationSeparator\": \" - \", \"toLowerCase\": true, \"trimWhitespace\": true}", + "description": "Check texts to not contain forbidden word and convert to lowercase before joining with ' - '." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Text", + "context": null + } + }, + { + "name": "data-validation.buildService", + "description": "Builds a customizable data validation service based on provided schema definitions and validation rules. Accepts JSON schema or custom rule objects as input, processes these to generate a validation service endpoint that can be integrated into application pipelines, and outputs service configuration details and validation reports.", + "category": "data-validation", + "parameters": [ + { + "name": "schemaDefinition", + "type": "object", + "description": "JSON schema or equivalent object defining the data structure and constraints to be validated.", + "required": true, + "defaultValue": "" + }, + { + "name": "validationRules", + "type": "array", + "description": "Array of additional custom validation rules beyond schema constraints, formatted as objects specifying field, rule type, and parameters.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "serviceName", + "type": "string", + "description": "Unique name to identify the validation service being built.", + "required": true, + "defaultValue": "" + }, + { + "name": "enableLogging", + "type": "boolean", + "description": "Flag to enable detailed logging of validation attempts and results.", + "required": false, + "defaultValue": "false" + }, + { + "name": "responseFormat", + "type": "string", + "description": "Format of the validation response, e.g., 'json', 'xml'.", + "required": false, + "defaultValue": "json" + }, + { + "name": "maxPayloadSize", + "type": "number", + "description": "Maximum size (in bytes) of data payloads that the service will accept for validation.", + "required": false, + "defaultValue": "1048576" + } + ], + "returns": { + "type": "object", + "description": "An object containing the configuration details of the built validation service, including endpoint URL, supported operations, and initial validation results." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically create a tailored data validation service for specific datasets or applications, especially when validation schemas and rules must be dynamically defined and deployed as a service endpoint. It is useful for automating data quality assurance pipelines.", + "limitations": "This tool does not perform runtime validation on live data streams; it only builds the validation service infrastructure. It also doesn't handle schema evolution or versioning beyond initial build.", + "examples": [ + "Build a validation service to enforce schema compliance and custom rules for a sales data ingestion pipeline.", + "Create a data validation service that rejects inputs exceeding a certain payload size and logs all validation attempts.", + "Generate a JSON-response validation service named 'UserInputValidator' with specified schema and optional additional custom rules." + ] + }, + "tags": [ + "data-validation", + "service-building", + "schema-validation", + "data-quality", + "automation" + ], + "examples": [ + { + "inputJson": "{\"schemaDefinition\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"integer\",\"minimum\":18}},\"required\":[\"name\",\"age\"]},\"validationRules\":[{\"field\":\"name\",\"ruleType\":\"regex\",\"pattern\":\"^[A-Za-z ]+$\"}],\"serviceName\":\"UserDataValidator\",\"enableLogging\":true,\"responseFormat\":\"json\",\"maxPayloadSize\":2048}", + "description": "Build a validation service named UserDataValidator to validate user data with a schema enforcing name and minimum age, including custom regex rule for name, logging enabled, JSON response, and max payload size of 2048 bytes." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Service", + "context": null + } + }, + { + "name": "data-validation.buildBranch", + "description": "This tool accepts a version control repository snapshot and a branching strategy specification to construct a logical representation of a project branch. It validates branch name conventions, applies rules for branch hierarchy and merge paths, and outputs a branch object with metadata ensuring data consistency for code integration workflows.", + "category": "data-validation", + "parameters": [ + { + "name": "repositorySnapshot", + "type": "object", + "description": "An object representing the current state of the repository, including existing branches and commits.", + "required": true, + "defaultValue": "" + }, + { + "name": "branchName", + "type": "string", + "description": "The desired name for the new branch following naming conventions.", + "required": true, + "defaultValue": "" + }, + { + "name": "baseBranch", + "type": "string", + "description": "The name of the existing branch from which to create the new branch.", + "required": true, + "defaultValue": "" + }, + { + "name": "branchingStrategy", + "type": "string", + "description": "The branching strategy to enforce (e.g., 'gitflow', 'githubflow', or 'custom').", + "required": false, + "defaultValue": "gitflow" + }, + { + "name": "validateNaming", + "type": "boolean", + "description": "Whether to enforce branch naming conventions according to the strategy.", + "required": false, + "defaultValue": "true" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional metadata to attach to the branch (e.g., author, creationDate).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the constructed branch with validated name, base reference, strategy applied, and metadata for integration consistency." + }, + "aiAgent": { + "useCase": "Use this tool when integrating codebases or preparing new feature or release branches programmatically in CI/CD pipelines to ensure branch names and structures comply with organizational standards and branching workflows. It helps prevent invalid or inconsistent branch configurations that cause integration issues.", + "limitations": "This tool does not perform actual source code merging or repository manipulation; it constructs and validates branch metadata objects only. It relies on accurate input repository snapshots and cannot enforce downstream policy enforcement outside the input scope.", + "examples": [ + "Create a new feature branch 'feature/login' based off 'develop' following gitflow strategy.", + "Build a release branch named 'release/1.2.0' from 'develop' with metadata tags for tracking.", + "Validate and build a hotfix branch 'hotfix/urgent-fix' ensuring it matches naming policy." + ] + }, + "tags": [ + "data-validation", + "branch-management", + "version-control", + "code-quality", + "ci-cd", + "branching-strategy" + ], + "examples": [ + { + "inputJson": "{\"repositorySnapshot\":{\"branches\":[\"main\",\"develop\",\"feature/old\"],\"commits\":{}},\"branchName\":\"feature/login\",\"baseBranch\":\"develop\",\"branchingStrategy\":\"gitflow\",\"validateNaming\":true,\"metadata\":{\"author\":\"alice\",\"creationDate\":\"2024-06-01T10:00:00Z\"}}", + "description": "Create a new feature branch 'feature/login' from 'develop' validating gitflow naming conventions with metadata." + }, + { + "inputJson": "{\"repositorySnapshot\":{\"branches\":[\"main\",\"develop\"],\"commits\":{}},\"branchName\":\"release/1.2.0\",\"baseBranch\":\"develop\",\"branchingStrategy\":\"gitflow\",\"validateNaming\":true}", + "description": "Build a release branch 'release/1.2.0' from 'develop' with default gitflow strategy, no extra metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Branch", + "context": null + } + }, + { + "name": "data-validation.buildEndpoint", + "description": "Builds a data validation API endpoint specification based on provided input schema and validation rules. Accepts JSON schema defining data structure and validation constraints, processes them to generate endpoint configuration including HTTP method, URL pattern, and validation logic. Outputs a JSON object describing the endpoint specification ready for implementation or documentation.", + "category": "data-validation", + "parameters": [ + { + "name": "endpointName", + "type": "string", + "description": "Unique name identifier for the validation endpoint.", + "required": true, + "defaultValue": "" + }, + { + "name": "httpMethod", + "type": "string", + "description": "HTTP method to use for the endpoint (e.g., POST, GET).", + "required": true, + "defaultValue": "POST" + }, + { + "name": "urlPattern", + "type": "string", + "description": "URL path pattern for the endpoint, including parameters if any.", + "required": true, + "defaultValue": "" + }, + { + "name": "jsonSchema", + "type": "object", + "description": "JSON Schema object defining the structure and validation rules for input data.", + "required": true, + "defaultValue": "" + }, + { + "name": "customValidationScripts", + "type": "array", + "description": "Optional array of custom validation scripts or expressions to enforce additional rules beyond JSON schema.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "authenticationRequired", + "type": "boolean", + "description": "Flag to specify if the endpoint requires authentication.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing the fully defined validation endpoint specification, including metadata, route, method, validation schemas, and security settings." + }, + "aiAgent": { + "useCase": "Use this tool when you need to automatically generate API endpoint specifications focused on data validation, especially for validating JSON payloads against complex schemas. It aids in standardizing validation endpoints in backend services or API gateways by producing detailed endpoint descriptions to guide implementation or testing.", + "limitations": "This tool generates endpoint specifications but does not implement or deploy the endpoint. It cannot handle non-JSON data validation or generate executable code for server frameworks automatically.", + "examples": [ + "Build an endpoint named 'userRegistration' with POST method at '/api/register' validating user registration data.", + "Create a validation endpoint that requires authentication for updating user profile data.", + "Generate an endpoint spec with custom validation scripts to enforce cross-field dependencies in input data." + ] + }, + "tags": [ + "data-validation", + "api", + "endpoint", + "json-schema", + "validation", + "backend", + "specification" + ], + "examples": [ + { + "inputJson": "{\"endpointName\":\"createUser\",\"httpMethod\":\"POST\",\"urlPattern\":\"/users/create\",\"jsonSchema\":{\"type\":\"object\",\"properties\":{\"username\":{\"type\":\"string\"},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"age\":{\"type\":\"integer\",\"minimum\":18}},\"required\":[\"username\",\"email\"]},\"customValidationScripts\":[],\"authenticationRequired\":true}", + "description": "Generates a POST /users/create endpoint specification validating username (string), email (string email format), and optional age (integer >= 18), requiring authentication." + }, + { + "inputJson": "{\"endpointName\":\"submitOrder\",\"httpMethod\":\"POST\",\"urlPattern\":\"/orders/submit\",\"jsonSchema\":{\"type\":\"object\",\"properties\":{\"productId\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\",\"minimum\":1}},\"required\":[\"productId\",\"quantity\"]},\"customValidationScripts\":[\"quantity <= 100\"],\"authenticationRequired\":false}", + "description": "Builds an order submission endpoint validating productId and quantity, limiting quantity to max 100 via custom script, without authentication." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Endpoint", + "context": null + } + }, + { + "name": "data-validation.generateLink", + "description": "Generates a validated, well-formed URL string based on input components such as base URL, path segments, and query parameters. It ensures URL safety by encoding parts and validates inputs to produce a reliable link string for use in data records or applications.", + "category": "data-validation", + "parameters": [ + { + "name": "baseUrl", + "type": "string", + "description": "The base URL or domain (e.g., 'https://example.com') which is required as the foundation for the generated link.", + "required": true, + "defaultValue": "" + }, + { + "name": "pathSegments", + "type": "array", + "description": "An array of path segments to append to the base URL (e.g., ['user', 'profile']). Each segment will be properly URL-encoded.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "queryParams", + "type": "object", + "description": "An object defining query parameters as key-value pairs to add to the URL (e.g., {id: '123', ref: 'abc'}). Keys and values are encoded automatically.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeTrailingSlash", + "type": "boolean", + "description": "Specifies whether to include a trailing slash at the end of the URL path.", + "required": false, + "defaultValue": "false" + }, + { + "name": "forceHttps", + "type": "boolean", + "description": "If true, forces the URL scheme to HTTPS regardless of the input baseUrl scheme.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Contains the finalized validated URL string under the 'url' property." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to construct or validate URLs dynamically from multiple components, ensuring correctness and encoding safety to prevent data corruption or broken links. It is ideal for preparing URLs for web calls, reports, or stored references.", + "limitations": "This tool does not perform DNS or availability checks on URLs. It only constructs and validates URL syntax, not the existence or reachability of the generated link.", + "examples": [ + "Generate a user profile URL from a base domain and path segments with query parameters.", + "Create a link for a product page ensuring HTTPS and a trailing slash.", + "Build a URL with multiple query parameters from a dictionary input." + ] + }, + "tags": [ + "url", + "validation", + "generation", + "data-quality", + "web", + "encoding" + ], + "examples": [ + { + "inputJson": "{\"baseUrl\":\"https://example.com\",\"pathSegments\":[\"user\",\"profile\"],\"queryParams\":{\"id\":\"123\",\"ref\":\"abc\"}}", + "description": "Generate a user profile URL with query parameters." + }, + { + "inputJson": "{\"baseUrl\":\"http://mywebsite.org\",\"pathSegments\":[\"product\",\"5678\"],\"includeTrailingSlash\":true,\"forceHttps\":true}", + "description": "Build a product page URL forcing HTTPS and including a trailing slash." + }, + { + "inputJson": "{\"baseUrl\":\"https://api.service.io\",\"queryParams\":{\"search\":\"test data\",\"page\":\"2\"}}", + "description": "Generate API request URL with encoded query parameters." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Link", + "context": null + } + }, + { + "name": "data-validation.generateQuery", + "description": "Generates SQL or NoSQL query strings based on provided data schema and validation rules. Accepts an object describing table/collection structure and desired validation conditions; processes these to produce a query string that can be used to validate data integrity or retrieve specific data subsets according to validation criteria. Outputs a query string tailored to the specified database type.", + "category": "data-validation", + "parameters": [ + { + "name": "databaseType", + "type": "string", + "description": "Type of database for which to generate the query (e.g., 'sql', 'mongodb').", + "required": true, + "defaultValue": "" + }, + { + "name": "schema", + "type": "object", + "description": "Object representing the data schema, including fields and types.", + "required": true, + "defaultValue": "" + }, + { + "name": "validationRules", + "type": "array", + "description": "Array of validation rules or conditions to include in the query. Each rule defines field constraints.", + "required": true, + "defaultValue": "" + }, + { + "name": "logicalOperator", + "type": "string", + "description": "Logical operator to combine validation rules, either 'AND' or 'OR'.", + "required": false, + "defaultValue": "AND" + }, + { + "name": "limit", + "type": "number", + "description": "Optional limit on number of results returned by the query, applicable mostly for data retrieval queries.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated query string suitable for execution against the specified database." + }, + "aiAgent": { + "useCase": "Use when an AI system needs to programmatically create validation queries for datasets in SQL or NoSQL databases based on dynamic data schema and validation criteria. This is crucial for data quality checks, enforcing integrity constraints, or extracting subsets of data that meet specific validation conditions.", + "limitations": "Cannot execute queries or validate actual data; only generates query strings. Does not support complex nested or custom validation logic beyond simple field constraints. Assumes valid input schema and rules format.", + "examples": [ + "Generate a SQL query to validate that 'age' is greater than 18 and 'email' is not null.", + "Generate a MongoDB query to find documents where 'status' equals 'active' or 'score' is above 90.", + "Create a query limiting to 100 results where 'createdAt' falls within the last month." + ] + }, + "tags": [ + "data", + "validation", + "query-generation", + "sql", + "nosql", + "database", + "integrity" + ], + "examples": [ + { + "inputJson": "{\"databaseType\":\"sql\",\"schema\":{\"tableName\":\"Users\",\"fields\":[{\"name\":\"age\",\"type\":\"integer\"},{\"name\":\"email\",\"type\":\"string\"}]},\"validationRules\":[{\"field\":\"age\",\"operator\":\">\",\"value\":18},{\"field\":\"email\",\"operator\":\"IS NOT NULL\"}],\"logicalOperator\":\"AND\",\"limit\":100}", + "description": "Generate a SQL query to select users older than 18 with a non-null email, limiting results to 100." + }, + { + "inputJson": "{\"databaseType\":\"mongodb\",\"schema\":{\"collectionName\":\"orders\",\"fields\":[{\"name\":\"status\",\"type\":\"string\"},{\"name\":\"total\",\"type\":\"number\"}]},\"validationRules\":[{\"field\":\"status\",\"operator\":\"=\",\"value\":\"shipped\"},{\"field\":\"total\",\"operator\":\">\",\"value\":50}],\"logicalOperator\":\"OR\"}", + "description": "Generate a MongoDB query to find orders that are either shipped or with total over 50." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Query", + "context": null + } + }, + { + "name": "data-validation.buildModule", + "description": "Generates a customizable JavaScript validation module based on user-defined schema rules. Accepts a JSON schema defining field validations, formats, and constraints, then processes it to produce reusable validation functions that check data integrity and report validation errors.", + "category": "data-validation", + "parameters": [ + { + "name": "schemaDefinition", + "type": "object", + "description": "A JSON schema object specifying fields, their types, and validation constraints to build the module from.", + "required": true, + "defaultValue": "" + }, + { + "name": "moduleName", + "type": "string", + "description": "The desired name of the generated validation module (used for naming the exported object).", + "required": false, + "defaultValue": "validationModule" + }, + { + "name": "includeErrorMessages", + "type": "boolean", + "description": "Flag indicating if the generated module should include detailed error messages with validation results.", + "required": false, + "defaultValue": "true" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "Programming language for the generated module code; defaults to JavaScript.", + "required": false, + "defaultValue": "JavaScript" + }, + { + "name": "strictMode", + "type": "boolean", + "description": "Enables strict type and constraint enforcement in the validation logic.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated module code as a string, and metadata about the generation." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically generate a validation module tailored to specific data structures and constraints. Ideal for automating data validation setup in projects where JSON schemas define input requirements.", + "limitations": "This tool generates validation modules based on the provided schema but does not execute the validation. It cannot guarantee runtime environment compatibility beyond standard JavaScript. Complex or custom validations beyond schema constraints are not supported.", + "examples": [ + "Generate a validation module for user registration data with required email and password fields.", + "Build a module validating product data with nested objects and array constraints.", + "Create a strict validation module including detailed error messages for form inputs." + ] + }, + "tags": [ + "data-validation", + "code-generation", + "javascript", + "schema", + "module-building", + "validation-module" + ], + "examples": [ + { + "inputJson": "{\"schemaDefinition\":{\"email\":{\"type\":\"string\",\"format\":\"email\",\"required\":true},\"password\":{\"type\":\"string\",\"minLength\":8,\"required\":true},\"age\":{\"type\":\"number\",\"minimum\":18}},\"moduleName\":\"userValidator\",\"includeErrorMessages\":true,\"targetLanguage\":\"JavaScript\",\"strictMode\":true}", + "description": "Generate a validation module named 'userValidator' for user signup data requiring an email, password of min length 8, and an optional minimum age of 18." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Module", + "context": null + } + }, + { + "name": "data-validation.generateArticle", + "description": "Generates a structured, quality-checked article draft based on input topic and outline. Accepts a topic string, optional outline array, and article length preference. Performs content generation and data-validation checks for coherence, grammar, and plagiarism. Outputs a text article ready for review and publication.", + "category": "data-validation", + "parameters": [ + { + "name": "topic", + "type": "string", + "description": "The main subject or theme for the article to be generated.", + "required": true, + "defaultValue": "" + }, + { + "name": "outline", + "type": "array", + "description": "Optional array of strings defining headings or key points for organizing the article.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "wordCount", + "type": "number", + "description": "Approximate desired length of the article in words.", + "required": false, + "defaultValue": "1000" + }, + { + "name": "includeReferences", + "type": "boolean", + "description": "Whether to include reference citations or sources in the article.", + "required": false, + "defaultValue": "false" + }, + { + "name": "language", + "type": "string", + "description": "Language code for the output article text (e.g., 'en' for English).", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated article text, a summary of validation checks including grammar and coherence scores, and a flag indicating if potential plagiarism was detected." + }, + "aiAgent": { + "useCase": "Use this tool when you need to automatically generate an article draft on a given topic that meets quality standards, including coherence, grammar, and originality, reducing manual editing effort. Especially useful for content creators, automated reporting, and documentation generation.", + "limitations": "The tool cannot guarantee absolute factual accuracy or deep expert knowledge. It may struggle with very specialized topics or highly creative writing styles. Plagiarism detection is heuristic and not definitive.", + "examples": [ + "Generate a 1200-word article on 'benefits of renewable energy', with an outline on types of renewables.", + "Create a short 500-word article about 'how to train a puppy' in English.", + "Produce an article draft in Spanish about 'history of the internet' including references." + ] + }, + "tags": [ + "generation", + "validation", + "content", + "article", + "writing", + "nlp", + "coherence", + "grammar" + ], + "examples": [ + { + "inputJson": "{\"topic\":\"benefits of renewable energy\",\"outline\":[\"Introduction\",\"Types of renewable energy\",\"Environmental impact\",\"Economic benefits\"],\"wordCount\":1200,\"includeReferences\":true,\"language\":\"en\"}", + "description": "Generate a detailed article on renewable energy benefits with a structured outline and references." + }, + { + "inputJson": "{\"topic\":\"how to train a puppy\",\"wordCount\":500,\"language\":\"en\"}", + "description": "Generate a concise beginner's guide article on puppy training in English without an outline." + }, + { + "inputJson": "{\"topic\":\"history of the internet\",\"includeReferences\":true,\"language\":\"es\"}", + "description": "Create a spanned article draft in Spanish about the history of the internet including sources." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Article", + "context": null + } + }, + { + "name": "data-validation.createKPI", + "description": "This tool accepts parameters defining a Key Performance Indicator (KPI) such as metric name, target value(s), calculation formula, data source, and evaluation frequency. It validates the inputs for consistency and completeness, then creates a KPI definition object that can be used for monitoring and reporting performance metrics, ensuring KPI integrity and clarity.", + "category": "data-validation", + "parameters": [ + { + "name": "kpiName", + "type": "string", + "description": "The unique name identifying the KPI to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "metric", + "type": "string", + "description": "The metric or measurement the KPI tracks, e.g., 'salesRevenue' or 'customerSatisfaction'.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetValue", + "type": "number", + "description": "The target numeric value the KPI aims to achieve.", + "required": true, + "defaultValue": "" + }, + { + "name": "calculationFormula", + "type": "string", + "description": "Optional arithmetic or logical formula to calculate the KPI from raw data; if none, metric value is used as is.", + "required": false, + "defaultValue": "" + }, + { + "name": "evaluationFrequency", + "type": "string", + "description": "Frequency at which the KPI should be evaluated, e.g., 'daily', 'weekly', 'monthly'.", + "required": true, + "defaultValue": "monthly" + }, + { + "name": "dataSource", + "type": "string", + "description": "Identifier or URI of the data source where metric data is retrieved from.", + "required": true, + "defaultValue": "" + }, + { + "name": "thresholds", + "type": "object", + "description": "Optional object defining threshold values to categorize KPI results, e.g., {warning: 70, critical: 50}.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created KPI definition including validated parameters and a unique KPI identifier." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to define and validate a new KPI for analytics or monitoring systems to ensure consistency in metric definitions and target settings. It is ideal during analytics setup, dashboard configurations, or automated monitoring creation.", + "limitations": "This tool does not perform the actual metric data extraction or ongoing KPI calculation — it creates and validates only the KPI definition metadata.", + "examples": [ + "Create a KPI named 'Monthly Sales Growth' tracking 'salesRevenue' with a 10% growth target evaluated monthly.", + "Define a customer satisfaction KPI using a formula combining several survey scores with thresholds for warning and critical alerts.", + "Set up a weekly operational efficiency KPI pulling data from a specified data source without a custom calculation formula." + ] + }, + "tags": [ + "data-validation", + "KPI", + "analytics", + "monitoring", + "performance-metrics" + ], + "examples": [ + { + "inputJson": "{\"kpiName\":\"Monthly Sales Growth\",\"metric\":\"salesRevenue\",\"targetValue\":1100000,\"calculationFormula\":\"(currentMonthSales - previousMonthSales) / previousMonthSales * 100\",\"evaluationFrequency\":\"monthly\",\"dataSource\":\"salesDB\",\"thresholds\":{\"warning\":8,\"critical\":5}}", + "description": "Creating a KPI for monthly sales revenue growth with target 1,100,000 and formula for growth percentage with thresholds for alerts." + }, + { + "inputJson": "{\"kpiName\":\"Customer Satisfaction Index\",\"metric\":\"surveyScore\",\"targetValue\":85,\"calculationFormula\":\"(positiveResponses / totalResponses) * 100\",\"evaluationFrequency\":\"weekly\",\"dataSource\":\"customerFeedbackAPI\"}", + "description": "Defining a weekly KPI for customer satisfaction index based on survey scores using a positivity ratio formula." + }, + { + "inputJson": "{\"kpiName\":\"Operational Efficiency\",\"metric\":\"machineUptime\",\"targetValue\":95,\"evaluationFrequency\":\"daily\",\"dataSource\":\"iotDeviceLogs\"}", + "description": "Setting up a daily KPI to track machine uptime percentage without a custom formula, with a target of 95% uptime." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "KPI", + "context": null + } + }, + { + "name": "data-validation.createDashboard", + "description": "Creates an interactive data validation dashboard that visualizes the quality metrics and validation results of datasets. Accepts multiple data validation reports and configuration settings, processes them to generate visual summaries, and outputs a dashboard object with charts, tables, and alerts to monitor data integrity and trends over time.", + "category": "data-validation", + "parameters": [ + { + "name": "validationReports", + "type": "array", + "description": "An array of data validation report objects containing results and metrics to visualize.", + "required": true, + "defaultValue": "" + }, + { + "name": "dashboardConfig", + "type": "object", + "description": "Configuration object specifying dashboard layout, metrics to display, thresholds for alerts, and visualization options.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "refreshInterval", + "type": "number", + "description": "Time interval in seconds to auto-refresh the dashboard data visualizations. Set 0 for manual refresh only.", + "required": false, + "defaultValue": "0" + }, + { + "name": "includeHistoricalData", + "type": "boolean", + "description": "Flag to include historical trends of data validation results if available.", + "required": false, + "defaultValue": "false" + }, + { + "name": "theme", + "type": "string", + "description": "UI theme for the dashboard display, e.g., 'light' or 'dark'.", + "required": false, + "defaultValue": "light" + } + ], + "returns": { + "type": "object", + "description": "A dashboard object containing structured visual elements such as charts, tables, and alerts summarizing data validation results, ready to be rendered in a UI." + }, + "aiAgent": { + "useCase": "Use this tool when an agent needs to synthesize multiple data validation outputs into a coherent visualization interface, enabling human users or automated systems to quickly assess data quality and trends across datasets. Ideal for monitoring ongoing data pipelines or validating batch data sets.", + "limitations": "This tool does not itself perform validation checks; it only visualizes existing validation results. It also does not support real-time streaming data or auto-correct data errors.", + "examples": [ + "Generate a data validation dashboard from multiple CSV and JSON validation reports", + "Create a dashboard highlighting metrics of data completeness, accuracy, and consistency with alerts on violations", + "Build a refreshable dashboard summarizing validation trends with historical data included" + ] + }, + "tags": [ + "data-validation", + "dashboard", + "visualization", + "data-quality", + "monitoring", + "analytics" + ], + "examples": [ + { + "inputJson": "{\"validationReports\":[{\"datasetName\":\"sales_data.csv\",\"metrics\":{\"completeness\":0.95,\"accuracy\":0.98},\"issues\":[{\"type\":\"missing_values\",\"count\":10}]},{\"datasetName\":\"customer_data.json\",\"metrics\":{\"completeness\":0.99,\"accuracy\":0.97},\"issues\":[]}],\"dashboardConfig\":{\"layout\":\"grid\",\"alertThresholds\":{\"completeness\":0.9,\"accuracy\":0.95}},\"refreshInterval\":300,\"includeHistoricalData\":true,\"theme\":\"dark\"}", + "description": "Create a data validation dashboard visualizing metrics and issues for sales and customer data with alerts and a dark theme, refreshing every 5 minutes and including historical validation trends." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dashboard", + "context": null + } + }, + { + "name": "data-validation.createInstance", + "description": "Creates a data validation instance configured to check datasets for quality and integrity. Accepts configuration parameters defining validation rules, data schema, and error handling preferences. Returns a validation instance identifier and settings summary usable for executing validations or integrating into data pipelines.", + "category": "data-validation", + "parameters": [ + { + "name": "validationRules", + "type": "object", + "description": "An object defining the validation rules to apply, such as required fields, data types, and custom constraints.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataSchema", + "type": "object", + "description": "The data schema to validate against, detailing expected fields, types, and formats for datasets.", + "required": true, + "defaultValue": "" + }, + { + "name": "instanceName", + "type": "string", + "description": "A human-readable name for the validation instance to identify it within the system.", + "required": false, + "defaultValue": "" + }, + { + "name": "errorHandling", + "type": "string", + "description": "Strategy for handling validation errors: 'failFast', 'collectAll', or 'logOnly'.", + "required": false, + "defaultValue": "collectAll" + }, + { + "name": "enabled", + "type": "boolean", + "description": "Flag to enable or disable the validation instance immediately upon creation.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the unique instance ID, name, validation rules summary, and status indicating the instance is ready for use." + }, + "aiAgent": { + "useCase": "Use this tool when needing to establish a reusable validation configuration for datasets to ensure data quality and integrity across pipelines or applications. Ideal for creating validation schemas before batch or stream data processing.", + "limitations": "Does not execute validations itself; only creates and configures validation instances. Actual validation execution requires separate tools or processes.", + "examples": [ + "Create a validation instance that enforces required fields and data types for customer records.", + "Set up an instance to check date formats and value ranges in sensor data feeds.", + "Create a validation instance that logs all errors without halting processing." + ] + }, + "tags": [ + "data-validation", + "instance-creation", + "configuration", + "data-quality", + "data-integrity" + ], + "examples": [ + { + "inputJson": "{\"validationRules\":{\"requiredFields\":[\"id\",\"email\"],\"fieldTypes\":{\"id\":\"integer\",\"email\":\"string\"}},\"dataSchema\":{\"fields\":[{\"name\":\"id\",\"type\":\"integer\"},{\"name\":\"email\",\"type\":\"string\"}]},\"instanceName\":\"CustomerRecordValidation\",\"errorHandling\":\"collectAll\",\"enabled\":true}", + "description": "Create a validation instance named CustomerRecordValidation enforcing required id and email fields with specified data types." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Instance", + "context": null + } + }, + { + "name": "data-validation.createComment", + "description": "Creates a structured comment for data validation reports based on input parameters such as author, content, severity level, and associated data items. The tool processes the inputs to generate a standardized comment object suitable for logging, review, or further processing in validation workflows.", + "category": "data-validation", + "parameters": [ + { + "name": "author", + "type": "string", + "description": "Name or identifier of the comment author", + "required": true, + "defaultValue": "" + }, + { + "name": "content", + "type": "string", + "description": "Text content of the comment describing the validation note or issue", + "required": true, + "defaultValue": "" + }, + { + "name": "severity", + "type": "string", + "description": "Severity level of the comment, e.g., info, warning, error", + "required": false, + "defaultValue": "info" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted timestamp for the comment creation time", + "required": false, + "defaultValue": "" + }, + { + "name": "relatedDataItems", + "type": "array", + "description": "List of identifiers for data items related to this comment", + "required": false, + "defaultValue": "[]" + }, + { + "name": "tags", + "type": "array", + "description": "Optional tags to categorize the comment for filtering and searching", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "A structured comment object including author, content, severity, timestamp, related data, and tags" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate standardized, rich comments for data validation results or logs. It is suitable for creating consistent feedback or notes linked to data items during validation workflows, enabling easier tracking and review of validation issues.", + "limitations": "This tool doesn't perform validation itself; it only creates comment objects based on input parameters. It does not analyze or interpret validation results beyond the supplied content.", + "examples": [ + "Create a warning comment by user 'ValidatorBot' about missing values in dataset columns ID and Name.", + "Generate an informational comment noting that all checks passed for data item 12345.", + "Add an error-level comment about schema mismatch detected in field 'age' with relevant tags for quick filtering." + ] + }, + "tags": [ + "data-validation", + "comment", + "logging", + "reporting", + "metadata", + "structured-data" + ], + "examples": [ + { + "inputJson": "{\"author\":\"ValidatorBot\",\"content\":\"Missing values detected in columns ID and Name.\",\"severity\":\"warning\",\"timestamp\":\"2024-06-15T14:22:00Z\",\"relatedDataItems\":[\"colID\",\"colName\"],\"tags\":[\"missing-values\",\"data-quality\"]}", + "description": "Warning comment about missing values in specific columns." + }, + { + "inputJson": "{\"author\":\"AutoValidator\",\"content\":\"All checks passed for data item 12345.\",\"severity\":\"info\",\"timestamp\":\"2024-06-15T14:25:00Z\",\"relatedDataItems\":[\"12345\"],\"tags\":[\"validation-pass\"]}", + "description": "Informational comment indicating data item passed all validations." + }, + { + "inputJson": "{\"author\":\"SchemaChecker\",\"content\":\"Schema mismatch detected in field 'age'. Expected integer, found string.\",\"severity\":\"error\",\"timestamp\":\"2024-06-15T14:30:00Z\",\"relatedDataItems\":[\"ageField\"],\"tags\":[\"schema-error\",\"critical\"]}", + "description": "Error comment about schema mismatch in a specific field." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Comment", + "context": null + } + }, + { + "name": "data-validation.createRisk", + "description": "This tool accepts structured data inputs describing potential security incidents, vulnerabilities, or threats, creates a formal risk assessment by analyzing the inputs against predefined criteria, and outputs a detailed risk object including risk level, impact assessment, and mitigation recommendations.", + "category": "data-validation", + "parameters": [ + { + "name": "incidentDetails", + "type": "object", + "description": "Structured object containing details of the incident or threat to be assessed, including type, description, and context.", + "required": true, + "defaultValue": "" + }, + { + "name": "vulnerabilityData", + "type": "object", + "description": "Optional object containing vulnerability information relevant to the risk assessment.", + "required": false, + "defaultValue": "" + }, + { + "name": "severityThreshold", + "type": "string", + "description": "The minimum severity level to consider when creating risk (e.g., 'low', 'medium', 'high').", + "required": false, + "defaultValue": "medium" + }, + { + "name": "includeMitigation", + "type": "boolean", + "description": "Flag indicating whether to include recommended mitigation actions in the output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "assessmentDate", + "type": "string", + "description": "Date string specifying when the risk assessment is performed, in ISO 8601 format.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created risk, including riskId, riskLevel (e.g., low/medium/high), impactDescription, likelihood, and recommendedMitigations if enabled." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent processes security-related data inputs describing events, vulnerabilities, or threats and needs to generate structured risk assessments automatically to support prioritization and decision-making.", + "limitations": "This tool does not perform dynamic threat detection or real-time monitoring; it relies on provided input data and predefined criteria for risk evaluation, so input data accuracy affects output quality.", + "examples": [ + "Create risk assessment for a reported software vulnerability with given severity and exploitability details.", + "Generate a risk object from a recent security incident log describing unauthorized access attempts.", + "Assess risk based on a summarized report of network threats and vulnerability status." + ] + }, + "tags": [ + "data-validation", + "security", + "risk-assessment", + "incident-analysis", + "vulnerability-management" + ], + "examples": [ + { + "inputJson": "{\"incidentDetails\":{\"type\":\"software vulnerability\",\"description\":\"Buffer overflow in module XYZ\",\"context\":\"Version 1.2.3 detected with vulnerable function\"},\"vulnerabilityData\":{\"id\":\"CVE-2024-1234\",\"severity\":\"high\",\"exploitability\":\"exploitable\"},\"severityThreshold\":\"medium\",\"includeMitigation\":true,\"assessmentDate\":\"2024-06-01T12:00:00Z\"}", + "description": "Assess risk for a software vulnerability with CVE identifier and high severity." + }, + { + "inputJson": "{\"incidentDetails\":{\"type\":\"security incident\",\"description\":\"Multiple failed login attempts detected\",\"context\":\"From external IPs over past 24 hours\"},\"severityThreshold\":\"low\",\"includeMitigation\":false}", + "description": "Create risk assessment for repeated unauthorized access attempts, excluding mitigation recommendations." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Risk", + "context": null + } + }, + { + "name": "data-validation.createVideo", + "description": "This tool accepts raw video media data or video metadata inputs and validates them against specified quality and integrity criteria. It processes video files or their attributes, checking for resolution, format compliance, frame rate consistency, and presence of corruption. The output is a detailed validation report indicating passed checks, warnings, and errors to assure video data quality for further processing or distribution.", + "category": "data-validation", + "parameters": [ + { + "name": "videoFilePath", + "type": "string", + "description": "File path or URL of the video file to validate, supports common formats (e.g., mp4, avi, mov).", + "required": true, + "defaultValue": "" + }, + { + "name": "expectedFormat", + "type": "string", + "description": "Expected video codec or container format to verify compatibility (e.g., 'mp4', 'h264').", + "required": false, + "defaultValue": "" + }, + { + "name": "minResolutionWidth", + "type": "number", + "description": "Minimum acceptable horizontal resolution (width in pixels) for video validation.", + "required": false, + "defaultValue": "0" + }, + { + "name": "minResolutionHeight", + "type": "number", + "description": "Minimum acceptable vertical resolution (height in pixels) for video validation.", + "required": false, + "defaultValue": "0" + }, + { + "name": "minFrameRate", + "type": "number", + "description": "Minimum acceptable frame rate (frames per second) for the video.", + "required": false, + "defaultValue": "0" + }, + { + "name": "maxFileSizeMB", + "type": "number", + "description": "Maximum allowed video file size in megabytes to ensure data constraints.", + "required": false, + "defaultValue": "0" + }, + { + "name": "checkCorruption", + "type": "boolean", + "description": "Whether to scan the video file for corruption or decoding errors.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing a validation summary including status, passed checks, warnings, and errors found in the video data." + }, + "aiAgent": { + "useCase": "Use this tool when you need to verify if a given video asset meets predetermined quality and format requirements before ingestion, distribution, or processing. It's particularly useful in video content pipelines to ensure data integrity and compatibility.", + "limitations": "This tool does not perform video content analysis such as scene detection or object recognition. It cannot repair corrupted videos, only detect integrity issues. Does not support live streaming validation or network-based video streams.", + "examples": [ + "Validate a video file path to confirm it is an mp4 of at least 1920x1080 resolution and 30fps frame rate.", + "Check if a given video file is corrupted and meets a maximum file size constraint.", + "Verify that a video file follows an expected codec and format before encoding workflows." + ] + }, + "tags": [ + "validation", + "video", + "media", + "quality assurance", + "integrity check", + "format compliance" + ], + "examples": [ + { + "inputJson": "{\"videoFilePath\":\"/videos/sample.mp4\",\"expectedFormat\":\"mp4\",\"minResolutionWidth\":1920,\"minResolutionHeight\":1080,\"minFrameRate\":30,\"checkCorruption\":true}", + "description": "Validate an mp4 video file is Full HD or better at 30fps and is not corrupted." + }, + { + "inputJson": "{\"videoFilePath\":\"https://example.com/media/video.avi\",\"expectedFormat\":\"avi\",\"maxFileSizeMB\":500,\"checkCorruption\":true}", + "description": "Check an avi video from a URL ensuring it is under 500MB and free of corruption." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Video", + "context": null + } + }, + { + "name": "data-validation.createTable", + "description": "This tool accepts a dataset schema definition and optional row data, then creates a standardized table structure with built-in validation rules. It processes input specifying column names, types, and constraints to generate a data table ready for validating data integrity or further processing. The output is a table object with columns, data rows, and validation methods.", + "category": "data-validation", + "parameters": [ + { + "name": "schema", + "type": "array", + "description": "An array of column definitions, each specifying name, type, and optional constraints (e.g., required, unique).", + "required": true, + "defaultValue": "" + }, + { + "name": "rows", + "type": "array", + "description": "Optional array of data rows to initialize the table with, matching the schema specified.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "allowEmpty", + "type": "boolean", + "description": "Specifies whether empty tables (with no rows) are allowed. Defaults to true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "validateOnInsert", + "type": "boolean", + "description": "If true, new rows added will be validated against the schema constraints automatically.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created table, including schema, data rows, and validation functions to check data integrity." + }, + "aiAgent": { + "useCase": "Use this tool to construct a validated table structure from given schema and optional data. It's useful when an agent needs to enforce data quality rules, prepare data for further validation, or create a consistent data model from input schemas.", + "limitations": "This tool does not perform data transformation or cleaning beyond enforcing schema constraints. It assumes schema correctness and does not infer schemas from data.", + "examples": [ + "Create a table with columns 'id' (number, required) and 'email' (string, unique) with initial rows.", + "Create an empty table with specified schema for future data insertion validation.", + "Create a table without allowing empty datasets, enforcing immediate population of data." + ] + }, + "tags": [ + "data-validation", + "table", + "schema", + "data-quality", + "create", + "structure" + ], + "examples": [ + { + "inputJson": "{\"schema\":[{\"name\":\"id\",\"type\":\"number\",\"constraints\":{\"required\":true}},{\"name\":\"email\",\"type\":\"string\",\"constraints\":{\"unique\":true}}],\"rows\":[{\"id\":1,\"email\":\"a@example.com\"},{\"id\":2,\"email\":\"b@example.com\"}]}", + "description": "Create a table with 2 columns (id and email), both with constraints, and initialize with 2 data rows." + }, + { + "inputJson": "{\"schema\":[{\"name\":\"username\",\"type\":\"string\",\"constraints\":{\"required\":true}},{\"name\":\"age\",\"type\":\"number\"}],\"allowEmpty\":false}", + "description": "Create a table schema requiring no empty rows, with username required and optional age." + }, + { + "inputJson": "{\"schema\":[{\"name\":\"productId\",\"type\":\"string\",\"constraints\":{\"required\":true}},{\"name\":\"price\",\"type\":\"number\"}],\"validateOnInsert\":true}", + "description": "Create a table with productId required; validating data automatically on row insertions." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Table", + "context": null + } + }, + { + "name": "data-validation.createQuery", + "description": "This tool generates a structured query object or string based on user-defined data validation criteria. It accepts input parameters that define validation rules such as field names, expected data types, value ranges, and conditional logic. The tool processes these inputs to construct a query used to validate datasets or database entries, facilitating automated quality checks. Output is a query string or object compatible with validation engines or query processors.", + "category": "data-validation", + "parameters": [ + { + "name": "fields", + "type": "array", + "description": "An array of objects each specifying a field name and associated validation rules to include in the query, e.g., data types, required status, and constraints.", + "required": true, + "defaultValue": "" + }, + { + "name": "logicalOperator", + "type": "string", + "description": "The logical operator (e.g., AND, OR) that connects individual field validation conditions in the query.", + "required": false, + "defaultValue": "AND" + }, + { + "name": "queryFormat", + "type": "string", + "description": "The format of the output query, such as 'SQL', 'MongoDB', or 'CustomObject'. Determines the style and syntax of the generated query.", + "required": false, + "defaultValue": "CustomObject" + }, + { + "name": "includeNullChecks", + "type": "boolean", + "description": "If true, the generated query includes checks for null or missing values for each field as part of validation.", + "required": false, + "defaultValue": "true" + }, + { + "name": "caseSensitive", + "type": "boolean", + "description": "Specifies whether string comparisons in the query should be case sensitive.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated query as a string or structured object, ready to be used by data validation systems or query processors. Includes metadata about the query format and fields included." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically create precise validation queries based on complex criteria for automated data quality checks or integrity verification in databases or data processing workflows. It helps bridge human-readable rules into executable query representations.", + "limitations": "This tool does not execute the queries or validate data itself; it only constructs validation query structures. It requires well-defined input parameters and does not handle ambiguous or incomplete validation criteria.", + "examples": [ + "Create a validation query checking if 'age' is an integer between 0 and 120 and 'email' matches an email regex pattern.", + "Generate a MongoDB query object to validate that 'status' is either 'active' or 'pending' and 'lastLogin' is not null.", + "Produce an SQL WHERE clause string validating that 'price' is a positive number and 'category' is not null." + ] + }, + "tags": [ + "data-validation", + "query-generation", + "rules", + "automated-checks", + "database", + "integrity", + "quality" + ], + "examples": [ + { + "inputJson": "{\"fields\":[{\"name\":\"age\",\"type\":\"number\",\"min\":0,\"max\":120},{\"name\":\"email\",\"type\":\"string\",\"pattern\":\"^[\\\\w.-]+@[\\\\w.-]+\\\\.[a-z]{2,}$\"}],\"logicalOperator\":\"AND\",\"queryFormat\":\"SQL\",\"includeNullChecks\":true,\"caseSensitive\":false}", + "description": "Generate an SQL WHERE clause validating 'age' is between 0 and 120 and 'email' matches the given regex, including null checks for both fields." + }, + { + "inputJson": "{\"fields\":[{\"name\":\"status\",\"type\":\"string\",\"allowedValues\":[\"active\",\"pending\"]},{\"name\":\"lastLogin\",\"type\":\"date\"}],\"logicalOperator\":\"AND\",\"queryFormat\":\"MongoDB\",\"includeNullChecks\":true,\"caseSensitive\":true}", + "description": "Generate a MongoDB query object validating 'status' is either 'active' or 'pending' and 'lastLogin' is not null, with case-sensitive string comparison." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Query", + "context": null + } + }, + { + "name": "etl-processes.buildInstance", + "description": "This tool builds a new ETL processing instance given specific configuration inputs. It accepts configuration parameters such as source data endpoint, transformation rules, destination storage details, and runtime environment settings. The tool processes these inputs to create and initialize an ETL instance ready to execute data extraction, transformation, and loading tasks. It outputs a confirmation with instance ID, status, and configuration summary.", + "category": "etl-processes", + "parameters": [ + { + "name": "instanceName", + "type": "string", + "description": "Unique name for the ETL instance to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceConfig", + "type": "object", + "description": "Configuration object defining the data source parameters (type, connection details, authentication).", + "required": true, + "defaultValue": "" + }, + { + "name": "transformationRules", + "type": "array", + "description": "An array of transformation rule objects defining how to process and transform source data.", + "required": true, + "defaultValue": "" + }, + { + "name": "destinationConfig", + "type": "object", + "description": "Configuration object defining where and how transformed data is stored (e.g., database connection info).", + "required": true, + "defaultValue": "" + }, + { + "name": "runtimeSettings", + "type": "object", + "description": "Optional runtime parameters such as scheduling, retries, and resource limits for the ETL instance.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "enableLogging", + "type": "boolean", + "description": "Flag to enable or disable detailed logging for the ETL instance.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Object containing the instance ID, current status, and a summary of the configured parameters confirming successful creation." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically create and configure a new ETL processing instance, specifying data source, transformation logic, and destination storage for automated data workflows. It is useful for initializing ETL pipelines before execution or deployment.", + "limitations": "This tool does not execute or monitor the ETL process; it only creates and configures the instance. It also cannot validate source data quality or dynamically adjust configurations post-creation.", + "examples": [ + "Create a new ETL instance that extracts sales data from a REST API, applies currency conversion transformations, and loads it into a SQL warehouse.", + "Build an ETL instance connecting to a file-based source, applying cleansing rules, and storing results in cloud object storage with logging enabled." + ] + }, + "tags": [ + "etl", + "build", + "instance", + "data-integration", + "automation", + "pipeline", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"instanceName\":\"salesDataPipeline\",\"sourceConfig\":{\"type\":\"api\",\"endpoint\":\"https://api.example.com/sales\",\"authToken\":\"abcdef12345\"},\"transformationRules\":[{\"type\":\"currencyConversion\",\"from\":\"USD\",\"to\":\"EUR\",\"rate\":0.85}],\"destinationConfig\":{\"type\":\"sql\",\"host\":\"db.example.com\",\"database\":\"analytics\",\"user\":\"etl_user\",\"password\":\"secret\"},\"runtimeSettings\":{\"schedule\":\"0 2 * * *\",\"maxRetries\":3},\"enableLogging\":true}", + "description": "Create an ETL instance for daily sales data extraction from API with currency conversion and load into SQL database with logging enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Instance", + "context": null + } + }, + { + "name": "data-validation.createVariable", + "description": "Creates a variable definition specification used in data validation and transformation workflows. Accepts the variable name, type, optional default value, and validation constraints. Processes these inputs to produce a structured variable definition object that can be used for consistent data validation rules enforcement.", + "category": "data-validation", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The unique identifier name for the variable to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "variableType", + "type": "string", + "description": "The data type of the variable (e.g., string, number, boolean, date).", + "required": true, + "defaultValue": "" + }, + { + "name": "defaultValue", + "type": "string", + "description": "Optional default value assigned to the variable if no value is provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "required", + "type": "boolean", + "description": "Indicates whether the variable must have a value (true) or can be optional (false).", + "required": false, + "defaultValue": "false" + }, + { + "name": "validationRules", + "type": "object", + "description": "An object specifying validation constraints such as min, max, regex pattern, allowed values.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created variable definition including name, type, default value, requirement status, and validation rules." + }, + "aiAgent": { + "useCase": "Use this tool when constructing or augmenting data validation schemas or configurations that require a precise specification of data variables. It helps standardize variable definitions to ensure consistent validation and data integrity across systems.", + "limitations": "This tool does not perform actual data validation or data transformation; it only creates variable definition specifications for use in validation processes.", + "examples": [ + "Define a required numeric variable 'age' with min=0 and max=120.", + "Create an optional string variable 'email' with regex to match email format.", + "Generate a boolean variable 'isActive' with default value true." + ] + }, + "tags": [ + "data-validation", + "variable-definition", + "schema", + "validation-rules", + "data-quality", + "configuration" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"age\",\"variableType\":\"number\",\"defaultValue\":\"\",\"required\":true,\"validationRules\":{\"min\":0,\"max\":120}}", + "description": "Create a required numeric variable 'age' with min 0 and max 120." + }, + { + "inputJson": "{\"variableName\":\"email\",\"variableType\":\"string\",\"defaultValue\":\"\",\"required\":false,\"validationRules\":{\"pattern\":\"^[\\\\w.-]+@[\\\\w.-]+\\\\.[a-zA-Z]{2,6}$\"}}", + "description": "Create an optional string variable 'email' validated by regex pattern for email format." + }, + { + "inputJson": "{\"variableName\":\"isActive\",\"variableType\":\"boolean\",\"defaultValue\":\"true\",\"required\":false,\"validationRules\":{}}", + "description": "Create an optional boolean variable 'isActive' with default value true." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Variable", + "context": null + } + }, + { + "name": "data-validation.createComponent", + "description": "Creates a reusable data validation component based on a defined validation schema. Accepts a JSON schema defining validation rules for data fields, processes it to generate a validation function component that can be integrated into applications, and outputs the component code as a string for use in data validation workflows.", + "category": "data-validation", + "parameters": [ + { + "name": "componentName", + "type": "string", + "description": "The name to assign to the generated validation component.", + "required": true, + "defaultValue": "" + }, + { + "name": "validationSchema", + "type": "object", + "description": "A JSON schema object defining the validation rules and constraints for the data fields.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Target programming language for the component code, e.g., 'JavaScript', 'TypeScript'.", + "required": false, + "defaultValue": "\"JavaScript\"" + }, + { + "name": "includeComments", + "type": "boolean", + "description": "Whether to include explanatory comments in the generated component code.", + "required": false, + "defaultValue": "true" + }, + { + "name": "exportType", + "type": "string", + "description": "The export style for the component code, e.g., 'default' or 'named'.", + "required": false, + "defaultValue": "\"default\"" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated component code as a string and metadata about the generated component." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a standardized, reusable component for validating data against a specific schema. This is useful in scenarios where applications require consistent data validation logic encapsulated in a component for maintainability, reusability, and integration into codebases automatically or by developers.", + "limitations": "This tool generates component code based on provided schemas but does not execute validation nor test the generated code's runtime behavior. It assumes valid JSON schemas and a supported target language.", + "examples": [ + "Generate a JavaScript validation component named 'UserValidator' based on a JSON schema defining user data requirements.", + "Create a TypeScript data validation component with explanatory comments included, using a provided field validation schema.", + "Produce a named export React validation component for form data checking from the given validation rules." + ] + }, + "tags": [ + "data-validation", + "component-generation", + "schema-validation", + "code-generation", + "javascript", + "typescript" + ], + "examples": [ + { + "inputJson": "{\"componentName\":\"UserValidator\",\"validationSchema\":{\"type\":\"object\",\"properties\":{\"username\":{\"type\":\"string\",\"minLength\":3},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"required\":[\"username\",\"email\"]},\"language\":\"JavaScript\",\"includeComments\":true,\"exportType\":\"default\"}", + "description": "Generate a JavaScript default-export component named 'UserValidator' with comments from a JSON schema validating username and email." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Component", + "context": null + } + }, + { + "name": "etl-processes.analyzeSession", + "description": "Analyzes session data by processing input session logs or data objects to extract insights such as user behavior patterns, session durations, event frequencies, and funnel conversion metrics. It accepts raw session records or structured session data, performs aggregation and statistical analysis, and outputs a comprehensive report including key session metrics and visual summaries.", + "category": "etl-processes", + "parameters": [ + { + "name": "sessionData", + "type": "array", + "description": "Array of session event objects or records representing user sessions to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeFrame", + "type": "object", + "description": "Optional time frame filter with 'start' and 'end' ISO 8601 date strings to limit sessions analyzed.", + "required": false, + "defaultValue": "" + }, + { + "name": "aggregationLevel", + "type": "string", + "description": "Granularity of analysis: 'session', 'user', or 'event' level aggregation.", + "required": false, + "defaultValue": "session" + }, + { + "name": "includeFunnels", + "type": "boolean", + "description": "Whether to perform funnel analysis to measure conversion rates through defined steps.", + "required": false, + "defaultValue": "false" + }, + { + "name": "funnelSteps", + "type": "array", + "description": "Array of event names defining the funnel steps to analyze, required if includeFunnels is true.", + "required": false, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "List of custom session metrics to compute, e.g., ['averageDuration', 'bounceRate'].", + "required": false, + "defaultValue": "['averageDuration','sessionCount','bounceRate']" + } + ], + "returns": { + "type": "object", + "description": "An object containing aggregated session metrics, analysis summaries, funnel conversion data (if requested), and optional visual data representations such as charts or graphs data." + }, + "aiAgent": { + "useCase": "Use this tool when you need to analyze raw or semi-structured session data to extract meaningful user behavior information, identify engagement patterns, and assess session quality or conversion funnels. It is particularly useful for converting log data into actionable analytics and business insights.", + "limitations": "Does not capture real-time streaming session data or integrate directly with live telemetry sources. Requires session data to be pre-collected and passed in compatible format. Does not perform advanced predictive modeling or user segmentation beyond provided metrics.", + "examples": [ + "Analyze session logs from the past week to understand user engagement and average session length.", + "Calculate funnel conversion rates for a series of predefined steps in the user session data.", + "Generate a report with key session metrics focusing on bounce rate and session counts for a specific time period." + ] + }, + "tags": [ + "session", + "analysis", + "etl", + "analytics", + "user-behavior", + "conversion", + "funnels" + ], + "examples": [ + { + "inputJson": "{\"sessionData\":[{\"sessionId\":\"s1\",\"userId\":\"u1\",\"events\":[{\"name\":\"pageView\",\"timestamp\":\"2024-05-01T10:00:00Z\"},{\"name\":\"purchase\",\"timestamp\":\"2024-05-01T10:05:00Z\"}],\"startTime\":\"2024-05-01T10:00:00Z\",\"endTime\":\"2024-05-01T10:05:00Z\"}],\"timeFrame\":{\"start\":\"2024-05-01T00:00:00Z\",\"end\":\"2024-05-07T23:59:59Z\"},\"aggregationLevel\":\"session\",\"includeFunnels\":true,\"funnelSteps\":[\"pageView\",\"purchase\"],\"metrics\":[\"averageDuration\",\"bounceRate\"]}", + "description": "Analyze a week's worth of session data to extract average session duration and funnel conversion from page views to purchases." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Session", + "context": null + } + }, + { + "name": "etl-processes.analyzeTrend", + "description": "This tool accepts time series data or ordered event data as input along with configurable parameters for trend analysis methods such as moving averages or linear regression. It processes the data to detect and quantify underlying trends over specified time intervals, outputting metrics like trend direction, slope, strength, and confidence intervals, aiding sequential data analysis.", + "category": "etl-processes", + "parameters": [ + { + "name": "data", + "type": "array", + "description": "An array of data points representing the time series or ordered metric values to analyze, typically objects with timestamp and value properties.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeField", + "type": "string", + "description": "Name of the field in data objects that contains the timestamp or ordinal indicator for sequencing the data points.", + "required": true, + "defaultValue": "timestamp" + }, + { + "name": "valueField", + "type": "string", + "description": "Name of the field in data objects that contains the numerical value to analyze for trends.", + "required": true, + "defaultValue": "value" + }, + { + "name": "method", + "type": "string", + "description": "The trend analysis method to apply. Supported options include 'linearRegression', 'movingAverage', and 'exponentialSmoothing'.", + "required": false, + "defaultValue": "linearRegression" + }, + { + "name": "windowSize", + "type": "number", + "description": "For moving average or smoothing methods, the size of the window (number of points) to consider for calculations.", + "required": false, + "defaultValue": "5" + }, + { + "name": "confidenceLevel", + "type": "number", + "description": "Confidence level (between 0 and 1) used when calculating trend confidence intervals, if applicable.", + "required": false, + "defaultValue": "0.95" + }, + { + "name": "returnRawData", + "type": "boolean", + "description": "If true, includes the processed intermediate data points in the output for detailed inspection.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the overall trend analysis results including detected trend direction ('up','down','none'), slope value, confidence intervals, and optionally processed data points." + }, + "aiAgent": { + "useCase": "Use this tool when you need to extract and quantify trends from ordered numerical data, such as sales over time, website traffic, or sensor readings, to support business intelligence or operational decision making. It helps identify whether data shows increasing, decreasing, or stable trends and the strength and confidence of such trends.", + "limitations": "This tool analyzes linear or smoothing-based trends and does not detect seasonal patterns, cyclical effects, or perform complex forecasting. It requires clean, regularly ordered input data and does not impute missing values automatically.", + "examples": [ + "Analyze sales figures over the last year to determine if revenue is trending upward or downward.", + "Detect trends in daily active users from website traffic data using a moving average method.", + "Evaluate whether sensor measurements are showing any consistent increase or decrease over the past month with confidence estimates." + ] + }, + "tags": [ + "etl", + "trend-analysis", + "time-series", + "analytics", + "data-processing", + "linear-regression", + "moving-average" + ], + "examples": [ + { + "inputJson": "{\"data\":[{\"timestamp\":\"2023-01-01\",\"value\":120},{\"timestamp\":\"2023-01-02\",\"value\":130},{\"timestamp\":\"2023-01-03\",\"value\":128},{\"timestamp\":\"2023-01-04\",\"value\":135},{\"timestamp\":\"2023-01-05\",\"value\":140}],\"timeField\":\"timestamp\",\"valueField\":\"value\",\"method\":\"linearRegression\",\"confidenceLevel\":0.95}", + "description": "Analyze a small set of daily sales data using linear regression to identify overall trend and confidence." + }, + { + "inputJson": "{\"data\":[{\"date\":\"2023-06-01\",\"value\":200},{\"date\":\"2023-06-02\",\"value\":195},{\"date\":\"2023-06-03\",\"value\":190},{\"date\":\"2023-06-04\",\"value\":185},{\"date\":\"2023-06-05\",\"value\":180}],\"timeField\":\"date\",\"valueField\":\"value\",\"method\":\"movingAverage\",\"windowSize\":3,\"returnRawData\":true}", + "description": "Apply moving average smoothing on sales decline data over 5 days, returning intermediate processed points." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Trend", + "context": null + } + }, + { + "name": "etl-processes.analyzeReply", + "description": "Analyzes reply messages or responses in a data pipeline context by extracting key information such as sentiment, intent, keyword presence, and response time. Input includes the reply text and optional metadata. Output is a structured analysis report encapsulating these insights for further processing or reporting.", + "category": "etl-processes", + "parameters": [ + { + "name": "replyText", + "type": "string", + "description": "The text content of the reply or message to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional metadata associated with the reply, such as timestamp, sender, or channel info.", + "required": false, + "defaultValue": "" + }, + { + "name": "analyzeSentiment", + "type": "boolean", + "description": "Indicates whether to perform sentiment analysis on the reply text.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractKeywords", + "type": "boolean", + "description": "Determines if keywords should be extracted from the reply text.", + "required": false, + "defaultValue": "true" + }, + { + "name": "detectIntent", + "type": "boolean", + "description": "Enables intent detection based on the reply content.", + "required": false, + "defaultValue": "true" + }, + { + "name": "responseTimestamp", + "type": "string", + "description": "ISO 8601 timestamp string indicating when the reply was sent, used to compute response time if requestTimestamp is provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "requestTimestamp", + "type": "string", + "description": "ISO 8601 timestamp string of the original request or prompt to calculate response latency.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing sentiment score, recognized intent, keywords found, response time in seconds, and any metadata processed." + }, + "aiAgent": { + "useCase": "Use this tool to analyze text reply messages during ETL processes to extract communication insights such as sentiment polarity, intent classification, keywords for categorization, and timing metrics like response delays. Ideal for pipelines handling communication logs or customer feedback aggregation.", + "limitations": "This tool does not generate reply content or perform deep contextual understanding beyond basic NLP-level analysis. It requires textual input and cannot process multimedia replies or non-text formats.", + "examples": [ + "Analyze a customer support reply to extract sentiment and intent to prioritize follow-up.", + "Extract keywords and measure response times from automated email replies to improve workflow efficiency.", + "Process chat reply logs with metadata to generate analytics for communication patterns." + ] + }, + "tags": [ + "analysis", + "reply", + "communication", + "sentiment-analysis", + "intent-detection", + "keyword-extraction", + "response-time", + "etl-process" + ], + "examples": [ + { + "inputJson": "{\"replyText\":\"Thank you for your quick response, the solution works perfectly!\",\"metadata\":{\"sender\":\"user123\",\"channel\":\"email\"},\"analyzeSentiment\":true,\"extractKeywords\":true,\"detectIntent\":true,\"responseTimestamp\":\"2024-05-10T14:35:00Z\",\"requestTimestamp\":\"2024-05-10T14:30:00Z\"}", + "description": "Analyze a thank-you reply email including sentiment, keyword extraction, and response time calculation." + }, + { + "inputJson": "{\"replyText\":\"Can you please provide the invoice by the end of the day?\",\"analyzeSentiment\":true,\"extractKeywords\":true,\"detectIntent\":true}", + "description": "Analyze a request reply message for intent and important keywords." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Reply", + "context": null + } + }, + { + "name": "etl-processes.analyzeIncident", + "description": "This tool accepts structured security incident data as input, processes it to identify key patterns, root causes, impacted systems, and timelines, and outputs a comprehensive incident analysis report. It helps security teams understand the incident scope and recommend mitigation steps.", + "category": "etl-processes", + "parameters": [ + { + "name": "incidentData", + "type": "object", + "description": "Structured data describing the security incident, including logs, alerts, and metadata.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeRootCauseAnalysis", + "type": "boolean", + "description": "Whether to perform a detailed root cause analysis.", + "required": false, + "defaultValue": "true" + }, + { + "name": "timeWindowHours", + "type": "number", + "description": "The time window in hours around the incident timestamp to analyze logs and events.", + "required": false, + "defaultValue": "24" + }, + { + "name": "severityFilter", + "type": "string", + "description": "Filter events by severity level (e.g., low, medium, high).", + "required": false, + "defaultValue": "high" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired format of the analysis report (e.g., json, text, markdown).", + "required": false, + "defaultValue": "json" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing identified patterns, root causes, affected assets, timeline summary, and recommended mitigation actions." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to analyze raw or preprocessed security incident data to derive actionable insights such as root cause, attack vectors, impacted systems, and recommended mitigation steps. It's ideal for automated incident response or forensic investigations.", + "limitations": "This tool cannot replace human expert judgment and cannot analyze incidents without structured data inputs. It does not perform real-time monitoring or detection, only post-incident analysis.", + "examples": [ + "Analyze a security breach incident to identify root cause and affected systems.", + "Generate a detailed report from firewall and IDS alerts surrounding an incident.", + "Filter and summarize only high severity events during analysis." + ] + }, + "tags": [ + "etl", + "security", + "incident analysis", + "root cause", + "forensics", + "post-incident", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"incidentData\":{\"alerts\":[{\"timestamp\":\"2024-06-01T10:15:30Z\",\"severity\":\"high\",\"description\":\"Unauthorized access attempt detected on server 12.\"},{\"timestamp\":\"2024-06-01T10:16:00Z\",\"severity\":\"medium\",\"description\":\"Suspicious login from IP 192.168.1.50.\"}],\"metadata\":{\"incidentId\":\"INC123456\",\"detectedAt\":\"2024-06-01T10:15:00Z\",\"affectedSystems\":[\"server12\"]}},\"includeRootCauseAnalysis\":true,\"timeWindowHours\":12,\"severityFilter\":\"high\",\"outputFormat\":\"json\"}", + "description": "Analyze a high severity security incident with alerts and metadata, focusing on 12 hours surrounding the detected breach, including root cause analysis, output as JSON." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Incident", + "context": null + } + }, + { + "name": "etl-processes.analyzeThread", + "description": "Analyzes a communication thread extracted from messaging platforms or forums by examining message content, participants, and timestamps to produce insights such as sentiment trends, active users, message frequency, and topic summaries. Accepts JSON-formatted thread data as input and outputs a structured analysis report.", + "category": "etl-processes", + "parameters": [ + { + "name": "threadData", + "type": "object", + "description": "A JSON object representing the communication thread, including messages, participants, and metadata.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeRangeStart", + "type": "string", + "description": "Optional ISO 8601 timestamp specifying the start of the time range to analyze within the thread.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeRangeEnd", + "type": "string", + "description": "Optional ISO 8601 timestamp specifying the end of the time range to analyze within the thread.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Whether to perform sentiment analysis on message contents to identify tone and mood of the thread.", + "required": false, + "defaultValue": "true" + }, + { + "name": "topNParticipants", + "type": "number", + "description": "Number of top active participants to include in the summary by message count.", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object summarizing the thread, including message counts, active participants, sentiment scores over time, topic keywords, and time-based message distribution." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to extract meaningful insights from a communication thread, such as identifying key participants, sentiment changes, or activity spikes within a specified timeframe. Ideal for analyzing conversations from chat logs, email threads, or forum discussions to support monitoring, summarization, or trend detection.", + "limitations": "This tool cannot replace detailed discourse analysis or understand context beyond textual content. It does not perform language translation or deep semantic interpretation beyond keyword/topic extraction and sentiment scoring.", + "examples": [ + "Analyze the last month's conversation in this Slack channel thread for sentiment and activity trends.", + "Summarize the top contributors and message frequency in this forum thread between two dates.", + "Perform sentiment analysis and list key topics from this email chain thread." + ] + }, + "tags": [ + "etl", + "analysis", + "thread", + "communication", + "sentiment", + "participants", + "timing" + ], + "examples": [ + { + "inputJson": "{\"threadData\":{\"messages\":[{\"id\":\"m1\",\"sender\":\"alice\",\"timestamp\":\"2024-05-01T10:00:00Z\",\"content\":\"Looking forward to the project kickoff.\"},{\"id\":\"m2\",\"sender\":\"bob\",\"timestamp\":\"2024-05-01T10:05:00Z\",\"content\":\"Me too, it's exciting!\"},{\"id\":\"m3\",\"sender\":\"alice\",\"timestamp\":\"2024-05-01T11:00:00Z\",\"content\":\"Let's make sure to finalize the specs.\"}],\"participants\":[\"alice\",\"bob\"]},\"timeRangeStart\":\"2024-05-01T00:00:00Z\",\"timeRangeEnd\":\"2024-05-02T00:00:00Z\",\"includeSentimentAnalysis\":true,\"topNParticipants\":2}", + "description": "Analyze a short conversation thread between two participants over one day, including sentiment analysis and participant ranking." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Thread", + "context": null + } + }, + { + "name": "etl-processes.analyzeThreat", + "description": "Analyzes raw threat intelligence data inputs by extracting key indicators, categorizing threat types, assessing severity levels, and generating a structured report summarizing potential risks and mitigation suggestions. Accepts threat data as JSON or text logs and outputs a detailed threat analysis object.", + "category": "etl-processes", + "parameters": [ + { + "name": "threatData", + "type": "string", + "description": "Raw threat intelligence data as JSON string or unstructured text for analysis", + "required": true, + "defaultValue": "" + }, + { + "name": "dataFormat", + "type": "string", + "description": "Format of input threat data, e.g., 'json', 'text'", + "required": true, + "defaultValue": "json" + }, + { + "name": "threatCategories", + "type": "array", + "description": "List of threat categories to focus the analysis on, e.g., ['malware','phishing']", + "required": false, + "defaultValue": "[]" + }, + { + "name": "severityThreshold", + "type": "number", + "description": "Minimum severity level (1-10) to include in the analysis output", + "required": false, + "defaultValue": "1" + }, + { + "name": "includeMitigation", + "type": "boolean", + "description": "Whether to include recommended mitigation actions in the output", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing structured analysis including identified indicators, threat categories, severity scores, confidence levels, and optional mitigation recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when provided with raw or semi-structured threat intelligence data that needs to be analyzed for security threat detection, classification, and severity assessment to aid decision making in security operations or incident response.", + "limitations": "This tool does not perform real-time threat detection or network scanning; it only analyzes provided static or historical threat intelligence data. It cannot access external threat feeds or update automatically.", + "examples": [ + "Analyze a JSON array of malware samples to assess their threat severity and obtain mitigation steps.", + "Process unstructured phishing email logs to identify common indicators and categorize threat types.", + "Filter threat intelligence focusing only on ransomware threats above a certain severity threshold with mitigation advice." + ] + }, + "tags": [ + "threat analysis", + "etl", + "security", + "cybersecurity", + "data transformation", + "threat intelligence", + "risk assessment" + ], + "examples": [ + { + "inputJson": "{\"threatData\":\"[{\\\"indicator\\\":\\\"192.168.0.10\\\", \\\"type\\\":\\\"ip\\\", \\\"category\\\":\\\"malware\\\", \\\"severity\\\":7}]\",\"dataFormat\":\"json\",\"severityThreshold\":5,\"includeMitigation\":true}", + "description": "Analyze JSON input of malware IP indicators with severity threshold 5 and include mitigation" + }, + { + "inputJson": "{\"threatData\":\"Suspicious email headers indicating possible phishing attempt from domain fakebank.com\",\"dataFormat\":\"text\",\"threatCategories\":[\"phishing\"],\"includeMitigation\":true}", + "description": "Analyze unstructured text log focusing on phishing threat category including mitigation" + }, + { + "inputJson": "{\"threatData\":\"[{\\\"indicator\\\":\\\"ransomfile.exe\\\", \\\"type\\\":\\\"file\\\", \\\"category\\\":\\\"ransomware\\\", \\\"severity\\\":9}]\",\"dataFormat\":\"json\",\"threatCategories\":[\"ransomware\"],\"severityThreshold\":8,\"includeMitigation\":false}", + "description": "Analyze JSON input filtering for ransomware with severity above 8 and no mitigation recommendations" + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Threat", + "context": null + } + }, + { + "name": "etl-processes.analyzeHTML", + "description": "Analyzes raw HTML content or URLs by extracting and summarizing its structure, metadata, text content, and links. Accepts HTML string or webpage URL as input, parses the document DOM, and returns a comprehensive analysis including metadata tags, headings hierarchy, link references, text summary, and basic statistics on elements.", + "category": "etl-processes", + "parameters": [ + { + "name": "htmlContent", + "type": "string", + "description": "Raw HTML content to analyze. Optional if url is provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "url", + "type": "string", + "description": "URL of the webpage to fetch and analyze. Optional if htmlContent is provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeTextSummary", + "type": "boolean", + "description": "Whether to generate a text summary from the main content of the HTML.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum number of words in the generated text summary. Ignored if includeTextSummary is false.", + "required": false, + "defaultValue": "150" + }, + { + "name": "extractMetadata", + "type": "boolean", + "description": "Whether to extract metadata tags like title, description, keywords, and open graph info.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractLinks", + "type": "boolean", + "description": "Whether to extract all href links from the document.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractHeadings", + "type": "boolean", + "description": "Whether to extract the hierarchical structure of headings (h1-h6).", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing metadata (title, description, keywords, open graph), list of links, headings hierarchy, a text summary string if requested, and basic element counts (paragraphs, images, scripts)." + }, + "aiAgent": { + "useCase": "Use this tool when you need to quickly analyze and summarize the structure and content of HTML documents or webpages for data extraction, content auditing, SEO analysis, or web scraping preprocessing. Ideal when given either raw HTML or a URL to analyze page metadata, headings, links, and textual content.", + "limitations": "Does not execute JavaScript, so dynamically loaded content might be missing. Cannot interact with interactive or multimedia web features. Summary is basic and not deeply semantic. Requires valid HTML or reachable URLs.", + "examples": [ + "Analyze the metadata, headings, and links of a marketing webpage for SEO keywords.", + "Extract and summarize main textual content and links from a blog post HTML string.", + "Fetch a URL and provide structured info about its metadata, links, and heading outline." + ] + }, + "tags": [ + "analysis", + "html", + "metadata", + "seo", + "webscraping", + "content-summary", + "dom-parsing", + "etl" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://example.com\",\"includeTextSummary\":true,\"maxSummaryLength\":100}", + "description": "Analyze the webpage at example.com extracting metadata, headings, links, and a 100-word summary." + }, + { + "inputJson": "{\"htmlContent\":\"Test

Main Heading

This is a paragraph.

A Link\",\"extractMetadata\":true,\"extractLinks\":true,\"extractHeadings\":true,\"includeTextSummary\":false}", + "description": "Analyze raw HTML content extracting metadata, links, and heading structure without text summary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "HTML", + "context": null + } + }, + { + "name": "etl-processes.analyzeXML", + "description": "Analyzes XML input data by extracting specified elements or attributes, applying optional XPath queries, and generating a detailed summary report including counts, structure, and data patterns. Accepts XML strings and parameters to customize extraction and analysis scope, and outputs structured insights useful for downstream ETL processes.", + "category": "etl-processes", + "parameters": [ + { + "name": "xmlString", + "type": "string", + "description": "The XML data as a string to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "xpathQueries", + "type": "array", + "description": "Array of XPath query strings to select specific nodes or attributes for analysis.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeAttributes", + "type": "boolean", + "description": "Flag to indicate whether to include attributes of nodes in the analysis.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxDepth", + "type": "number", + "description": "Maximum depth of XML tree to analyze; deeper nodes will be ignored if set.", + "required": false, + "defaultValue": "10" + }, + { + "name": "summaryStats", + "type": "boolean", + "description": "Whether to include summary statistics such as counts of elements, unique values, and text length distribution.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns a structured object containing analysis summary including element counts, attribute summaries, results of XPath queries, and optionally statistical insights detailing distribution or anomalies found in XML data." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to extract meaningful structured insights from XML datasets in ETL pipelines. It helps discover data distribution, validate XML structure, or extract specific elements for transformation. Ideal for automating understanding of unknown or complex XML sources before integration.", + "limitations": "Cannot perform full XML validation against schemas. Large XML documents may require pre-processing as this tool is optimized for moderate-size XML inputs. Complex transformations or edits to XML are out of scope.", + "examples": [ + "Analyze an XML string to count all 'product' elements and extract their 'id' attributes.", + "Use XPath queries to extract all 'order' nodes placed within the last month from XML data.", + "Generate a summary report including attributes analysis and text content character distributions for a given XML document." + ] + }, + "tags": [ + "etl", + "xml", + "analysis", + "data-extraction", + "xpath", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"xmlString\":\"DressShirt\",\"xpathQueries\":[\"//product\"],\"includeAttributes\":true,\"maxDepth\":5,\"summaryStats\":true}", + "description": "Analyze a catalog XML to list all product nodes and include attribute summaries." + }, + { + "inputJson": "{\"xmlString\":\"\",\"xpathQueries\":[\"//order[@date>'2024-04-25']\"],\"includeAttributes\":true,\"maxDepth\":3,\"summaryStats\":false}", + "description": "Extract orders placed after a specific date using XPath and summarize matching nodes." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "XML", + "context": null + } + }, + { + "name": "etl-processes.downloadCSV", + "description": "This tool downloads CSV files from specified URLs. It accepts the URL of the CSV file, optional HTTP headers for authenticated requests, and a timeout setting. It fetches the CSV data over HTTP(S) and returns the CSV content as a string for downstream processing or saving to disk.", + "category": "etl-processes", + "parameters": [ + { + "name": "url", + "type": "string", + "description": "The full HTTP or HTTPS URL pointing to the CSV file to download.", + "required": true, + "defaultValue": "" + }, + { + "name": "headers", + "type": "object", + "description": "Optional HTTP headers as key-value pairs for custom requests such as authentication tokens.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait for the download before aborting.", + "required": false, + "defaultValue": "30" + } + ], + "returns": { + "type": "object", + "description": "An object containing the raw CSV content as a string and metadata such as HTTP status code and any error messages." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically retrieve CSV data from a web endpoint or file server, especially when direct read APIs are unavailable. It handles HTTP fetching reliably including optional headers and timeout settings.", + "limitations": "Does not parse the CSV data; only downloads raw CSV content. Does not handle non-HTTP protocols like FTP or file system paths.", + "examples": [ + "Download a public CSV file from a government data portal URL.", + "Download a CSV report behind an API that requires an authorization header.", + "Download a CSV file with a short timeout to avoid long waits." + ] + }, + "tags": [ + "download", + "CSV", + "HTTP", + "etl", + "data extraction", + "file download" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://example.com/data.csv\"}", + "description": "Download a simple CSV file from a public URL without additional headers." + }, + { + "inputJson": "{\"url\":\"https://secureapi.com/report.csv\",\"headers\":{\"Authorization\":\"Bearer abc123xyz\"}}", + "description": "Download a CSV file requiring an authorization bearer token." + }, + { + "inputJson": "{\"url\":\"https://example.com/large.csv\",\"timeoutSeconds\":10}", + "description": "Download a large CSV file but abort if it takes longer than 10 seconds." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "CSV", + "context": null + } + }, + { + "name": "etl-processes.sendComment", + "description": "This tool accepts a text comment along with context such as target data entity and author information. It processes the input by formatting and attaching the comment metadata, then sends it to a specified destination such as a data record, log system, or ETL pipeline audit trail. It outputs a delivery status and comment ID if successful.", + "category": "etl-processes", + "parameters": [ + { + "name": "commentText", + "type": "string", + "description": "The textual content of the comment to be sent", + "required": true, + "defaultValue": "" + }, + { + "name": "targetEntityId", + "type": "string", + "description": "Identifier of the data entity or record the comment refers to", + "required": true, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "Name or identifier of the comment author", + "required": false, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 timestamp when the comment is created; if omitted current time is used", + "required": false, + "defaultValue": "" + }, + { + "name": "destinationType", + "type": "string", + "description": "Type of destination to send the comment to, e.g., 'database', 'log', or 'auditTrail'", + "required": false, + "defaultValue": "auditTrail" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional metadata to attach to the comment (tags, priority, etc.)", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the status of the send operation, including success flag, comment ID, and error message if any" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to log, annotate, or attach user or system-generated comments within an ETL process for traceability, auditing, or collaboration. It is helpful for enriching data entities with contextual remarks in structured pipelines.", + "limitations": "This tool does not perform comment moderation, natural language understanding of the comment content, or complex routing beyond specified destination types.", + "examples": [ + "Send a comment annotating a data record during an ETL operation", + "Log a message to the ETL audit trail after a transformation step", + "Attach an author note to a dataset in the data warehouse for later review" + ] + }, + "tags": [ + "etl", + "comment", + "logging", + "annotation", + "auditTrail", + "dataPipeline", + "communication" + ], + "examples": [ + { + "inputJson": "{\"commentText\":\"Validated customer address data.\",\"targetEntityId\":\"cust12345\",\"authorName\":\"etlAgent42\",\"destinationType\":\"auditTrail\"}", + "description": "Send an audit trail comment about customer data validation." + }, + { + "inputJson": "{\"commentText\":\"Transformation step failed due to null value.\",\"targetEntityId\":\"transformStep7\",\"authorName\":\"systemMonitor\",\"timestamp\":\"2024-06-01T10:15:30Z\",\"destinationType\":\"log\"}", + "description": "Log an error comment about a failed transformation step with timestamp." + }, + { + "inputJson": "{\"commentText\":\"Reviewed data load results, no anomalies found.\",\"targetEntityId\":\"loadJob9876\",\"authorName\":\"dataEngineer\"}", + "description": "Attach a review comment to a data load job; defaults to auditTrail destination." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Comment", + "context": null + } + }, + { + "name": "etl-processes.renderWord", + "description": "This tool accepts a single string as input and processes it to render the word into a specified format for data pipelines, including transformations like casing (uppercase, lowercase, title case), character filtering, and optional embedding into template strings. It outputs the transformed word as a string suitable for further ETL processing or generation tasks.", + "category": "etl-processes", + "parameters": [ + { + "name": "inputWord", + "type": "string", + "description": "The original word string to be rendered and transformed.", + "required": true, + "defaultValue": "" + }, + { + "name": "caseFormat", + "type": "string", + "description": "The casing format to apply: 'uppercase', 'lowercase', or 'titlecase'.", + "required": false, + "defaultValue": "lowercase" + }, + { + "name": "removeNonAlpha", + "type": "boolean", + "description": "Whether to remove all non-alphabetic characters from the word.", + "required": false, + "defaultValue": "false" + }, + { + "name": "prefix", + "type": "string", + "description": "Optional prefix string to prepend to the rendered word.", + "required": false, + "defaultValue": "" + }, + { + "name": "suffix", + "type": "string", + "description": "Optional suffix string to append to the rendered word.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "string", + "description": "The rendered and transformed word string after applying requested formatting and modifications." + }, + "aiAgent": { + "useCase": "Use this tool when you need to systematically format and clean individual words during ETL processing, such as standardizing case, removing unwanted characters, and embedding words within prefixes or suffixes for downstream consumption in data pipelines.", + "limitations": "This tool processes only single words (strings without spaces); it does not handle phrases or full sentences and does not perform complex linguistic or semantic transformation.", + "examples": [ + "Render 'ExampleWord123' as uppercase with non-alphabetic characters removed.", + "Convert input word to title case and add a prefix and suffix around it.", + "Simply lowercase the input word without additional changes." + ] + }, + "tags": [ + "etl", + "transform", + "text-processing", + "word-formatting", + "string-manipulation" + ], + "examples": [ + { + "inputJson": "{\"inputWord\":\"ExampleWord123\",\"caseFormat\":\"uppercase\",\"removeNonAlpha\":true,\"prefix\":\"PRE_\",\"suffix\":\"_SUF\"}", + "description": "Convert 'ExampleWord123' to uppercase, remove digits, and add prefix and suffix." + }, + { + "inputJson": "{\"inputWord\":\"helloWorld\",\"caseFormat\":\"titlecase\",\"removeNonAlpha\":false,\"prefix\":\"\",\"suffix\":\"_end\"}", + "description": "Title case the word 'helloWorld' and append '_end' as suffix." + }, + { + "inputJson": "{\"inputWord\":\"Data123\",\"caseFormat\":\"lowercase\",\"removeNonAlpha\":true,\"prefix\":\"\",\"suffix\":\"\"}", + "description": "Lowercase the word 'Data123' and remove non-alphabetic characters." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Word", + "context": null + } + }, + { + "name": "etl-processes.draftWord", + "description": "This tool accepts raw textual input and drafts a refined single word fitting specific semantic and stylistic constraints. It processes inputs such as root words, synonyms, or thematic context, and outputs a polished word tailored for inclusion in data extraction, transformation, or labeling workflows requiring precise vocabulary.", + "category": "etl-processes", + "parameters": [ + { + "name": "rootWord", + "type": "string", + "description": "The initial word or root text based on which the new word draft will be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetLanguage", + "type": "string", + "description": "The language code (e.g., 'en', 'fr') for the drafted word to conform to language rules.", + "required": false, + "defaultValue": "\"en\"" + }, + { + "name": "desiredPartOfSpeech", + "type": "string", + "description": "Specifies the grammatical category (e.g., noun, verb, adjective) that the drafted word should fit.", + "required": false, + "defaultValue": "\"\"" + }, + { + "name": "thematicContext", + "type": "string", + "description": "Optional context or domain theme to guide the semantic nature of the drafted word (e.g., 'technology', 'finance').", + "required": false, + "defaultValue": "\"\"" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum character length allowed for the drafted word.", + "required": false, + "defaultValue": "20" + }, + { + "name": "includeSynonyms", + "type": "boolean", + "description": "If true, provide synonyms along with the primary drafted word as output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Outputs an object containing the primary drafted word and optionally a list of synonyms if requested." + }, + "aiAgent": { + "useCase": "Use this tool when you need to generate or refine single word labels, tags, or keywords from raw text inputs during ETL workflows. Ideal for creating normalized and semantically relevant terminology to improve data consistency and searchability.", + "limitations": "This tool does not generate multi-word phrases or sentences and may not produce words suitable for highly specialized technical jargon without adequate context.", + "examples": [ + "Draft a concise noun from the root word 'analyze' for labeling dataset fields.", + "Generate a synonym-rich adjective related to 'efficient' in English for tagging performance metrics.", + "Create a thematic noun in the finance domain based on the root word 'fund'." + ] + }, + "tags": [ + "etl", + "word-generation", + "text-processing", + "labeling", + "normalization", + "synonyms" + ], + "examples": [ + { + "inputJson": "{\"rootWord\":\"analyze\",\"desiredPartOfSpeech\":\"noun\",\"targetLanguage\":\"en\",\"maxLength\":15,\"includeSynonyms\":true}", + "description": "Drafts a noun-based word from 'analyze' in English, with synonyms, suitable for dataset labeling." + }, + { + "inputJson": "{\"rootWord\":\"fast\",\"desiredPartOfSpeech\":\"adjective\",\"includeSynonyms\":false}", + "description": "Generates an adjective form of 'fast' without synonyms." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Word", + "context": null + } + }, + { + "name": "etl-processes.formatEndpoint", + "description": "This tool accepts an API endpoint configuration object and reformats it according to specified style and structure rules. It processes endpoint data like method, URL, headers, parameters, and request/response schema, outputting a standardized JSON or YAML representation suitable for ETL workflows or API documentation.", + "category": "etl-processes", + "parameters": [ + { + "name": "endpointData", + "type": "object", + "description": "The input endpoint configuration object including method, URL, headers, query/body parameters, and schemas. Required for formatting.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format for the formatted endpoint: 'json' or 'yaml'. Default is 'json'.", + "required": false, + "defaultValue": "json" + }, + { + "name": "includeDefaults", + "type": "boolean", + "description": "Whether to include default values explicitly in the formatted output. Defaults to false.", + "required": false, + "defaultValue": "false" + }, + { + "name": "indentation", + "type": "number", + "description": "Number of spaces to use for indentation in the output format, applicable to JSON/YAML formatting. Defaults to 2.", + "required": false, + "defaultValue": "2" + }, + { + "name": "urlTemplateStyle", + "type": "string", + "description": "Defines the style to format URL templates. Options include 'colonParam' (e.g., /users/:id) or 'bracketParam' (e.g., /users/{id}). Default is 'bracketParam'.", + "required": false, + "defaultValue": "bracketParam" + } + ], + "returns": { + "type": "string", + "description": "A string containing the formatted endpoint configuration in the desired style and format (JSON or YAML)." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to standardize or reformat raw API endpoint definitions or configurations before loading into an ETL pipeline, or preparing for API documentation and integration. It helps unify diverse endpoint formats into consistent, structured outputs for downstream processing.", + "limitations": "This tool does not validate or test the endpoint functionality or network accessibility. It also does not generate endpoint data from scratch but only reformats provided input objects. It doesn't cover security policies or authentication specifics beyond headers formatting.", + "examples": [ + "Format a raw endpoint object to YAML with bracketed URL parameters for API documentation.", + "Convert an endpoint definition to JSON with colon-styled URL parameters for easier frontend integration.", + "Include default values explicitly in the output JSON for thorough configuration auditing." + ] + }, + "tags": [ + "etl", + "api", + "endpoint", + "formatting", + "data-transformation", + "json", + "yaml" + ], + "examples": [ + { + "inputJson": "{\"endpointData\":{\"method\":\"GET\",\"url\":\"/users/{userId}\",\"headers\":{\"Accept\":\"application/json\"},\"queryParameters\":[{\"name\":\"expand\",\"type\":\"string\",\"required\":false,\"default\":\"\"}],\"responseSchema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}}}},\"outputFormat\":\"yaml\",\"includeDefaults\":false,\"indentation\":2,\"urlTemplateStyle\":\"bracketParam\"}", + "description": "Format a GET endpoint in YAML with bracket style URL parameters without explicit defaults." + }, + { + "inputJson": "{\"endpointData\":{\"method\":\"POST\",\"url\":\"/orders/:orderId/items\",\"headers\":{\"Content-Type\":\"application/json\"},\"bodyParameters\":[{\"name\":\"quantity\",\"type\":\"integer\",\"required\":true,\"default\":1}],\"responseSchema\":{\"type\":\"object\",\"properties\":{\"itemId\":{\"type\":\"string\"},\"status\":{\"type\":\"string\"}}}},\"outputFormat\":\"json\",\"includeDefaults\":true,\"indentation\":4,\"urlTemplateStyle\":\"colonParam\"}", + "description": "Format a POST endpoint in JSON with colon-style URL parameters and including default values explicitly." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Endpoint", + "context": null + } + }, + { + "name": "etl-processes.formatModule", + "description": "Formats ETL process module code by applying consistent code style, formatting indentation, replacing tabs with spaces, and optionally minifying or beautifying the module source code. Accepts raw module source as input and outputs the formatted code string compliant with given style options.", + "category": "etl-processes", + "parameters": [ + { + "name": "moduleSource", + "type": "string", + "description": "Raw source code of the ETL process module that needs formatting.", + "required": true, + "defaultValue": "" + }, + { + "name": "indentSize", + "type": "number", + "description": "Number of spaces used for indentation in the formatted output.", + "required": false, + "defaultValue": "2" + }, + { + "name": "useTabs", + "type": "boolean", + "description": "Whether to use tabs instead of spaces for indentation.", + "required": false, + "defaultValue": "false" + }, + { + "name": "lineWidth", + "type": "number", + "description": "Maximum characters per line before wrapping (0 for no limit).", + "required": false, + "defaultValue": "0" + }, + { + "name": "minify", + "type": "boolean", + "description": "If true, minimize the code by removing unnecessary whitespace and line breaks.", + "required": false, + "defaultValue": "false" + }, + { + "name": "beautify", + "type": "boolean", + "description": "If true, prettify the code applying consistent line breaks and spacing.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted ETL module source code as a string under the 'formattedSource' key." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent or developer needs to standardize the formatting of ETL process module source code for better readability, maintainability, or preparation before deployment and version control. It is useful when cleaning up raw or inconsistent code input, or when integrating ETL code snippets from multiple sources.", + "limitations": "This tool does not perform syntax validation, semantic analysis, or code execution. It does not transform or optimize the logic; only formatting changes are applied. Extremely malformed code input might produce incorrect formatting output.", + "examples": [ + "Format an ETL module source string to use 4 spaces indentation without tabs.", + "Minify an ETL processing module source code for deployment.", + "Pretty print raw ETL module code replacing tabs with 2 spaces and limiting lines to 80 chars." + ] + }, + "tags": [ + "etl", + "code-formatting", + "module", + "source-code", + "beautify", + "minify", + "developer-tools" + ], + "examples": [ + { + "inputJson": "{\"moduleSource\":\"function extract(){\\n\\tconsole.log('extracting data');\\n}\\nfunction transform(data){return data;}\\n\",\"indentSize\":4,\"useTabs\":false,\"minify\":false,\"beautify\":true,\"lineWidth\":80}", + "description": "Format ETL module code with 4 spaces indentation, no tabs, beautify output." + }, + { + "inputJson": "{\"moduleSource\":\"function extract(){\\n console.log('extracting data');\\n}\\nfunction transform(data){return data;}\\n\",\"indentSize\":2,\"useTabs\":true,\"minify\":true,\"beautify\":false,\"lineWidth\":0}", + "description": "Minify ETL module source using tabs for indentation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Module", + "context": null + } + }, + { + "name": "etl-processes.formatSummary", + "description": "Transforms raw text summaries or extracted document data into consistently formatted summaries based on specified styles and length constraints. Accepts input summary text or structured summary data, applies transformation rules like length trimming, formatting style (e.g., bullet points, paragraphs), and outputs a ready-to-use formatted summary string.", + "category": "etl-processes", + "parameters": [ + { + "name": "inputSummary", + "type": "string", + "description": "Raw summary text or JSON string representing extracted summary data to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatStyle", + "type": "string", + "description": "Requested formatting style for the output summary, e.g., 'paragraph', 'bulletPoints', or 'numberedList'.", + "required": false, + "defaultValue": "paragraph" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length of the formatted summary in characters. The output will be trimmed to this length if necessary.", + "required": false, + "defaultValue": "1000" + }, + { + "name": "preserveKeyPoints", + "type": "boolean", + "description": "If true, attempts to preserve key points or highlights from the input summary when trimming or formatting.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted summary string ready for display or further processing." + }, + "aiAgent": { + "useCase": "Use this tool when needing to standardize and cleanly format summaries extracted from documents or raw text notes into a consistent layout for reporting, display in UI, or downstream analysis. It is ideal in ETL pipelines where summary text must be normalized and length-controlled.", + "limitations": "This tool does not generate new summary content or perform summarization itself; it only formats and trims existing summary input. It cannot interpret complex semantic context beyond reformatting.", + "examples": [ + "Format a raw extracted meeting summary into bullet points no longer than 500 characters.", + "Convert a JSON-based key points summary into a clean paragraph format for email inclusion.", + "Trim a lengthy summary text to a maximum of 300 characters preserving main highlights." + ] + }, + "tags": [ + "etl", + "formatting", + "document-summary", + "text-processing", + "data-transformation" + ], + "examples": [ + { + "inputJson": "{\"inputSummary\":\"Weekly project update: Completed milestone 2, started on feature X, delayed testing due to resource constraints.\",\"formatStyle\":\"bulletPoints\",\"maxLength\":200,\"preserveKeyPoints\":true}", + "description": "Formats a raw project update summary into bullet points, limiting length to 200 characters." + }, + { + "inputJson": "{\"inputSummary\":\"{\\\"keyPoints\\\":[\\\"Budget approved\\\",\\\"Team ramp-up next week\\\"]}\",\"formatStyle\":\"paragraph\",\"maxLength\":1000,\"preserveKeyPoints\":true}", + "description": "Converts a JSON keyPoints summary into a single paragraph style formatted summary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Summary", + "context": null + } + }, + { + "name": "etl-processes.composeParagraph", + "description": "This tool accepts an array of text snippets or sentences as input, optionally applies transformation rules like text normalization and ordering, and composes them into a coherent, well-structured paragraph. It outputs the combined paragraph as a single string, suitable for use in ETL workflows where textual data extraction and synthesis is required.", + "category": "etl-processes", + "parameters": [ + { + "name": "textSegments", + "type": "array", + "description": "Array of text snippets or sentences to be composed into a paragraph.", + "required": true, + "defaultValue": "" + }, + { + "name": "normalizeWhitespace", + "type": "boolean", + "description": "Whether to normalize whitespace between segments (e.g., trim and single spaces).", + "required": false, + "defaultValue": "true" + }, + { + "name": "capitalizeFirstSentence", + "type": "boolean", + "description": "Whether to ensure the first sentence starts with a capital letter.", + "required": false, + "defaultValue": "true" + }, + { + "name": "insertSeparators", + "type": "string", + "description": "String to insert between segments; defaults to single space if empty.", + "required": false, + "defaultValue": " " + }, + { + "name": "orderSegments", + "type": "array", + "description": "Optional array of integer indices to reorder textSegments before composing; if empty, original order is used.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing the composed paragraph as a single string field named 'paragraph'." + }, + "aiAgent": { + "useCase": "Use this tool when you have multiple text fragments extracted from disparate sources that require clean merging into a cohesive paragraph for ETL pipelines, reporting, or data summarization. It standardizes spacing, capitalization, and order to produce readable, consistent text output.", + "limitations": "Does not perform advanced natural language generation, semantic coherence checking, or complex paraphrasing. It assumes input segments are suitable for simple concatenation and basic formatting.", + "examples": [ + "Combine several extracted sentences into one paragraph with normalized spacing.", + "Reorder and merge text snippets into a paragraph for a report summary.", + "Convert an array of log messages or description parts into a formatted paragraph." + ] + }, + "tags": [ + "etl", + "text-composition", + "paragraph", + "text-processing", + "data-transformation" + ], + "examples": [ + { + "inputJson": "{\"textSegments\":[\"data was collected on Monday.\",\"The results are significant.\",\"Further analysis is needed.\"],\"normalizeWhitespace\":true,\"capitalizeFirstSentence\":true,\"insertSeparators\":\" \",\"orderSegments\":[] }", + "description": "Compose three sentences in original order with normalized spacing and capitalization." + }, + { + "inputJson": "{\"textSegments\":[\"step two involves cleaning.\",\"first, gather data.\",\"then analyze.\"],\"normalizeWhitespace\":true,\"capitalizeFirstSentence\":true,\"insertSeparators\":\" \",\"orderSegments\":[1,2,0] }", + "description": "Reorder segments to logical sequence, then compose into a paragraph." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Paragraph", + "context": null + } + }, + { + "name": "etl-processes.generateTrend", + "description": "Generates data trend analytics from given time series or event datasets. Accepts input data as arrays or objects containing timestamped values, processes to identify trends such as increases, decreases, seasonality, or anomalies, and outputs structured trend reports including summary statistics and detected patterns.", + "category": "etl-processes", + "parameters": [ + { + "name": "inputData", + "type": "array", + "description": "An array of objects representing time series data points, each with timestamp and value fields, to analyze for trends.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeField", + "type": "string", + "description": "The key name in inputData objects representing the timestamp; defaults to 'timestamp'.", + "required": false, + "defaultValue": "\"timestamp\"" + }, + { + "name": "valueField", + "type": "string", + "description": "The key name in inputData objects representing the numeric value to analyze; defaults to 'value'.", + "required": false, + "defaultValue": "\"value\"" + }, + { + "name": "trendType", + "type": "string", + "description": "Type of trend analysis to perform: 'linear', 'seasonal', 'anomaly', or 'all' for comprehensive analysis.", + "required": false, + "defaultValue": "\"all\"" + }, + { + "name": "seasonalityPeriod", + "type": "number", + "description": "Optional period length (e.g., 7 for weekly) to detect seasonal trends. Required if trendType includes 'seasonal'.", + "required": false, + "defaultValue": "" + }, + { + "name": "confidenceLevel", + "type": "number", + "description": "Statistical confidence level (0-1) for trend significance reporting, default is 0.95.", + "required": false, + "defaultValue": "0.95" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format: 'json' for structured data or 'text' for human-readable summary.", + "required": false, + "defaultValue": "\"json\"" + } + ], + "returns": { + "type": "object", + "description": "An object containing trend analysis results including overall trend direction, strength, seasonality patterns if detected, anomaly points, and confidence metrics formatted as requested." + }, + "aiAgent": { + "useCase": "Use this tool when you have timestamped data and want to identify underlying trends such as upward or downward direction, seasonal cycles, or anomalies in the dataset. This helps with forecasting, monitoring KPIs, and gaining insights on temporal data patterns. It is useful in ETL pipelines, data quality monitoring, and analytics dashboards.", + "limitations": "The tool requires reasonably clean and sufficiently dense time series data. It does not perform causal inference and may not handle irregular time intervals or missing data without preprocessing. It cannot predict future values beyond trend characterization.", + "examples": [ + "Generate an overall upward or downward trend report from daily sales figures with seasonal weekly patterns.", + "Identify anomalies and unusual spikes in server CPU usage logs over the past month.", + "Provide a textual summary of trends detected in temperature sensor readings including seasonality and anomalies." + ] + }, + "tags": [ + "etl", + "trend-analysis", + "time-series", + "analytics", + "data-processing", + "seasonality", + "anomaly-detection" + ], + "examples": [ + { + "inputJson": "{\"inputData\":[{\"timestamp\":\"2023-01-01T00:00:00Z\",\"value\":100},{\"timestamp\":\"2023-01-02T00:00:00Z\",\"value\":110},{\"timestamp\":\"2023-01-03T00:00:00Z\",\"value\":120}],\"trendType\":\"linear\",\"outputFormat\":\"json\"}", + "description": "Analyze a simple ascending trend in daily values." + }, + { + "inputJson": "{\"inputData\":[{\"timestamp\":\"2023-01-01T00:00:00Z\",\"value\":200},{\"timestamp\":\"2023-01-08T00:00:00Z\",\"value\":210},{\"timestamp\":\"2023-01-15T00:00:00Z\",\"value\":205}],\"trendType\":\"seasonal\",\"seasonalityPeriod\":7}", + "description": "Detect weekly seasonality in sparse weekly samples." + }, + { + "inputJson": "{\"inputData\":[{\"timestamp\":\"2023-04-01T12:00:00Z\",\"value\":50},{\"timestamp\":\"2023-04-02T12:00:00Z\",\"value\":300},{\"timestamp\":\"2023-04-03T12:00:00Z\",\"value\":55}],\"trendType\":\"anomaly\",\"outputFormat\":\"text\"}", + "description": "Identify anomalies in sensor readings with textual output." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Trend", + "context": null + } + }, + { + "name": "etl-processes.buildVariable", + "description": "This tool builds a variable definition object used within ETL (Extract, Transform, Load) processes. It accepts inputs including the variable name, data type, optional transformation logic, and metadata, then produces a structured JSON representation of the variable. This aids in dynamically constructing transformation pipelines or parameterizing ETL jobs.", + "category": "etl-processes", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The name of the variable to create, used as an identifier in ETL workflows.", + "required": true, + "defaultValue": "" + }, + { + "name": "dataType", + "type": "string", + "description": "The data type of the variable, e.g., string, integer, date, or boolean.", + "required": true, + "defaultValue": "" + }, + { + "name": "defaultValue", + "type": "string", + "description": "Optional default value for the variable, represented as a string to be parsed per the data type.", + "required": false, + "defaultValue": "" + }, + { + "name": "transformationLogic", + "type": "string", + "description": "Optional transformation expression or code snippet that defines how to compute or modify the variable's value during ETL.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value pairs storing additional metadata about the variable, such as source column mapping or validation rules.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured variable definition including name, type, optional default, transformation logic, and metadata for use in ETL processes." + }, + "aiAgent": { + "useCase": "Use this tool when building dynamic ETL pipelines where variables must be defined programmatically with associated data types, default values, transformation rules, and metadata. It helps agents create or modify ETL variable schemas for consistent downstream use.", + "limitations": "Does not execute transformations or validate runtime variable values; it only produces the variable definition object.", + "examples": [ + "Define a string variable 'customerId' with no default and basic metadata", + "Create a date variable 'transactionDate' with transformation logic to parse date strings", + "Build an integer variable 'orderCount' with default 0 and validation metadata" + ] + }, + "tags": [ + "etl", + "variable", + "data-transformation", + "pipeline", + "definition", + "parameterization" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"customerId\",\"dataType\":\"string\",\"defaultValue\":\"\",\"transformationLogic\":\"\",\"metadata\":{\"sourceColumn\":\"cust_id\",\"nullable\":false}}", + "description": "Create a string variable named 'customerId' mapped from source column 'cust_id' with nullability false." + }, + { + "inputJson": "{\"variableName\":\"transactionDate\",\"dataType\":\"date\",\"defaultValue\":\"\",\"transformationLogic\":\"parseDate(input)\",\"metadata\":{\"format\":\"yyyy-MM-dd\"}}", + "description": "Build a date variable 'transactionDate' with a transformation logic to parse input strings into date type." + }, + { + "inputJson": "{\"variableName\":\"orderCount\",\"dataType\":\"integer\",\"defaultValue\":\"0\",\"transformationLogic\":\"\",\"metadata\":{\"minValue\":0}}", + "description": "Define an integer variable 'orderCount' with default 0 and metadata specifying minimum value constraint." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Variable", + "context": null + } + }, + { + "name": "etl-processes.buildQuery", + "description": "Builds a SQL query string based on provided input parameters such as selected columns, conditions, sorting, and table name. Accepts structured inputs for columns, filters, order, and pagination, constructs a valid SQL SELECT query, and outputs the query string for execution or further processing.", + "category": "etl-processes", + "parameters": [ + { + "name": "tableName", + "type": "string", + "description": "The name of the database table to query.", + "required": true, + "defaultValue": "" + }, + { + "name": "selectColumns", + "type": "array", + "description": "List of column names to select from the table. If empty or not provided, selects all columns (*).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "whereConditions", + "type": "object", + "description": "An object representing filter conditions as key-value pairs. Keys are column names; values are filter criteria. Supports basic equality filtering.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "orderBy", + "type": "array", + "description": "Array of objects specifying columns to order by with direction. Each object has 'column' (string) and 'direction' ('ASC' or 'DESC').", + "required": false, + "defaultValue": "[]" + }, + { + "name": "limit", + "type": "number", + "description": "Maximum number of records to return. If omitted, no limit is applied.", + "required": false, + "defaultValue": "" + }, + { + "name": "offset", + "type": "number", + "description": "Number of records to skip before starting to return records, useful for pagination. Default is 0.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An object containing the constructed SQL query string under the 'query' key." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically generate SQL SELECT queries based on dynamic input parameters for ETL workflows, data extraction, or reporting needs. It helps to avoid error-prone manual string concatenations and ensures consistent query syntax generation.", + "limitations": "This tool only builds simple SELECT queries with basic WHERE conditions using equality checks. It does not support complex SQL features like JOINs, subqueries, aggregations, or advanced filtering operators.", + "examples": [ + "Build a query selecting 'id' and 'name' columns from 'users' where 'status'='active' sorted by 'created_at' descending with limit 10.", + "Generate a query on 'orders' without filters selecting all columns with offset pagination starting at 20 records.", + "Create a query on 'products' selecting 'id' and 'price' columns with multiple where conditions and ascending order by price." + ] + }, + "tags": [ + "etl", + "sql", + "query", + "build", + "data-extraction" + ], + "examples": [ + { + "inputJson": "{\"tableName\":\"users\",\"selectColumns\":[\"id\",\"name\",\"email\"],\"whereConditions\":{\"status\":\"active\"},\"orderBy\":[{\"column\":\"created_at\",\"direction\":\"DESC\"}],\"limit\":10,\"offset\":0}", + "description": "Select id, name, email from active users ordered by creation date descending with limit 10." + }, + { + "inputJson": "{\"tableName\":\"orders\",\"selectColumns\":[],\"whereConditions\":{},\"orderBy\":[],\"limit\":50,\"offset\":20}", + "description": "Select all columns from orders table with limit 50 and offset 20 for pagination." + }, + { + "inputJson": "{\"tableName\":\"products\",\"selectColumns\":[\"id\",\"price\"],\"whereConditions\":{\"category\":\"electronics\",\"in_stock\":\"true\"},\"orderBy\":[{\"column\":\"price\",\"direction\":\"ASC\"}],\"limit\":100,\"offset\":0}", + "description": "Select id and price from products in electronics category and in stock, order by price ascending." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Query", + "context": null + } + }, + { + "name": "etl-processes.buildComponent", + "description": "Builds a reusable data transformation component for ETL pipelines. Accepts configuration for extraction parameters, transformation logic in code or expression format, and loading targets. Outputs a validated ETL component object ready to integrate or deploy in data processing workflows.", + "category": "etl-processes", + "parameters": [ + { + "name": "componentName", + "type": "string", + "description": "Name identifier for the ETL component being built.", + "required": true, + "defaultValue": "" + }, + { + "name": "extractConfig", + "type": "object", + "description": "Configuration details for data extraction including source type, connection info, and query parameters.", + "required": true, + "defaultValue": "" + }, + { + "name": "transformLogic", + "type": "string", + "description": "Transformation logic as code snippet or expression to apply on extracted data.", + "required": true, + "defaultValue": "" + }, + { + "name": "loadConfig", + "type": "object", + "description": "Configuration for loading data specifying target destination, authentication, and write mode.", + "required": true, + "defaultValue": "" + }, + { + "name": "componentDescription", + "type": "string", + "description": "Optional textual description of the ETL component's purpose and behavior.", + "required": false, + "defaultValue": "" + }, + { + "name": "validateSyntax", + "type": "boolean", + "description": "Flag to validate transformation logic syntax before building the component.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An ETL component object including validated configuration, transformation logic, and metadata for integration." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically assemble or customize reusable ETL components for modular data workflows, allowing consistent data extraction, transformation, and loading. Ideal for automating pipeline construction or generating components for deployment.", + "limitations": "This tool does not execute the ETL process itself or handle runtime errors during data processing; it only builds and validates the component configuration and transformation logic syntactically.", + "examples": [ + "Build an ETL component to extract data from a MySQL database, transform with Python code to clean nulls, and load into a data warehouse.", + "Create a reusable transformation component that normalizes date formats from source JSON files before loading.", + "Assemble an ETL component with extraction from REST API, SQL-based transformation, and loading to cloud storage." + ] + }, + "tags": [ + "etl", + "component", + "build", + "data-transformation", + "pipeline", + "automation", + "extract", + "transform", + "load" + ], + "examples": [ + { + "inputJson": "{\"componentName\":\"mysqlToWarehouse\",\"extractConfig\":{\"sourceType\":\"mysql\",\"connectionString\":\"mysql://user:pass@host:3306/db\",\"query\":\"SELECT * FROM sales\"},\"transformLogic\":\"def transform(df): df['amount'] = df['amount'].fillna(0); return df\",\"loadConfig\":{\"targetType\":\"warehouse\",\"connectionString\":\"warehouse://user:pass@host/db\",\"writeMode\":\"append\"},\"componentDescription\":\"Extract sales data from MySQL, clean null amounts, load to warehouse\",\"validateSyntax\":true}", + "description": "Build an ETL component to extract all sales data from MySQL, replace null amounts with 0, and append to a data warehouse." + }, + { + "inputJson": "{\"componentName\":\"apiJsonNormalizer\",\"extractConfig\":{\"sourceType\":\"restApi\",\"endpoint\":\"https://api.example.com/data\",\"auth\":{\"type\":\"token\",\"token\":\"abc123\"}},\"transformLogic\":\"def transform(df): df['date'] = pd.to_datetime(df['date'], errors='coerce'); return df\",\"loadConfig\":{\"targetType\":\"s3\",\"bucket\":\"my-bucket\",\"path\":\"normalized/\"},\"componentDescription\":\"Extract JSON data from REST API, normalize date fields, load to S3 bucket\",\"validateSyntax\":true}", + "description": "Create an ETL component extracting JSON data from API, normalizing dates, and loading to S3 storage." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Component", + "context": null + } + }, + { + "name": "etl-processes.generateSession", + "description": "Generates user sessions from raw event logs by grouping events based on user identifiers and configurable inactivity timeout, producing session records with start/end times, duration, and event counts for analytics.", + "category": "etl-processes", + "parameters": [ + { + "name": "events", + "type": "array", + "description": "An array of event objects containing userId and timestamp, representing raw user activity logs to be grouped into sessions.", + "required": true, + "defaultValue": "" + }, + { + "name": "userIdField", + "type": "string", + "description": "The key in each event object representing the user identifier.", + "required": false, + "defaultValue": "userId" + }, + { + "name": "timestampField", + "type": "string", + "description": "The key in each event object representing the event timestamp in ISO 8601 format or UNIX epoch milliseconds.", + "required": false, + "defaultValue": "timestamp" + }, + { + "name": "sessionTimeoutMinutes", + "type": "number", + "description": "The inactivity timeout in minutes to separate sessions; if no event occurs within this period, a new session starts.", + "required": false, + "defaultValue": "30" + }, + { + "name": "maxSessionDurationMinutes", + "type": "number", + "description": "Optional maximum duration in minutes allowed for a session before forcibly closing it, regardless of activity.", + "required": false, + "defaultValue": "0" + }, + { + "name": "sortEvents", + "type": "boolean", + "description": "Whether to sort events by timestamp before processing. Default true assumes events may be unordered.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing an array of session records, each with userId, sessionId, startTime, endTime, durationMinutes, and eventCount." + }, + "aiAgent": { + "useCase": "Use this tool when you have raw user event data and want to create meaningful session records for analytics, such as measuring user engagement and session behavior by grouping events into sessions based on inactivity. It works best for web or app usage logs where sessionizing by timeout is required.", + "limitations": "This tool does not infer sessions without clear timestamps or user identifiers and does not perform deep event content analysis. It assumes events include valid timestamp and userId fields. Sessions are generated solely by inactivity timeouts; it does not consider other session delimiters like logout.", + "examples": [ + "Generate sessions from web clickstream events with default 30-minute timeout.", + "Create sessions for mobile app events where the session timeout is 15 minutes.", + "Process unordered events by setting sortEvents to true before sessionizing." + ] + }, + "tags": [ + "etl", + "sessionization", + "analytics", + "user-engagement", + "event-processing", + "time-series", + "aggregation" + ], + "examples": [ + { + "inputJson": "{\"events\":[{\"userId\":\"user1\",\"timestamp\":\"2024-06-01T10:00:00Z\"},{\"userId\":\"user1\",\"timestamp\":\"2024-06-01T10:10:00Z\"},{\"userId\":\"user1\",\"timestamp\":\"2024-06-01T11:00:00Z\"},{\"userId\":\"user2\",\"timestamp\":\"2024-06-01T09:50:00Z\"}],\"sessionTimeoutMinutes\":30}", + "description": "Generate sessions from an array of events with a 30-minute inactivity timeout." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Session", + "context": null + } + }, + { + "name": "etl-processes.createSession", + "description": "Creates an analytics session record by extracting session details from input event data, transforming fields such as timestamps and user IDs, and loading the session object into a target analytics store. Accepts raw event arrays and outputs a standardized session summary.", + "category": "etl-processes", + "parameters": [ + { + "name": "events", + "type": "array", + "description": "Array of raw event objects representing user interactions within a session. Each event should contain at least a timestamp and eventName.", + "required": true, + "defaultValue": "" + }, + { + "name": "sessionId", + "type": "string", + "description": "Unique identifier for the session. If not supplied, the tool will generate a UUID for the session.", + "required": false, + "defaultValue": "" + }, + { + "name": "userId", + "type": "string", + "description": "Identifier for the user associated with the session. Optional if events contain user info.", + "required": false, + "defaultValue": "" + }, + { + "name": "sessionTimeoutMinutes", + "type": "number", + "description": "Duration in minutes to consider inactivity as session end. Defaults to 30 minutes.", + "required": false, + "defaultValue": "30" + }, + { + "name": "targetStore", + "type": "string", + "description": "Destination store name to load the created session data, e.g. database or analytics platform. Optional, session summary returned regardless.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Structured session object including sessionId, userId, start and end timestamps, event count, and summary metrics." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create a consolidated session record from raw event-level interaction data, enabling session-level analytics and reporting in your ETL workflows. Ideal for scenarios where events come unordered or lack explicit session grouping.", + "limitations": "This tool does not analyze event semantics beyond temporal grouping and basic summarization. It does not perform deep user behavior analysis or anomaly detection.", + "examples": [ + "Create a session from web clickstream events with a 15-minute timeout", + "Generate a session summary for events missing explicit sessionId, auto-generating it", + "Load created session data into the 'analytics_sessions' database store" + ] + }, + "tags": [ + "etl", + "analytics", + "session", + "data-transformation", + "event-processing" + ], + "examples": [ + { + "inputJson": "{\"events\":[{\"timestamp\":\"2024-06-01T10:00:00Z\",\"eventName\":\"pageView\"},{\"timestamp\":\"2024-06-01T10:10:00Z\",\"eventName\":\"click\"}] ,\"sessionTimeoutMinutes\":20}", + "description": "Create a session with a 20-minute timeout from two events 10 minutes apart" + }, + { + "inputJson": "{\"events\":[{\"timestamp\":\"2024-06-01T09:00:00Z\",\"eventName\":\"login\"},{\"timestamp\":\"2024-06-01T09:45:00Z\",\"eventName\":\"logout\"}],\"userId\":\"user123\"}", + "description": "Generate a session for user user123 with default 30-minute timeout" + }, + { + "inputJson": "{\"events\":[{\"timestamp\":\"2024-06-01T11:00:00Z\",\"eventName\":\"start\"},{\"timestamp\":\"2024-06-01T11:05:00Z\",\"eventName\":\"purchase\"}],\"targetStore\":\"analytics_db\"}", + "description": "Create a session and specify to load results into analytics_db store" + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Session", + "context": null + } + }, + { + "name": "etl-processes.createTrend", + "description": "This tool accepts time-series data and configuration parameters to extract meaningful trends by applying smoothing, aggregation, and pattern detection algorithms. It outputs trend summaries and time points highlighting significant upward or downward movements, facilitating data-driven insights.", + "category": "etl-processes", + "parameters": [ + { + "name": "data", + "type": "array", + "description": "An array of objects representing time-series data points, each with at least a timestamp and a numeric value.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestampField", + "type": "string", + "description": "The key name in each data object that holds the timestamp value.", + "required": true, + "defaultValue": "timestamp" + }, + { + "name": "valueField", + "type": "string", + "description": "The key name in each data object that holds the numeric value to analyze for trends.", + "required": true, + "defaultValue": "value" + }, + { + "name": "aggregationInterval", + "type": "string", + "description": "Time interval for aggregating data points (e.g., 'daily', 'weekly', 'monthly').", + "required": false, + "defaultValue": "daily" + }, + { + "name": "smoothingMethod", + "type": "string", + "description": "Method used to smooth data, such as 'movingAverage', 'exponential', or 'none'.", + "required": false, + "defaultValue": "movingAverage" + }, + { + "name": "smoothingWindowSize", + "type": "number", + "description": "The window size for smoothing the data series, relevant if smoothing is applied.", + "required": false, + "defaultValue": "3" + }, + { + "name": "trendDetectionMethod", + "type": "string", + "description": "Algorithm used for detecting trends, e.g., 'linearRegression', 'threshold', or 'none'.", + "required": false, + "defaultValue": "linearRegression" + }, + { + "name": "threshold", + "type": "number", + "description": "Minimum magnitude of change to qualify as a significant trend, used by threshold methods.", + "required": false, + "defaultValue": "0.05" + }, + { + "name": "includeSubTrends", + "type": "boolean", + "description": "Whether to detect and return smaller trends nested within major trends.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing detected trend summaries, including start and end timestamps, direction, magnitude, and confidence scores, plus metadata about the analysis." + }, + "aiAgent": { + "useCase": "Use this tool when needing to transform raw time-stamped numeric data into summarized trends that reveal patterns over time. Ideal for business analytics, financial market analysis, or monitoring sensor data to identify significant increases, decreases, or stable periods.", + "limitations": "It cannot detect causal relationships or apply domain-specific anomaly detection without additional customization. It assumes reasonably clean and continuous time series data.", + "examples": [ + "Identify monthly sales trends from raw daily sales data.", + "Detect significant upward or downward trends in website traffic logs.", + "Summarize energy consumption trends using weekly aggregated sensor readings." + ] + }, + "tags": [ + "etl", + "trend-analysis", + "time-series", + "data-aggregation", + "smoothing", + "analytics", + "pattern-detection" + ], + "examples": [ + { + "inputJson": "{\"data\":[{\"timestamp\":\"2024-01-01T00:00:00Z\",\"value\":100},{\"timestamp\":\"2024-01-02T00:00:00Z\",\"value\":105},{\"timestamp\":\"2024-01-03T00:00:00Z\",\"value\":102},{\"timestamp\":\"2024-01-04T00:00:00Z\",\"value\":110}],\"timestampField\":\"timestamp\",\"valueField\":\"value\",\"aggregationInterval\":\"daily\",\"smoothingMethod\":\"movingAverage\",\"smoothingWindowSize\":2,\"trendDetectionMethod\":\"linearRegression\",\"threshold\":0.03,\"includeSubTrends\":false}", + "description": "Analyze daily sales data with moving average smoothing and detect overall linear trends exceeding 3% change." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Trend", + "context": null + } + }, + { + "name": "etl-processes.generateXML", + "description": "Generates an XML document from provided structured data such as JSON or object arrays. Accepts input data and mapping rules defining how the data fields correspond to XML elements and attributes, then outputs a well-formed XML string or file ready for downstream integration or storage.", + "category": "etl-processes", + "parameters": [ + { + "name": "inputData", + "type": "object", + "description": "Structured data (e.g., JSON object or array) to convert into XML format.", + "required": true, + "defaultValue": "" + }, + { + "name": "rootElementName", + "type": "string", + "description": "Name of the root element in the generated XML document.", + "required": true, + "defaultValue": "" + }, + { + "name": "itemElementName", + "type": "string", + "description": "Name of the element to wrap each data item, applicable if inputData is an array.", + "required": false, + "defaultValue": "item" + }, + { + "name": "attributeMapping", + "type": "object", + "description": "Optional mapping of data fields to XML attributes instead of elements; key is data field, value is attribute name.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeDeclaration", + "type": "boolean", + "description": "Flag indicating whether to include the XML declaration header (e.g., ).", + "required": false, + "defaultValue": "true" + }, + { + "name": "prettyPrint", + "type": "boolean", + "description": "Whether to format the output XML with indentation and line breaks for readability.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the generated XML string and optionally metadata like root element name." + }, + "aiAgent": { + "useCase": "Use this tool when you need to transform structured data like JSON or arrays into an XML document for data exchange, configuration, or storage. It is ideal when a programmatic conversion is needed with customizable XML structure such as element and attribute naming.", + "limitations": "This tool does not perform XML schema validation, nor does it transform complex data types like mixed content or namespaces automatically. It assumes input data is simple JSON-compatible objects or arrays.", + "examples": [ + "Generate an XML config file from a JSON object describing app settings.", + "Convert a list of user records in JSON to XML for importing into an XML-based system.", + "Create a well-formed XML feed from structured data with specified root and item element names." + ] + }, + "tags": [ + "etl", + "xml", + "data transformation", + "xml generation", + "json to xml" + ], + "examples": [ + { + "inputJson": "{\"inputData\":{\"users\":[{\"id\":1,\"name\":\"Alice\"},{\"id\":2,\"name\":\"Bob\"}]},\"rootElementName\":\"Users\",\"itemElementName\":\"User\",\"attributeMapping\":{\"id\":\"userId\"},\"includeDeclaration\":true,\"prettyPrint\":true}", + "description": "Generate XML with users each as element, mapping id field to userId attribute." + }, + { + "inputJson": "{\"inputData\":{\"config\":{\"theme\":\"dark\",\"language\":\"en\"}},\"rootElementName\":\"Config\",\"includeDeclaration\":false,\"prettyPrint\":false}", + "description": "Generate a compact XML config document without XML declaration from flat JSON object." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "XML", + "context": null + } + }, + { + "name": "etl-processes.createQueue", + "description": "Creates a message queue within a specified infrastructure environment for ETL workflows. Accepts configuration parameters such as queue name, type (e.g., FIFO, standard), retention period, visibility timeout, and encryption settings. Returns a summary of the created queue including identifiers and configuration details.", + "category": "etl-processes", + "parameters": [ + { + "name": "queueName", + "type": "string", + "description": "The unique name for the queue to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "queueType", + "type": "string", + "description": "The type of queue to create, e.g., 'standard' or 'FIFO'.", + "required": true, + "defaultValue": "standard" + }, + { + "name": "retentionPeriodSeconds", + "type": "number", + "description": "Message retention period in seconds (time messages are kept in the queue).", + "required": false, + "defaultValue": "345600" + }, + { + "name": "visibilityTimeoutSeconds", + "type": "number", + "description": "Duration in seconds that a message received from a queue will be invisible to other consumers.", + "required": false, + "defaultValue": "30" + }, + { + "name": "encryptionEnabled", + "type": "boolean", + "description": "Flag indicating whether server-side encryption should be enabled for the queue.", + "required": false, + "defaultValue": "false" + }, + { + "name": "tags", + "type": "object", + "description": "Key-value pairs to tag the queue for identification or billing purposes.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "An object containing the queue's unique identifier, name, type, configuration details, creation timestamp, and an endpoint URL if applicable." + }, + "aiAgent": { + "useCase": "This tool is ideal when an AI agent needs to provision messaging infrastructure to support ETL pipelines requiring reliable asynchronous data transfer. Use it to dynamically create queues with customized configurations to integrate various data sources and processing stages.", + "limitations": "Does not handle the population of data into the queue or its consumption by downstream services; focuses solely on creation and basic configuration.", + "examples": [ + "Create a FIFO queue named 'etl-data-queue' with message retention of 48 hours and encryption enabled.", + "Set up a standard queue 'task-queue' with default retention and a visibility timeout of 45 seconds.", + "Create a queue with custom tags for billing purposes in the production environment." + ] + }, + "tags": [ + "etl", + "queue", + "infrastructure", + "messaging", + "data-pipeline", + "cloud" + ], + "examples": [ + { + "inputJson": "{\"queueName\":\"etl-data-queue\",\"queueType\":\"FIFO\",\"retentionPeriodSeconds\":172800,\"visibilityTimeoutSeconds\":45,\"encryptionEnabled\":true,\"tags\":{\"environment\":\"production\",\"team\":\"analytics\"}}", + "description": "Create a FIFO queue named 'etl-data-queue' with 48 hour retention, 45 seconds visibility timeout, encryption enabled, and tags for production environment and analytics team." + }, + { + "inputJson": "{\"queueName\":\"task-queue\",\"queueType\":\"standard\"}", + "description": "Create a standard queue called 'task-queue' with default retention and visibility timeout." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Queue", + "context": null + } + }, + { + "name": "etl-processes.generateSchema", + "description": "Generates a data schema definition from sample data or field definitions provided. Accepts either raw sample data records (JSON array) or explicit field descriptions, processes them to infer data types, constraints, and relationships, and outputs a standardized schema in JSON Schema or Avro format.", + "category": "etl-processes", + "parameters": [ + { + "name": "sampleData", + "type": "array", + "description": "An array of sample data records to infer the schema from. Each record should be a JSON object with fields and values.", + "required": false, + "defaultValue": "" + }, + { + "name": "fieldDefinitions", + "type": "array", + "description": "Explicit field definitions to build the schema from. Each field includes name, type, and optional constraints.", + "required": false, + "defaultValue": "" + }, + { + "name": "schemaFormat", + "type": "string", + "description": "The output schema format to generate. Supported formats: \"json-schema\", \"avro\".", + "required": true, + "defaultValue": "\"json-schema\"" + }, + { + "name": "includeExamples", + "type": "boolean", + "description": "Whether to include example values from sample data in the schema output for clarity.", + "required": false, + "defaultValue": "false" + }, + { + "name": "requiredFields", + "type": "array", + "description": "Optional list of field names to mark as required in the schema; overrides inference from data.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated schema as a string and its format type." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to automatically create data schemas from example datasets or given field specifications to aid in ETL pipelines, validation, or data integration. Useful when manual schema creation is inefficient or when input data structure is semi-structured or unknown.", + "limitations": "This tool cannot perfectly infer semantic meanings or complex relationships beyond flat or nested structures, nor does it generate business logic or transformations beyond schema definitions.", + "examples": [ + "Generate a JSON Schema from sample user profile records for validation.", + "Create an Avro schema from explicit field definitions for a streaming pipeline.", + "Produce a JSON Schema including example values extracted from sample data." + ] + }, + "tags": [ + "etl", + "schema", + "generate", + "json-schema", + "avro", + "data-validation", + "data-integration" + ], + "examples": [ + { + "inputJson": "{\"sampleData\":[{\"id\":1,\"name\":\"Alice\",\"email\":\"alice@example.com\",\"age\":30}],\"schemaFormat\":\"json-schema\",\"includeExamples\":true}", + "description": "Generate a JSON Schema from a sample array of user records including example values." + }, + { + "inputJson": "{\"fieldDefinitions\":[{\"name\":\"id\",\"type\":\"integer\"},{\"name\":\"timestamp\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"float\"}],\"schemaFormat\":\"avro\",\"requiredFields\":[\"id\",\"timestamp\"]}", + "description": "Create an Avro schema from specified fields marking id and timestamp as required." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Schema", + "context": null + } + }, + { + "name": "etl-processes.createReply", + "description": "This tool accepts an extracted data object representing a communication or query, processes transformation rules or templates on the input, and produces a structured reply message suitable for sending back to the originator. Input includes the original data and optional transformation parameters; output is the constructed reply content with metadata.", + "category": "etl-processes", + "parameters": [ + { + "name": "inputData", + "type": "object", + "description": "The extracted input data object representing the original message or query to which a reply is needed. Must include fields like sender, message content, and context.", + "required": true, + "defaultValue": "" + }, + { + "name": "replyTemplate", + "type": "string", + "description": "A string template or expression guiding how to transform input data into a reply. Supports placeholders for fields in the inputData object.", + "required": false, + "defaultValue": "\"Thank you for your message. We will get back to you shortly.\"" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Flag indicating whether to include metadata like timestamps and reply IDs in the output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "customReplyFields", + "type": "object", + "description": "Optional object specifying additional fields or overrides to be included in the reply beyond the standard template.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the generated reply message string, recipient information, and optionally metadata such as reply timestamp and a unique reply identifier." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a structured reply message as part of an ETL communication workflow, converting extracted input data into a formatted response, optionally applying templates and metadata. Suitable for automating replies during data ingestion or processing pipelines involving communications.", + "limitations": "This tool does not generate the original input data or perform natural language understanding beyond template substitution. It cannot deduce reply content without provided templates or explicit fields.", + "examples": [ + "Generate a reply to a customer inquiry extracted from email data using a polite, templated message.", + "Produce an automated response for a support ticket entry extracted as JSON, including metadata for tracking.", + "Create a customized reply based on extracted chat log data overriding specific fields in the reply." + ] + }, + "tags": [ + "etl", + "reply", + "communication", + "transformation", + "template", + "messageGeneration" + ], + "examples": [ + { + "inputJson": "{\"inputData\":{\"sender\":\"john.doe@example.com\",\"message\":\"What is my account balance?\",\"context\":\"account inquiry\"},\"replyTemplate\":\"Dear {{inputData.sender}},\\nThank you for contacting support. Regarding your inquiry: '{{inputData.message}}', we find your current balance is $1,234.56.\",\"includeMetadata\":true}", + "description": "Generate a reply to an account balance inquiry email message using a templated response with metadata included." + }, + { + "inputJson": "{\"inputData\":{\"sender\":\"support@company.com\",\"message\":\"Request received.\",\"context\":\"auto-reply\"},\"replyTemplate\":\"{{inputData.message}} We will process your request shortly.\",\"includeMetadata\":false}", + "description": "Create a simple automated acknowledgement reply without extra metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Reply", + "context": null + } + }, + { + "name": "etl-processes.createCluster", + "description": "Creates a data processing cluster optimized for ETL workloads. Accepts configuration inputs like node count, node type, and software environment, then provisions and initializes the cluster infrastructure. Outputs cluster metadata including access endpoints, status, and configuration details.", + "category": "etl-processes", + "parameters": [ + { + "name": "clusterName", + "type": "string", + "description": "Unique name identifier for the cluster to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "nodeCount", + "type": "number", + "description": "Number of nodes to provision in the cluster.", + "required": true, + "defaultValue": "3" + }, + { + "name": "nodeType", + "type": "string", + "description": "Type or SKU of nodes to use for the cluster (e.g., standard, high-memory).", + "required": true, + "defaultValue": "standard" + }, + { + "name": "softwareStack", + "type": "array", + "description": "List of software components to install on each node (e.g., Spark, Hadoop, Kafka).", + "required": false, + "defaultValue": "[\"Spark\"]" + }, + { + "name": "region", + "type": "string", + "description": "Geographical region where cluster should be deployed.", + "required": false, + "defaultValue": "us-east-1" + }, + { + "name": "autoScaling", + "type": "boolean", + "description": "Whether to enable automatic scaling of the cluster nodes based on load.", + "required": false, + "defaultValue": "false" + }, + { + "name": "storageSizeGB", + "type": "number", + "description": "Amount of storage in GB allocated to each node.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "Metadata about the created cluster including id, status, endpoints, and configuration." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to automate the provisioning of a data processing cluster tailored for ETL workflows, enabling scalable data extraction, transformation, and load operations. It provides structured inputs for cluster sizing and software configuration and returns essential connection details for further orchestration.", + "limitations": "Does not provision clusters outside of supported cloud providers or on-premise hardware. Does not manage ongoing cluster scaling beyond initial configuration.", + "examples": [ + "Create a cluster named 'etl-prod' with 5 high-memory nodes including Spark and Kafka.", + "Provision a standard 3-node cluster in the 'eu-central-1' region with auto-scaling enabled.", + "Initialize a cluster with 10 nodes and 500GB storage per node running a custom software stack." + ] + }, + "tags": [ + "etl", + "cluster", + "provisioning", + "data-pipelines", + "infrastructure", + "automation", + "scalability" + ], + "examples": [ + { + "inputJson": "{\"clusterName\":\"etl-prod\",\"nodeCount\":5,\"nodeType\":\"high-memory\",\"softwareStack\":[\"Spark\",\"Kafka\"],\"region\":\"us-east-2\",\"autoScaling\":true,\"storageSizeGB\":200}", + "description": "Create a 5-node high-memory ETL cluster with Spark and Kafka in US East (Ohio) region, enabling auto scaling." + }, + { + "inputJson": "{\"clusterName\":\"test-cluster\",\"nodeCount\":3,\"nodeType\":\"standard\",\"softwareStack\":[\"Spark\"],\"region\":\"eu-central-1\",\"autoScaling\":false,\"storageSizeGB\":100}", + "description": "Provision a 3-node standard cluster for testing in EU Central with Spark only and default storage." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Cluster", + "context": null + } + }, + { + "name": "etl-processes.createThread", + "description": "Creates a communication thread as part of an ETL process to manage interaction logs or comments related to data processing tasks. Accepts inputs such as thread title, participants, initial message content, and metadata, processes this information to create and store a new discussion thread, and outputs the details of the created thread including a unique thread ID and timestamp.", + "category": "etl-processes", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title or subject of the communication thread to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "participants", + "type": "array", + "description": "An array of participant identifiers (e.g., user IDs or emails) who are members of the thread.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "initialMessage", + "type": "string", + "description": "The content of the initial message to start the thread with.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value pairs to attach additional metadata to the thread (e.g., tags, related ETL job ID).", + "required": false, + "defaultValue": "{}" + }, + { + "name": "isPrivate", + "type": "boolean", + "description": "Flag indicating if the thread should be private (visible only to participants).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing threadId (string), title (string), participants (array), createdAt (ISO 8601 timestamp string), initialMessage (string), metadata (object), and isPrivate (boolean), representing the newly created thread." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to initiate a new discussion thread related to an ETL process, for example, to log a conversation about a specific data import job or to coordinate team communication around a data transformation task. It helps organize communication linked to ETL workflows in a structured manner.", + "limitations": "This tool does not support updating or deleting threads, managing message replies within threads, or real-time message streaming. It only creates new threads with initial content.", + "examples": [ + "Create a thread titled 'Daily Import Issues' with the data engineering team and an initial message reporting an error.", + "Start a private thread for troubleshooting the monthly aggregation job with select participants.", + "Create a thread tagged with 'ETL' and 'urgent' for immediate attention requests." + ] + }, + "tags": [ + "etl", + "communication", + "thread", + "collaboration", + "logging", + "process management" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Monthly ETL Review\",\"participants\":[\"user1@example.com\",\"user2@example.com\"],\"initialMessage\":\"Let's discuss the outcomes of the latest ETL run.\",\"metadata\":{\"jobId\":\"etl_2024_06\"},\"isPrivate\":false}", + "description": "Creates a public thread titled 'Monthly ETL Review' with two participants and attaches metadata for the related ETL job." + }, + { + "inputJson": "{\"title\":\"ETL Failure Alert\",\"participants\":[\"devteam@example.com\"],\"initialMessage\":\"Immediate investigation required for ETL failure at 3AM.\",\"metadata\":{\"severity\":\"high\"},\"isPrivate\":true}", + "description": "Starts a private urgent thread with the development team to address a critical ETL failure." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Thread", + "context": null + } + }, + { + "name": "etl-processes.createAttachment", + "description": "Creates a structured attachment entity from provided binary or base64 media data, applying optional metadata and format validation. Accepts file content and properties, then processes and returns a standardized attachment object ready for downstream ETL pipelines or storage.", + "category": "etl-processes", + "parameters": [ + { + "name": "fileName", + "type": "string", + "description": "Name of the attachment file including extension (e.g., 'image.png').", + "required": true, + "defaultValue": "" + }, + { + "name": "contentType", + "type": "string", + "description": "MIME type of the attachment content (e.g., 'image/png').", + "required": true, + "defaultValue": "" + }, + { + "name": "content", + "type": "string", + "description": "Base64 encoded string or binary string of the attachment content.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value pairs containing metadata about the attachment (e.g., author, date created).", + "required": false, + "defaultValue": "" + }, + { + "name": "validateFormat", + "type": "boolean", + "description": "If true, performs format validation based on contentType and file signature.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxSizeBytes", + "type": "number", + "description": "Maximum allowable size of the attachment content in bytes; attachments larger than this will be rejected.", + "required": false, + "defaultValue": "10485760" + } + ], + "returns": { + "type": "object", + "description": "Returns an Attachment object containing the original file name, content type, validated base64 content string, metadata, size in bytes, and timestamp of creation." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create a normalized attachment object from raw media content for integration into ETL workflows, ensuring content validity and metadata enrichment for storage or further processing.", + "limitations": "This tool does not perform content extraction, media transcoding, or virus scanning. It only packages and optionally validates raw content and metadata into a standardized attachment format.", + "examples": [ + "Create a PNG image attachment from a base64 string with author metadata.", + "Construct a PDF attachment ensuring the content size is below 10MB before processing.", + "Generate an audio file attachment storing the content type and creation date for archival." + ] + }, + "tags": [ + "etl", + "attachment", + "media", + "file-processing", + "base64", + "validation", + "metadata" + ], + "examples": [ + { + "inputJson": "{\"fileName\":\"report.pdf\",\"contentType\":\"application/pdf\",\"content\":\"JVBERi0xLjQKJ...base64...\",\"metadata\":{\"author\":\"Jane Doe\",\"created\":\"2024-05-10T14:30:00Z\"},\"validateFormat\":true,\"maxSizeBytes\":5242880}", + "description": "Create a PDF attachment from a base64 encoded content string with metadata and validate format, limiting size to 5MB." + }, + { + "inputJson": "{\"fileName\":\"photo.jpg\",\"contentType\":\"image/jpeg\",\"content\":\"/9j/4AAQSkZJRgABAQAAAQABAAD...base64...\",\"metadata\":{\"location\":\"NYC\",\"event\":\"Conference\"},\"validateFormat\":true,\"maxSizeBytes\":10485760}", + "description": "Create a JPEG image attachment with location and event metadata, validate MIME type and signature." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Attachment", + "context": null + } + }, + { + "name": "etl-processes.createDeal", + "description": "Creates a new deal record by extracting data from a source object, transforming fields according to provided mappings and rules, and preparing a standardized deal object suitable for loading into CRM or sales systems. Accepts input data and configuration parameters, then outputs a validated deal object.", + "category": "etl-processes", + "parameters": [ + { + "name": "sourceData", + "type": "object", + "description": "Raw input data object containing deal information extracted from external or internal sources.", + "required": true, + "defaultValue": "" + }, + { + "name": "fieldMappings", + "type": "object", + "description": "Key-value pairs where keys are deal object fields and values are sourceData fields to map from.", + "required": true, + "defaultValue": "" + }, + { + "name": "transformationRules", + "type": "object", + "description": "Optional functions or expressions to transform specific fields during processing (e.g., date formatting, currency conversion).", + "required": false, + "defaultValue": "" + }, + { + "name": "defaultValues", + "type": "object", + "description": "Default values to apply for deal fields if missing in source data.", + "required": false, + "defaultValue": "" + }, + { + "name": "validateData", + "type": "boolean", + "description": "Flag indicating whether to validate the resulting deal object against required schema and business rules.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Standardized deal object with mapped and transformed fields, ready for loading into target systems. May include validation status and error messages if validation is enabled." + }, + "aiAgent": { + "useCase": "Use this tool when ingesting raw deal data from various sales or external sources into a uniform structure for downstream processing or CRM ingestion. It facilitates consistent and validated deal records by applying configurable mappings and transformations.", + "limitations": "This tool does not connect to external data sources directly or persist the created deal to databases; it focuses solely on transforming and validating deal data objects.", + "examples": [ + "Create a deal from a JSON payload received from a web form, mapping form fields to CRM deal fields.", + "Transform and validate sales data exported from a spreadsheet for integration into the CRM.", + "Apply currency conversion and date formatting rules while creating standardized deal records from API responses." + ] + }, + "tags": [ + "etl", + "deal-management", + "data-transformation", + "crm", + "sales-data", + "validation" + ], + "examples": [ + { + "inputJson": "{\"sourceData\":{\"clientName\":\"Acme Corp\",\"amountUSD\":25000,\"closeDate\":\"2024-06-15T00:00:00Z\"},\"fieldMappings\":{\"dealName\":\"clientName\",\"dealAmount\":\"amountUSD\",\"expectedClose\":\"closeDate\"},\"transformationRules\":{\"dealAmount\":\"value => value * 1.1\"},\"defaultValues\":{\"dealStage\":\"prospecting\"},\"validateData\":true}", + "description": "Create a deal by mapping clientName to dealName, converting amountUSD to dealAmount with a 10% increase, mapping closeDate to expectedClose, applying a default stage, and validating the result." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Deal", + "context": null + } + }, + { + "name": "database-management.analyzeQuote", + "description": "This tool analyzes a textual quote stored in a database record, extracting insights such as sentiment, keyword frequency, and thematic categorizations. It accepts the quote text and optional metadata, performs natural language processing to identify sentiment polarity, key terms, and categorizes the quote by theme, then outputs a structured analysis summarizing these elements.", + "category": "database-management", + "parameters": [ + { + "name": "quoteText", + "type": "string", + "description": "The textual content of the quote to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceId", + "type": "string", + "description": "Optional identifier linking the quote to a data source or database record.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code for the quote text to guide NLP models, defaults to 'en' for English.", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeSentiment", + "type": "boolean", + "description": "Whether to include sentiment analysis results in the output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeKeywords", + "type": "boolean", + "description": "Whether to identify and include keyword frequency analysis.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeThemes", + "type": "boolean", + "description": "Whether to categorize the quote into thematic categories.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "A JSON object containing sentiment polarity score, a list of keywords with frequency counts, and assigned thematic categories if requested." + }, + "aiAgent": { + "useCase": "Use this tool when you have a quote stored in a database and want to quickly gain insights about its sentiment, identify important keywords, or organize it thematically for improved content management and retrieval. It aids tasks like content curation, sentiment tracking over time, and tagging quotes for topical analysis.", + "limitations": "This tool does not perform full semantic understanding beyond keyword extraction and categorization and is limited to languages supported by the underlying NLP models. It cannot handle extremely long texts efficiently or provide contextual quote comparisons.", + "examples": [ + "Analyze sentiment and keywords for a quote about innovation in technology.", + "Categorize a motivational quote by theme and extract its keywords.", + "Perform a sentiment and thematic analysis on a short customer testimonial quote." + ] + }, + "tags": [ + "analysis", + "quote", + "database", + "sentiment", + "keyword-extraction", + "thematic-categorization", + "NLP" + ], + "examples": [ + { + "inputJson": "{\"quoteText\":\"The only limit to our realization of tomorrow is our doubts of today.\",\"includeSentiment\":true,\"includeKeywords\":true,\"includeThemes\":true}", + "description": "Analyze a motivational quote for sentiment, keywords, and themes." + }, + { + "inputJson": "{\"quoteText\":\"Artificial intelligence will reshape the world as we know it.\",\"language\":\"en\",\"includeSentiment\":true,\"includeKeywords\":true,\"includeThemes\":true}", + "description": "Analyze a technology-related quote for insights and classification." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Quote", + "context": null + } + }, + { + "name": "database-management.analyzeChannel", + "description": "Analyzes communication channels within a database to provide insights such as usage frequency, message volume, participant activity, and sentiment trends. Accepts parameters defining the channel identifier, time range, and analysis types. Outputs a structured report summarizing channel statistics and patterns.", + "category": "database-management", + "parameters": [ + { + "name": "channelId", + "type": "string", + "description": "The unique identifier of the communication channel to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "The start date of the analysis period in ISO 8601 format (e.g., 2023-01-01T00:00:00Z).", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "The end date of the analysis period in ISO 8601 format (e.g., 2023-01-31T23:59:59Z).", + "required": false, + "defaultValue": "" + }, + { + "name": "analysisTypes", + "type": "array", + "description": "Array of analysis types to perform, e.g., ['frequency', 'sentiment', 'participantActivity'].", + "required": false, + "defaultValue": "[\"frequency\", \"sentiment\", \"participantActivity\"]" + }, + { + "name": "includeArchived", + "type": "boolean", + "description": "Whether to include data from archived messages and threads in the analysis.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A detailed report object including message counts, participant statistics, sentiment analysis summaries, and usage patterns for the specified channel and period." + }, + "aiAgent": { + "useCase": "Use this tool when you need to assess the activity and engagement metrics of a specific communication channel stored in your database, such as for performance monitoring, user engagement insights, or channel moderation. It's ideal for summarizing historical communication data by period and identifying trends or anomalies.", + "limitations": "This tool depends on the underlying data quality and availability; it cannot analyze data not stored or accessible in the database. Sentiment analysis accuracy depends on the language and context of messages. It does not perform moderation actions or real-time monitoring.", + "examples": [ + "Analyze message volume and participant activity for channel 'channel123' between January 1 and January 31, 2024.", + "Generate a sentiment trend report for 'channel456' including archived messages.", + "Provide basic frequency analysis for channel 'channel789' without a specified date range." + ] + }, + "tags": [ + "database-management", + "channel-analysis", + "communication", + "analytics", + "engagement", + "sentiment", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"channelId\":\"channel123\",\"startDate\":\"2024-01-01T00:00:00Z\",\"endDate\":\"2024-01-31T23:59:59Z\",\"analysisTypes\":[\"frequency\",\"participantActivity\"]}", + "description": "Analyze frequency and participant activity in channel123 during January 2024." + }, + { + "inputJson": "{\"channelId\":\"channel456\",\"analysisTypes\":[\"sentiment\"],\"includeArchived\":true}", + "description": "Analyze sentiment including archived messages in channel456, no date range specified." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Channel", + "context": null + } + }, + { + "name": "database-management.analyzeExpense", + "description": "Analyzes business expense data from a specified database to provide detailed reports including total spend by category, trends over time, and anomalies. Accepts parameters to filter expenses by date range, category, and minimum amount, and returns aggregated summaries and insights to aid financial decision-making.", + "category": "database-management", + "parameters": [ + { + "name": "databaseConnectionString", + "type": "string", + "description": "Connection string or URI to access the expense database (e.g., SQL connection string).", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date for the analysis period in ISO 8601 format (e.g., '2023-01-01').", + "required": false, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date for the analysis period in ISO 8601 format (e.g., '2023-12-31').", + "required": false, + "defaultValue": "" + }, + { + "name": "categories", + "type": "array", + "description": "List of expense categories to include in the analysis (e.g., ['Travel','Supplies']). If empty or omitted, all categories are included.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "minimumAmount", + "type": "number", + "description": "Minimum expense amount to consider in the analysis. Expenses below this value are ignored.", + "required": false, + "defaultValue": "0" + }, + { + "name": "detectAnomalies", + "type": "boolean", + "description": "Whether to perform anomaly detection to flag unusual expenses.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing aggregated expense reports including total spent, breakdown by category, monthly trends, and detected anomalies if requested." + }, + "aiAgent": { + "useCase": "Use this tool when needing detailed insights into business expenses stored in a database. It helps identify spending patterns over a period, highlight categories with highest costs, and optionally detect outlier expenses that may need review. Suitable for financial analysis, budgeting, and auditing support.", + "limitations": "This tool cannot modify database data or perform real-time streaming analysis. It relies on the accuracy and completeness of the stored data. Anomaly detection is basic and may not catch all irregularities or might produce false positives.", + "examples": [ + "Analyze expense totals and category breakdowns for last quarter.", + "Detect possible expense anomalies for all travel and entertainment categories in the past year.", + "Provide monthly trend analysis for office supplies expenses above $1000." + ] + }, + "tags": [ + "database", + "expense analysis", + "financial reporting", + "business intelligence", + "anomaly detection" + ], + "examples": [ + { + "inputJson": "{\"databaseConnectionString\":\"Server=myserver;Database=ExpensesDB;User Id=admin;Password=secret;\",\"startDate\":\"2023-01-01\",\"endDate\":\"2023-03-31\",\"categories\":[\"Travel\",\"Meals\"],\"minimumAmount\":50,\"detectAnomalies\":true}", + "description": "Analyze travel and meals expenses from the first quarter of 2023, ignoring expenses below $50 and looking for anomalies." + }, + { + "inputJson": "{\"databaseConnectionString\":\"Server=myserver;Database=ExpensesDB;User Id=admin;Password=secret;\",\"categories\":[],\"detectAnomalies\":false}", + "description": "Generate an overall expense summary report for all categories without anomaly detection." + }, + { + "inputJson": "{\"databaseConnectionString\":\"Server=myserver;Database=ExpensesDB;User Id=admin;Password=secret;\",\"startDate\":\"2023-06-01\",\"endDate\":\"2023-06-30\",\"categories\":[\"Office Supplies\"],\"minimumAmount\":1000}", + "description": "Monthly analysis for office supplies expenses in June 2023, including only expenses over $1000." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Expense", + "context": null + } + }, + { + "name": "database-management.uploadVideo", + "description": "Uploads a video file to a specified database or media repository. Accepts video data as a file path or binary, along with metadata such as title, description, tags, and associated user info. Stores the video in the database and returns a record containing the video's unique ID and storage details.", + "category": "database-management", + "parameters": [ + { + "name": "videoFilePath", + "type": "string", + "description": "Local path to the video file to upload.", + "required": true, + "defaultValue": "" + }, + { + "name": "videoBinaryData", + "type": "string", + "description": "Base64 encoded video data as an alternative to file path. Used if videoFilePath is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "title", + "type": "string", + "description": "Title of the video being uploaded.", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional textual description of the video content.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "List of tags or keywords to categorize the video.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "userId", + "type": "string", + "description": "Identifier of the user uploading the video.", + "required": false, + "defaultValue": "" + }, + { + "name": "databaseName", + "type": "string", + "description": "Target database or media repository name where video will be stored.", + "required": true, + "defaultValue": "" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "Flag indicating whether to overwrite a video if a duplicate exists.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with the video's unique ID, confirmation status, storage location URL or path, and any error message if upload failed." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to store or register video files into a structured database or media repository, especially when handling large video datasets or user-generated videos requiring metadata association. It manages file input, metadata, and properly indexes the video for retrieval.", + "limitations": "This tool does not perform video transcoding, format conversion, or validate video content integrity beyond basic file existence. It depends on underlying database support for video storage and size limits.", + "examples": [ + "Upload a video file 'intro.mp4' to the 'UserMediaDB' with title, description, and tags for later retrieval by a social platform.", + "Store base64 encoded video data with user metadata into the corporate media archive database.", + "Overwrite an existing video record if another video with the same title exists in the database." + ] + }, + "tags": [ + "database", + "upload", + "video", + "media-management", + "file-storage", + "metadata" + ], + "examples": [ + { + "inputJson": "{\"videoFilePath\":\"/videos/holiday.mp4\",\"title\":\"Summer Holiday 2023\",\"description\":\"Family trip at the beach.\",\"tags\":[\"family\",\"vacation\",\"beach\"],\"userId\":\"user123\",\"databaseName\":\"MediaDB\",\"overwriteExisting\":false}", + "description": "Upload a local video file with metadata to the MediaDB without overwriting." + }, + { + "inputJson": "{\"videoBinaryData\":\"VGhpcyBpcyBhIGZha2UgdmlkZW8gYmluYXJ5IGRhdGE=\",\"title\":\"FakeVideo\",\"databaseName\":\"MediaDB\"}", + "description": "Upload base64 encoded video binary data directly to the MediaDB." + }, + { + "inputJson": "{\"videoFilePath\":\"/videos/event.mp4\",\"title\":\"Annual Event\",\"databaseName\":\"EventDB\",\"overwriteExisting\":true}", + "description": "Upload a video and overwrite any existing record with the same title in the EventDB." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Video", + "context": null + } + }, + { + "name": "database-management.analyzeMarkdown", + "description": "Analyzes Markdown-formatted text containing database schemas or data definitions to extract structural information. Accepts Markdown strings with embedded database tables, schema descriptions, or entity-relationship information. Processes and identifies tables, fields, types, and relationships, returning a structured summary suitable for database documentation or processing pipelines.", + "category": "database-management", + "parameters": [ + { + "name": "markdownContent", + "type": "string", + "description": "The Markdown text input containing database schema or data definitions to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "extractTables", + "type": "boolean", + "description": "Whether to extract tables defined in Markdown as structured objects.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractRelationships", + "type": "boolean", + "description": "Whether to analyze and extract relationships or references between entities described.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxTables", + "type": "number", + "description": "Maximum number of tables to analyze from the Markdown input to limit output size.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "Structured summary including parsed tables with fields and types, identified relationships, and additional metadata extracted from the Markdown input." + }, + "aiAgent": { + "useCase": "Use this tool when provided with database schema or related information embedded in Markdown documents, such as technical documentation or README files, and when you need to extract structured data representations automatically. It suits database engineers or documentation tools requiring schema analysis from markup sources.", + "limitations": "Cannot interpret non-standard or highly ambiguous Markdown not related to database schemas. It may miss nuanced semantic relationships not explicitly described in the text or Markdown structure.", + "examples": [ + "Analyze this README's schema definitions in Markdown to generate a JSON representation of database tables.", + "Extract the list of tables and their relationships from a technical Markdown document describing a data model.", + "Summarize Markdown-formatted database documentation for ETL pipeline validation." + ] + }, + "tags": [ + "database", + "markdown", + "schema-analysis", + "documentation", + "parsing", + "data-structures" + ], + "examples": [ + { + "inputJson": "{\"markdownContent\":\"# Database Schema\\n\\n## Users Table\\n| Field | Type | Description |\\n|-------|------|-------------|\\n| id | int | Primary key |\\n| name | text | User's name |\\n\\n## Orders Table\\n| Field | Type | Description |\\n|-----------|--------|---------------------|\\n| order_id | int | Order ID (PK) |\\n| user_id | int | Foreign key to Users|\\n| amount | decimal| Order total amount |\",\"extractTables\":true,\"extractRelationships\":true,\"maxTables\":5}", + "description": "Extract tables and relationships from a Markdown document describing a Users and Orders database schema" + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Markdown", + "context": null + } + }, + { + "name": "database-management.downloadVideo", + "description": "This tool facilitates downloading video files stored within a specified database. Users provide the database connection details, the table name, and the unique identifier of the video record. The tool retrieves the video binary data and saves it to a specified file path or returns it as a base64 string for further processing.", + "category": "database-management", + "parameters": [ + { + "name": "connectionString", + "type": "string", + "description": "Database connection string to establish access to the database containing the video records.", + "required": true, + "defaultValue": "" + }, + { + "name": "tableName", + "type": "string", + "description": "Name of the table where video data is stored.", + "required": true, + "defaultValue": "" + }, + { + "name": "videoId", + "type": "string", + "description": "Unique identifier of the video record to download.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFilePath", + "type": "string", + "description": "Local file path where the video will be saved. If empty, video data is returned as base64 string instead.", + "required": false, + "defaultValue": "" + }, + { + "name": "videoColumnName", + "type": "string", + "description": "Name of the column that contains the video binary data in the table.", + "required": false, + "defaultValue": "video_data" + } + ], + "returns": { + "type": "object", + "description": "Returns an object indicating success status and either the saved file path or the base64 encoded video data as a string." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to extract or retrieve video files stored as binary blobs within a database for offline processing, playback, or archiving. This is especially useful in media management, digital asset mining, or content migration scenarios where videos are stored inside database tables rather than separate file systems.", + "limitations": "This tool cannot stream videos or support partial downloads. It requires correct database credentials and access permissions. It does not handle video format conversion or corruption fixes. Very large video files may impact memory when returned as base64 strings.", + "examples": [ + "Download a video by ID from a PostgreSQL database and save it locally.", + "Retrieve a video stored in a MySQL database and return it as base64 for embedding in a report.", + "Fetch video data where the video binary column name differs from default 'video_data'." + ] + }, + "tags": [ + "database", + "video", + "download", + "media", + "binary", + "blob", + "dataRetrieval" + ], + "examples": [ + { + "inputJson": "{\"connectionString\":\"Server=mydbserver;Database=mediaDB;User Id=admin;Password=secret;\",\"tableName\":\"videos\",\"videoId\":\"vid12345\",\"outputFilePath\":\"/videos/output/vid12345.mp4\"}", + "description": "Download the video with ID 'vid12345' from the 'videos' table and save to local path." + }, + { + "inputJson": "{\"connectionString\":\"Server=mydb;Database=mediaDB;User Id=user;Password=pwd;\",\"tableName\":\"video_assets\",\"videoId\":\"asset001\",\"outputFilePath\":\"\"}", + "description": "Retrieve video binary data as a base64 string from 'video_assets' table without saving to file." + }, + { + "inputJson": "{\"connectionString\":\"Server=localhost;Database=mediaDB;User Id=admin;Password=admin123;\",\"tableName\":\"media_store\",\"videoId\":\"a1b2c3\",\"outputFilePath\":\"/tmp/video_a1b2c3.mov\",\"videoColumnName\":\"video_blob\"}", + "description": "Download a video where the binary data column is named 'video_blob' and save locally as .mov." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Video", + "context": null + } + }, + { + "name": "database-management.downloadTable", + "description": "This tool connects to a specified relational database, queries a table with optional filtering and pagination, and downloads the resulting data in CSV or JSON format. It accepts connection parameters, table name, optional SQL WHERE clause, limit, offset, and output format, then returns the extracted data file content as a string.", + "category": "database-management", + "parameters": [ + { + "name": "dbType", + "type": "string", + "description": "Type of the database (e.g., 'postgresql', 'mysql', 'mssql') to determine driver and syntax.", + "required": true, + "defaultValue": "" + }, + { + "name": "connectionString", + "type": "string", + "description": "Database connection string or URI to establish connection.", + "required": true, + "defaultValue": "" + }, + { + "name": "tableName", + "type": "string", + "description": "Name of the table to download data from.", + "required": true, + "defaultValue": "" + }, + { + "name": "whereClause", + "type": "string", + "description": "Optional SQL WHERE clause to filter rows (without 'WHERE' keyword).", + "required": false, + "defaultValue": "" + }, + { + "name": "limit", + "type": "number", + "description": "Maximum number of rows to download; if omitted, downloads all rows.", + "required": false, + "defaultValue": "" + }, + { + "name": "offset", + "type": "number", + "description": "Number of rows to skip before starting to download, for pagination.", + "required": false, + "defaultValue": "0" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format to download data in: 'csv' or 'json'.", + "required": true, + "defaultValue": "csv" + } + ], + "returns": { + "type": "object", + "description": "An object containing the downloaded table data as a string, and metadata like format and row count." + }, + "aiAgent": { + "useCase": "Use this tool when needing to extract data from a database table for offline analysis, reporting, or data transfer. Especially useful for agents automating data exports with filtering, pagination, and format control.", + "limitations": "Cannot handle complex joins or queries beyond single-table with optional WHERE filters; depends on accessible database credentials and network. No direct support for binary or BLOB data extraction.", + "examples": [ + "Download all data from 'users' table in PostgreSQL as CSV.", + "Download 100 rows of 'orders' table where status='shipped' in MySQL as JSON.", + "Download records from Oracle DB 'employees' table, skipping first 200 rows, output as CSV." + ] + }, + "tags": [ + "database", + "download", + "export", + "table", + "csv", + "json", + "filter", + "pagination" + ], + "examples": [ + { + "inputJson": "{\"dbType\":\"postgresql\",\"connectionString\":\"postgres://user:pass@localhost:5432/mydb\",\"tableName\":\"customers\",\"whereClause\":\"country='USA'\",\"limit\":1000,\"offset\":0,\"outputFormat\":\"csv\"}", + "description": "Download up to 1000 customer records from PostgreSQL where country is USA, output in CSV." + }, + { + "inputJson": "{\"dbType\":\"mysql\",\"connectionString\":\"mysql://user:pass@dbserver:3306/shop\",\"tableName\":\"orders\",\"whereClause\":\"status='completed'\",\"limit\":500,\"offset\":10,\"outputFormat\":\"json\"}", + "description": "Download 500 completed orders from MySQL shop database starting from 11th record, output in JSON." + }, + { + "inputJson": "{\"dbType\":\"mssql\",\"connectionString\":\"Server=myServer;Database=myDB;User Id=user;Password=pass;\",\"tableName\":\"employees\",\"whereClause\":\"department='HR'\",\"limit\":100,\"offset\":0,\"outputFormat\":\"csv\"}", + "description": "Download first 100 employees in HR department from MS SQL Server as CSV." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Table", + "context": null + } + }, + { + "name": "database-management.analyzeYAML", + "description": "Analyzes YAML-formatted configuration or schema files related to database management, extracting structural information such as table definitions, relationships, keys, and constraints. Accepts a YAML string input, parses it to identify database components, and outputs a structured report summarizing database schema elements and potential inconsistencies or alerts.", + "category": "database-management", + "parameters": [ + { + "name": "yamlContent", + "type": "string", + "description": "The YAML string content representing database schema or configuration to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeRelationships", + "type": "boolean", + "description": "Whether to include analysis of relationships such as foreign keys between tables.", + "required": false, + "defaultValue": "true" + }, + { + "name": "detectInconsistencies", + "type": "boolean", + "description": "Whether to check and report potential schema inconsistencies or common errors.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxDepth", + "type": "number", + "description": "Maximum depth level for nested YAML structures to analyze to avoid excessively deep recursion.", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "An object containing summaries of tables, columns, keys, relationships, constraints, and any detected inconsistencies or warnings discovered in the YAML schema." + }, + "aiAgent": { + "useCase": "Use this tool when you have database schema or configuration defined in YAML and need to programmatically extract structural metadata such as tables, columns, keys, constraints, and identify potential schema issues to automate documentation or validation workflows.", + "limitations": "Cannot interpret binary or non-YAML formats; analysis is limited to schema elements explicitly defined in the YAML; complex domain-specific semantics may not be fully understood.", + "examples": [ + "Analyze a YAML DB schema to extract table and key information for documentation.", + "Check a YAML config for missing keys or inconsistencies in table definitions.", + "Generate a summary report of schema components from a YAML database configuration." + ] + }, + "tags": [ + "database", + "YAML", + "schema-analysis", + "configuration", + "validation", + "metadata", + "parsing" + ], + "examples": [ + { + "inputJson": "{\"yamlContent\":\"tables:\\n users:\\n columns:\\n id:\\n type: integer\\n primaryKey: true\\n email:\\n type: string\\n unique: true\\n profile_id:\\n type: integer\\n relationships:\\n profile_id:\\n references: profiles.id\\n profiles:\\n columns:\\n id:\\n type: integer\\n primaryKey: true\\n bio:\\n type: text\\nincludeRelationships:true,detectInconsistencies:true,maxDepth:10\"", + "description": "Input YAML content describes two tables with columns and relationships; expects output summarizing schema details and relationships." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "YAML", + "context": null + } + }, + { + "name": "database-management.sendReply", + "description": "Sends a reply message linked to a specific database record or query context. It accepts parameters to specify the target record identifier, reply content, optional metadata about the sender, and the database connection info. The tool processes these inputs by validating the record presence, appending the reply to a designated replies table or log, and returns a status confirming successful dispatch and storage of the reply.", + "category": "database-management", + "parameters": [ + { + "name": "databaseConnectionString", + "type": "string", + "description": "Connection string or URI for accessing the target database where replies are stored.", + "required": true, + "defaultValue": "" + }, + { + "name": "recordId", + "type": "string", + "description": "Unique identifier of the database record to which this reply is related.", + "required": true, + "defaultValue": "" + }, + { + "name": "replyContent", + "type": "string", + "description": "The textual content of the reply message to be sent and stored.", + "required": true, + "defaultValue": "" + }, + { + "name": "senderInfo", + "type": "object", + "description": "An object containing optional information about the sender such as name, userID, or role.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted datetime string specifying when the reply was created; defaults to current time if not provided.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object indicating the success status, the unique reply ID created, and any error messages if applicable." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to send and log a reply or comment linked to a specific database record, such as responding to a support ticket, appending notes to a customer profile, or adding audit trail comments. It ensures reply consistency and traceability within database systems.", + "limitations": "This tool cannot initiate communications outside the database system or directly notify users; it only records replies linked to database entries. It requires a valid and accessible database connection and appropriate permissions.", + "examples": [ + "Send a reply comment to ticket ID 12345 in the customer support database.", + "Append a system-generated note to order record ABC987 in the orders table.", + "Log moderator feedback linked to user record U456 with sender identification." + ] + }, + "tags": [ + "database", + "reply", + "comment", + "record", + "message", + "logging", + "communication" + ], + "examples": [ + { + "inputJson": "{\"databaseConnectionString\":\"Server=mydbserver;Database=SupportDB;User Id=admin;Password=pwd;\",\"recordId\":\"ticket12345\",\"replyContent\":\"We have resolved your issue, please confirm.\",\"senderInfo\":{\"name\":\"SupportAgent1\"},\"timestamp\":\"2024-06-01T14:30:00Z\"}", + "description": "Send a support agent's reply message linked to a particular ticket record in the support database." + }, + { + "inputJson": "{\"databaseConnectionString\":\"Server=myorders;Database=OrdersDB;User Id=admin;Password=pwd;\",\"recordId\":\"orderXYZ890\",\"replyContent\":\"Order has been shipped today.\",\"senderInfo\":{\"name\":\"System\",\"role\":\"automated\"}}", + "description": "Add an automated shipping update reply to an order record without explicit timestamp, using current time." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Reply", + "context": null + } + }, + { + "name": "database-management.sendThread", + "description": "Sends a communication thread containing messages to a specified database channel or thread-enabled storage. Accepts thread metadata and message contents, processes data by formatting and validating, then stores it in the targeted database system. Returns confirmation with thread ID and status.", + "category": "database-management", + "parameters": [ + { + "name": "databaseId", + "type": "string", + "description": "Unique identifier of the target database where the thread will be sent.", + "required": true, + "defaultValue": "" + }, + { + "name": "channelId", + "type": "string", + "description": "Identifier of the database channel or collection to which the thread belongs.", + "required": true, + "defaultValue": "" + }, + { + "name": "threadTitle", + "type": "string", + "description": "Title or subject of the thread, describing its context or topic.", + "required": true, + "defaultValue": "" + }, + { + "name": "messages", + "type": "array", + "description": "Array of message objects forming the thread. Each message includes senderId, timestamp, and text content.", + "required": true, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional metadata for the thread such as tags, priority, or custom attributes.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "Result status object containing sentThreadId, success boolean, and optional error messages if any." + }, + "aiAgent": { + "useCase": "Use this tool when needing to send or store a structured conversation thread into a database system that organizes communications by threads or channels, such as team collaboration databases or customer support logs.", + "limitations": "Does not create new database or channels; requires existing database and channel IDs. Cannot send real-time messages; operates in batch storage context.", + "examples": [ + "Send a support conversation thread to the customer support database channel.", + "Store a project discussion thread to a shared team database channel.", + "Submit a sequence of chat messages under a titled thread for archival in a business communication database." + ] + }, + "tags": [ + "database", + "communication", + "threading", + "message storage", + "database channel", + "data send" + ], + "examples": [ + { + "inputJson": "{\"databaseId\":\"db-12345\",\"channelId\":\"chan-9876\",\"threadTitle\":\"Customer Support Issue #452\",\"messages\":[{\"senderId\":\"user-1\",\"timestamp\":1685400000,\"text\":\"Initial complaint message.\"},{\"senderId\":\"agent-42\",\"timestamp\":1685400600,\"text\":\"Acknowledged receipt, investigating.\"}],\"metadata\":{\"priority\":\"high\",\"tags\":[\"support\",\"urgent\"]}}", + "description": "Send a customer support conversation thread with two messages and metadata to a support database channel." + }, + { + "inputJson": "{\"databaseId\":\"projectDB\",\"channelId\":\"dev-discussions\",\"threadTitle\":\"Feature X design discussion\",\"messages\":[{\"senderId\":\"devA\",\"timestamp\":1685401000,\"text\":\"Proposed architecture update.\"},{\"senderId\":\"devB\",\"timestamp\":1685401200,\"text\":\"Agreed, looks good.\"}],\"metadata\":{}}", + "description": "Store a project discussion thread with developer messages into the development discussions channel." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Thread", + "context": null + } + }, + { + "name": "database-management.renderParagraph", + "description": "This tool accepts a database query result object and renders a descriptive, human-readable paragraph summarizing key insights or data points from the results. It extracts relevant fields and statistics, then composes a coherent narrative paragraph detailing the query output.", + "category": "database-management", + "parameters": [ + { + "name": "queryResult", + "type": "object", + "description": "The database query result data to be summarized and rendered into a paragraph. This includes rows and associated metadata.", + "required": true, + "defaultValue": "" + }, + { + "name": "highlightFields", + "type": "array", + "description": "An array of field names to emphasize in the rendered paragraph for clarity and focus.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum character length of the output paragraph to ensure concise rendering.", + "required": false, + "defaultValue": "500" + }, + { + "name": "includeStatistics", + "type": "boolean", + "description": "Whether to include simple statistics (e.g., counts, averages) in the paragraph summary.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the rendered paragraph as a string under 'paragraph', along with metadata like character count." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to convert structured database query outputs into natural language paragraphs for summarization, reporting, or communication purposes. Ideal when presenting data insights to non-technical users or generating textual summaries from raw results.", + "limitations": "This tool does not perform the actual database querying; it only processes given result data to render paragraphs. It may not capture complex statistical or relational insights beyond basic summarization.", + "examples": [ + "Generate a concise paragraph summary from sales data query results.", + "Create a human-readable paragraph highlighting key fields from the recent user activity logs.", + "Compose a summary paragraph of inventory database query results emphasizing stock levels." + ] + }, + "tags": [ + "database", + "rendering", + "summary", + "natural-language", + "paragraph", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"queryResult\":{\"rows\":[{\"product\":\"Widget A\",\"unitsSold\":120,\"revenue\":2400},{\"product\":\"Widget B\",\"unitsSold\":80,\"revenue\":1600}],\"rowCount\":2},\"highlightFields\":[\"product\",\"unitsSold\"],\"maxLength\":300,\"includeStatistics\":true}", + "description": "Summarize sales data focusing on product names and units sold, including statistics, limited to 300 characters." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Paragraph", + "context": null + } + }, + { + "name": "database-management.renderSummary", + "description": "Generates a concise textual summary report about a specified database schema or query results. Accepts database connection details along with a target schema or query, analyzes table structures, indexes, and/or query output, then produces a human-readable summary highlighting key statistics, relationships, and data insights.", + "category": "database-management", + "parameters": [ + { + "name": "connectionString", + "type": "string", + "description": "Database connection string used to connect and retrieve metadata or query results.", + "required": true, + "defaultValue": "" + }, + { + "name": "schemaName", + "type": "string", + "description": "Name of the database schema to analyze and summarize. Required if query is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "query", + "type": "string", + "description": "SQL query string to execute and summarize its result set. Optional; overrides schemaName if provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeIndexes", + "type": "boolean", + "description": "Whether to include index details in the summary report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum length of the generated summary text in characters.", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "An object containing the summary text and metadata about the analysis." + }, + "aiAgent": { + "useCase": "Use this tool when an agent needs to provide an overview or documentation of database structures or query outputs without manual inspection, facilitating quick understanding of data models, table relationships, or query results.", + "limitations": "Cannot perform detailed data profiling or content analysis beyond metadata and aggregate statistics; not suitable for very large schemas without performance impact.", + "examples": [ + "Summarize the structure of the 'sales' schema including tables and indexes.", + "Generate a summary report for the results returned by a complex SQL query.", + "Provide an overview of database schema for documentation purposes." + ] + }, + "tags": [ + "database", + "summary", + "report", + "schema-analysis", + "query-results" + ], + "examples": [ + { + "inputJson": "{\"connectionString\":\"Server=myserver;Database=mydb;User Id=admin;Password=pass;\",\"schemaName\":\"public\",\"includeIndexes\":true,\"maxSummaryLength\":500}", + "description": "Generate a summary report for the 'public' schema including indexes with a summary length limit of 500 characters." + }, + { + "inputJson": "{\"connectionString\":\"Server=myserver;Database=mydb;User Id=admin;Password=pass;\",\"query\":\"SELECT * FROM orders WHERE order_date > '2023-01-01'\",\"includeIndexes\":false,\"maxSummaryLength\":1000}", + "description": "Generate a summary of the result set from a specific query without including index info." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Summary", + "context": null + } + }, + { + "name": "database-management.draftInvoice", + "description": "Generates a draft invoice document by compiling client details, a list of billed items, tax rates, and payment terms. Accepts structured inputs to calculate totals and apply taxes, producing a formatted invoice object ready for review or database insertion.", + "category": "database-management", + "parameters": [ + { + "name": "clientId", + "type": "string", + "description": "Unique identifier of the client to whom the invoice will be issued.", + "required": true, + "defaultValue": "" + }, + { + "name": "invoiceDate", + "type": "string", + "description": "The date the invoice is issued in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "dueDate", + "type": "string", + "description": "Payment due date for the invoice in ISO 8601 format (YYYY-MM-DD).", + "required": false, + "defaultValue": "" + }, + { + "name": "items", + "type": "array", + "description": "List of items/services billed, each with description, quantity, and unit price.", + "required": true, + "defaultValue": "" + }, + { + "name": "taxRate", + "type": "number", + "description": "Applicable tax rate as a decimal (e.g., 0.07 for 7%).", + "required": false, + "defaultValue": "0" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code for the invoice amounts (e.g., USD, EUR). Defaults to USD.", + "required": false, + "defaultValue": "USD" + }, + { + "name": "paymentTerms", + "type": "string", + "description": "Text describing payment terms (e.g., 'Net 30 days').", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A structured invoice draft including client info, itemized charges, subtotal, tax amount, total due, currency, invoice and due dates, and payment terms." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create a detailed draft invoice combining multiple data sources such as client info and billing items before finalizing and storing it in a database or sending to clients. It automates calculation of totals and tax application, ensuring accurate invoice generation.", + "limitations": "Does not validate client existence in the database or perform payment processing. It creates a draft only, not a finalized or signed invoice.", + "examples": [ + "Create a draft invoice for client ID 'C1001' dated 2024-05-15 with three billed items and 5% tax.", + "Generate a draft invoice with no tax for a freelance project with specified payment terms.", + "Draft an invoice in EUR currency with due date 30 days after invoice date." + ] + }, + "tags": [ + "database", + "invoice", + "billing", + "document-generation", + "finance", + "drafting", + "accounting" + ], + "examples": [ + { + "inputJson": "{\"clientId\":\"C1001\",\"invoiceDate\":\"2024-05-15\",\"dueDate\":\"2024-06-14\",\"items\":[{\"description\":\"Consulting services\",\"quantity\":10,\"unitPrice\":150},{\"description\":\"Software license\",\"quantity\":1,\"unitPrice\":1200}],\"taxRate\":0.07,\"currency\":\"USD\",\"paymentTerms\":\"Net 30 days\"}", + "description": "Draft an invoice with two line items including tax and payment terms." + }, + { + "inputJson": "{\"clientId\":\"F2002\",\"invoiceDate\":\"2024-05-20\",\"items\":[{\"description\":\"Graphic design work\",\"quantity\":15,\"unitPrice\":75}],\"taxRate\":0,\"currency\":\"USD\"}", + "description": "Create a tax-free draft invoice without specifying due date or payment terms." + }, + { + "inputJson": "{\"clientId\":\"I3003\",\"invoiceDate\":\"2024-06-01\",\"dueDate\":\"2024-06-30\",\"items\":[{\"description\":\"Consultation\",\"quantity\":5,\"unitPrice\":200}],\"taxRate\":0.2,\"currency\":\"EUR\",\"paymentTerms\":\"Due upon receipt\"}", + "description": "Generate a Euro currency invoice with 20% VAT and immediate payment terms." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Invoice", + "context": null + } + }, + { + "name": "database-management.formatLink", + "description": "This tool accepts a database connection string or URL containing credentials and connection parameters, validates and formats it into a standardized, human-readable form. It outputs a cleaned, formatted link string suitable for display, logging or configuration purposes, optionally masking sensitive info like passwords.", + "category": "database-management", + "parameters": [ + { + "name": "link", + "type": "string", + "description": "The raw database connection link or URL string to be formatted and normalized.", + "required": true, + "defaultValue": "" + }, + { + "name": "maskSensitive", + "type": "boolean", + "description": "If true, sensitive information such as passwords in the link will be masked with asterisks.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired output format for the link: 'standard' for normalized URL, 'pretty' for multi-line readable display.", + "required": false, + "defaultValue": "standard" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted link string and metadata about the formatting process" + }, + "aiAgent": { + "useCase": "Use this tool when needing to convert raw or irregular database connection strings into a consistent, user-friendly format for display, documentation, or logging, especially when handling credentials that should be masked. It assists in improving readability and ensuring uniform link presentation across systems.", + "limitations": "This tool does not validate the actual ability to connect to the database, nor does it parse or restructure custom or non-standard database link formats. It only formats and masks within known URL patterns.", + "examples": [ + "Format a raw PostgreSQL connection string masking the password.", + "Convert a MySQL link into a pretty multi-line display with masked credentials.", + "Standardize and mask a MongoDB URI." + ] + }, + "tags": [ + "database", + "formatting", + "link", + "connection-string", + "security", + "normalization" + ], + "examples": [ + { + "inputJson": "{\"link\":\"postgres://user:secretpass@localhost:5432/mydb?sslmode=disable\",\"maskSensitive\":true,\"outputFormat\":\"standard\"}", + "description": "Format a PostgreSQL connection link with password masked." + }, + { + "inputJson": "{\"link\":\"mysql://admin:admin123@db.example.com:3306/shop\",\"maskSensitive\":true,\"outputFormat\":\"pretty\"}", + "description": "Pretty format a MySQL connection string with masked password." + }, + { + "inputJson": "{\"link\":\"mongodb+srv://cluster0.mongodb.net/mydb?retryWrites=true&w=majority\",\"maskSensitive\":false,\"outputFormat\":\"standard\"}", + "description": "Standard format MongoDB SRV connection URI without masking." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Link", + "context": null + } + }, + { + "name": "database-management.formatComponent", + "description": "Formats a database schema component or query snippet by applying consistent indentation, line breaks, and keyword casing. Accepts SQL or JSON schema components as input and outputs a well-structured, human-readable formatted string.", + "category": "database-management", + "parameters": [ + { + "name": "componentType", + "type": "string", + "description": "Type of component to format, e.g., 'SQLQuery', 'JSONSchema'", + "required": true, + "defaultValue": "" + }, + { + "name": "componentContent", + "type": "string", + "description": "The raw component code or text to format", + "required": true, + "defaultValue": "" + }, + { + "name": "indentationSpaces", + "type": "number", + "description": "Number of spaces to use for indentation in the formatted output", + "required": false, + "defaultValue": "2" + }, + { + "name": "keywordCase", + "type": "string", + "description": "Case style for keywords (e.g., 'upper', 'lower', 'capitalize')", + "required": false, + "defaultValue": "upper" + }, + { + "name": "lineWidth", + "type": "number", + "description": "Maximum line width before wrapping (0 means no forced wrapping)", + "required": false, + "defaultValue": "80" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted component as a string under 'formattedContent' property" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to present or store formatted, readable database components such as SQL queries or JSON schema snippets, ensuring consistent style and readability. It is especially useful for generating code snippets in documentation, reports, or user interfaces where clarity and formatting consistency are important.", + "limitations": "Does not validate syntactic correctness beyond formatting. It cannot perform semantic analysis or fix syntax errors. It only supports limited component types (SQLQuery, JSONSchema) and does not handle full database schemas or other database languages like PL/SQL, T-SQL, or NoSQL dialects.", + "examples": [ + "Format a raw SQL query snippet with 4 spaces indentation and uppercase keywords.", + "Format a JSON schema snippet with 2 spaces indentation and default settings.", + "Format a SQL snippet with lowercase keywords and line width set to 100 characters." + ] + }, + "tags": [ + "formatting", + "database", + "SQL", + "JSON", + "code-style", + "schema" + ], + "examples": [ + { + "inputJson": "{\"componentType\":\"SQLQuery\",\"componentContent\":\"select id,name from users where active=1 order by name\",\"indentationSpaces\":4,\"keywordCase\":\"upper\",\"lineWidth\":80}", + "description": "Format a simple SQL select query with 4 spaces indentation and uppercase keywords." + }, + { + "inputJson": "{\"componentType\":\"JSONSchema\",\"componentContent\":\"{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"id\\\":{\\\"type\\\":\\\"integer\\\"},\\\"name\\\":{\\\"type\\\":\\\"string\\\"}}}\",\"indentationSpaces\":2,\"keywordCase\":\"lower\"}", + "description": "Format a JSON schema snippet with 2 spaces indentation and lowercase keywords." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Component", + "context": null + } + }, + { + "name": "database-management.draftParagraph", + "description": "Generates a coherent explanatory paragraph describing database content based on a provided database schema or query result summary. Accepts schema definitions or data summaries, analyzes structure or results, and outputs a detailed textual paragraph suitable for documentation or report purposes.", + "category": "database-management", + "parameters": [ + { + "name": "schemaDescription", + "type": "string", + "description": "A textual description of the database schema including tables, columns, and relationships. Provide either this or querySummary, but one is required.", + "required": false, + "defaultValue": "" + }, + { + "name": "querySummary", + "type": "string", + "description": "A summary or description of query results or dataset content to generate paragraph about. Provide either this or schemaDescription, at least one required.", + "required": false, + "defaultValue": "" + }, + { + "name": "focusArea", + "type": "string", + "description": "Specific aspect to emphasize such as relationships, data trends, or constraints. Optional to guide paragraph focus.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language in which to generate the paragraph, e.g., 'English' or 'Spanish'. Defaults to English.", + "required": false, + "defaultValue": "English" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length (in words) for the generated paragraph. Defaults to 150 words.", + "required": false, + "defaultValue": "150" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated descriptive paragraph as a single string under 'paragraph'." + }, + "aiAgent": { + "useCase": "This tool is useful when an AI agent needs to create human-readable documentation, reports, or explanations about database schemas or query results. For example, generating an overview paragraph describing the tables and their relations or explaining the observed data in query output to non-technical readers.", + "limitations": "The tool cannot replace detailed technical documentation that requires complex code examples or exhaustive schema details. It also cannot provide exact query code or perform live data analysis; it generates descriptive text based solely on input summaries.", + "examples": [ + "Generate a paragraph explaining the tables and foreign key relationships in a given schema description.", + "Create a summary paragraph describing the results of a sales query output focusing on trends.", + "Draft an overview paragraph emphasizing constraints and data types from the schema description." + ] + }, + "tags": [ + "database", + "documentation", + "summary", + "schema", + "query", + "paragraph", + "explanation" + ], + "examples": [ + { + "inputJson": "{\"schemaDescription\":\"The database contains three tables: Customers with customer_id, name, and contact details; Orders with order_id, customer_id, order_date; and Products with product_id and price. Customers and Orders are linked via customer_id.\",\"language\":\"English\",\"maxLength\":120}", + "description": "Draft a paragraph describing the given schema's tables and relationships in English, max 120 words." + }, + { + "inputJson": "{\"querySummary\":\"The sales report query returns that product A has the highest sales, product B saw a 10% decrease, and orders peaked in December.\",\"focusArea\":\"sales trends\",\"language\":\"English\",\"maxLength\":150}", + "description": "Generate a paragraph focusing on sales trends from the given query summary." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Paragraph", + "context": null + } + }, + { + "name": "database-management.formatArticle", + "description": "This tool accepts an article stored as a database record, including its raw text and metadata, and formats it into a structured, clean HTML or Markdown string. It processes elements like headings, paragraphs, lists, images, and links to produce a properly formatted article output for display or publishing.", + "category": "database-management", + "parameters": [ + { + "name": "articleId", + "type": "string", + "description": "The unique identifier of the article record to format from the database.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired formatting output: 'html' or 'markdown'.", + "required": true, + "defaultValue": "html" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include article metadata (author, date, tags) in the formatted output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxContentLength", + "type": "number", + "description": "Maximum number of characters from the article content to include in the output. Use 0 for no limit.", + "required": false, + "defaultValue": "0" + }, + { + "name": "sanitizeHtml", + "type": "boolean", + "description": "For HTML output, whether to sanitize the HTML to remove unsafe tags and attributes.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted article string and metadata info if requested." + }, + "aiAgent": { + "useCase": "Use this tool when the AI needs to convert raw article data from a database into clean, well-structured HTML or Markdown for display or publishing, including optional metadata. It is ideal for content management systems or automated reporting where articles must be presented nicely.", + "limitations": "This tool does not fetch or query the article record itself; the articleId must reference an existing record accessible by the system. It only formats the given article content and metadata; it cannot generate new content or correct article errors.", + "examples": [ + "Format article 'abc123' into HTML including metadata for website display.", + "Generate a Markdown version of a specific article without including metadata.", + "Create an HTML snippet of an article limited to first 500 characters, sanitized for safe embedding." + ] + }, + "tags": [ + "database", + "formatting", + "article", + "content-management", + "html", + "markdown" + ], + "examples": [ + { + "inputJson": "{\"articleId\":\"abc123\",\"outputFormat\":\"html\",\"includeMetadata\":true,\"maxContentLength\":0,\"sanitizeHtml\":true}", + "description": "Format the full article 'abc123' as sanitized HTML including metadata." + }, + { + "inputJson": "{\"articleId\":\"xyz789\",\"outputFormat\":\"markdown\",\"includeMetadata\":false,\"maxContentLength\":1000,\"sanitizeHtml\":false}", + "description": "Format up to 1000 characters of article 'xyz789' as Markdown excluding metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Article", + "context": null + } + }, + { + "name": "database-management.composeLink", + "description": "This tool accepts parameters describing two database tables and their relationship keys, then composes a valid SQL JOIN link clause connecting these tables. It processes input details such as table names, join type, and join keys, and outputs a string representing the SQL JOIN condition for composing efficient multi-table queries.", + "category": "database-management", + "parameters": [ + { + "name": "leftTable", + "type": "string", + "description": "Name of the left-side table in the join clause.", + "required": true, + "defaultValue": "" + }, + { + "name": "rightTable", + "type": "string", + "description": "Name of the right-side table to join.", + "required": true, + "defaultValue": "" + }, + { + "name": "leftKey", + "type": "string", + "description": "Column name in the left table to join on.", + "required": true, + "defaultValue": "" + }, + { + "name": "rightKey", + "type": "string", + "description": "Column name in the right table to join on.", + "required": true, + "defaultValue": "" + }, + { + "name": "joinType", + "type": "string", + "description": "Type of SQL join to compose, such as INNER, LEFT, RIGHT, or FULL.", + "required": false, + "defaultValue": "INNER" + }, + { + "name": "aliasLeftTable", + "type": "string", + "description": "Optional alias for the left table in the join statement.", + "required": false, + "defaultValue": "" + }, + { + "name": "aliasRightTable", + "type": "string", + "description": "Optional alias for the right table in the join statement.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the composed SQL JOIN clause as a string under 'joinClause' key." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate precise SQL JOIN clauses dynamically between two tables for composing multi-table queries in database management contexts. It helps automate SQL generation based on table names and join keys, improving efficiency in query construction tasks.", + "limitations": "The tool generates JOIN clauses for two tables only and does not validate table or column existence in the database schema. It does not handle complex multi-join or nested query composition.", + "examples": [ + "Join the 'Users' and 'Orders' tables on 'UserID' with a LEFT JOIN.", + "Compose an INNER JOIN between 'Products' and 'Categories' using 'CategoryID'.", + "Create a RIGHT JOIN between 'Employees' and 'Departments' with aliases 'e' and 'd'." + ] + }, + "tags": [ + "database", + "SQL", + "join", + "compose", + "query", + "table", + "management" + ], + "examples": [ + { + "inputJson": "{\"leftTable\":\"Users\",\"rightTable\":\"Orders\",\"leftKey\":\"UserID\",\"rightKey\":\"UserID\",\"joinType\":\"LEFT\"}", + "description": "Compose a LEFT JOIN clause between Users and Orders on UserID columns." + }, + { + "inputJson": "{\"leftTable\":\"Products\",\"rightTable\":\"Categories\",\"leftKey\":\"CategoryID\",\"rightKey\":\"CategoryID\",\"joinType\":\"INNER\"}", + "description": "Compose an INNER JOIN clause between Products and Categories on CategoryID." + }, + { + "inputJson": "{\"leftTable\":\"Employees\",\"rightTable\":\"Departments\",\"leftKey\":\"DepartmentID\",\"rightKey\":\"ID\",\"joinType\":\"RIGHT\",\"aliasLeftTable\":\"e\",\"aliasRightTable\":\"d\"}", + "description": "Compose a RIGHT JOIN clause between Employees (alias e) and Departments (alias d) on DepartmentID and ID columns." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Link", + "context": null + } + }, + { + "name": "database-management.composeComment", + "description": "This tool accepts parameters including the database table name, record identifier, author details, and comment content to compose a structured comment entry for that record. It processes input to validate mandatory fields and formats the comment data ready for insertion or update in the specified database. The output is a JSON object representing the composed comment with metadata, suitable for database storage or further processing.", + "category": "database-management", + "parameters": [ + { + "name": "tableName", + "type": "string", + "description": "The name of the database table where the comment will be associated.", + "required": true, + "defaultValue": "" + }, + { + "name": "recordId", + "type": "string", + "description": "The unique identifier of the record to which the comment is linked.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorId", + "type": "string", + "description": "Identifier or username of the comment author.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "Display name of the comment author.", + "required": false, + "defaultValue": "" + }, + { + "name": "commentText", + "type": "string", + "description": "The text content of the comment.", + "required": true, + "defaultValue": "" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 formatted timestamp representing when the comment was composed. If not provided, current time is used.", + "required": false, + "defaultValue": "" + }, + { + "name": "parentCommentId", + "type": "string", + "description": "Optional identifier of the parent comment if this is a reply.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing the composed comment including fields like commentId, tableName, recordId, authorId, commentText, timestamp, and optionally parentCommentId." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create or prepare a comment entry linked to a specific database record for insertion or update. It ensures all required fields for comment creation are gathered and structured consistently for database management workflows.", + "limitations": "This tool does not perform the actual database insertion or update operation; it only composes and formats the comment data structure. It also does not validate database schema or permissions.", + "examples": [ + "Compose a comment for record 789 in the Tickets table by user123 with the text 'Issue resolved as per the latest update.'", + "Create a reply comment linked to comment 456 on the Orders table for author Jane_Doe with explanatory details.", + "Prepare a new comment with current timestamp for record 101 in the Products table authored by admin user." + ] + }, + "tags": [ + "database", + "comment", + "compose", + "record", + "metadata", + "communication", + "management" + ], + "examples": [ + { + "inputJson": "{\"tableName\":\"Tickets\",\"recordId\":\"789\",\"authorId\":\"user123\",\"authorName\":\"John Smith\",\"commentText\":\"Issue resolved as per the latest update.\",\"timestamp\":\"2024-06-01T12:30:00Z\"}", + "description": "Compose a comment on the Tickets table record with specified author and timestamp." + }, + { + "inputJson": "{\"tableName\":\"Orders\",\"recordId\":\"234\",\"authorId\":\"Jane_Doe\",\"commentText\":\"Following up on previous feedback.\",\"parentCommentId\":\"456\"}", + "description": "Create a reply comment on Orders record linked to parent comment 456." + }, + { + "inputJson": "{\"tableName\":\"Products\",\"recordId\":\"101\",\"authorId\":\"admin\" ,\"commentText\":\"Initial review completed.\"}", + "description": "Prepare a new comment without timestamp provided, which will default to current time." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Comment", + "context": null + } + }, + { + "name": "database-management.buildQueue", + "description": "Creates and configures a message queue infrastructure component for database management workflows. Accepts parameters defining queue name, type (e.g., FIFO, standard), visibility timeout, message retention period, and maximum message size. Outputs a queue configuration object including connection details and queue identifiers for integration with database services.", + "category": "database-management", + "parameters": [ + { + "name": "queueName", + "type": "string", + "description": "The unique name to assign to the queue for identification and access.", + "required": true, + "defaultValue": "" + }, + { + "name": "queueType", + "type": "string", + "description": "The type of queue to create; options typically include 'FIFO' or 'Standard'.", + "required": true, + "defaultValue": "Standard" + }, + { + "name": "visibilityTimeoutSeconds", + "type": "number", + "description": "The duration in seconds that a message received from the queue will be invisible to other consumers until processed or returned.", + "required": false, + "defaultValue": "30" + }, + { + "name": "messageRetentionPeriodSeconds", + "type": "number", + "description": "The duration in seconds that a message is retained in the queue if not deleted or processed.", + "required": false, + "defaultValue": "345600" + }, + { + "name": "maxMessageSizeBytes", + "type": "number", + "description": "Maximum allowed size in bytes for a message in the queue.", + "required": false, + "defaultValue": "262144" + }, + { + "name": "deadLetterQueueEnabled", + "type": "boolean", + "description": "Flag to enable a dead-letter queue for messages that can't be processed after multiple attempts.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxReceiveCount", + "type": "number", + "description": "Maximum number of times a message is received before moving to the dead-letter queue (if enabled).", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "An object containing details about the created queue, including queueId, queueUrl/connectionString, queueType, and configuration parameters for integration and monitoring." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically create and configure message queues that support database task workflows, asynchronous processing, or event-based triggers in database management systems. It helps especially in cloud or distributed environments where queue infrastructure is required to decouple components.", + "limitations": "Does not handle message publishing or consumption; only queue creation and configuration. Does not manage underlying physical infrastructure or permissions beyond initial setup.", + "examples": [ + "Create a FIFO queue named 'db-task-queue' with a 60-second visibility timeout.", + "Build a standard queue with a dead-letter queue enabled for error handling.", + "Set up a queue configured for messages up to 128 KB with a retention period of one week." + ] + }, + "tags": [ + "database", + "queue", + "infrastructure", + "message-queue", + "asynchronous-processing", + "cloud", + "task-management" + ], + "examples": [ + { + "inputJson": "{\"queueName\":\"dbTaskQueue\",\"queueType\":\"FIFO\",\"visibilityTimeoutSeconds\":45,\"messageRetentionPeriodSeconds\":604800,\"maxMessageSizeBytes\":131072,\"deadLetterQueueEnabled\":true,\"maxReceiveCount\":3}", + "description": "Creates a FIFO database task queue with 45 seconds visibility timeout, 1 week retention, 128 KB max message size, dead-letter queue enabled with max 3 retries." + }, + { + "inputJson": "{\"queueName\":\"standardDbQueue\",\"queueType\":\"Standard\",\"deadLetterQueueEnabled\":false}", + "description": "Creates a standard database queue with default visibility timeout, message retention, and no dead-letter queue." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Queue", + "context": null + } + }, + { + "name": "database-management.buildCluster", + "description": "Builds a new database cluster by specifying cluster configuration parameters such as node count, instance type, storage size, and network setup. Processes these inputs to provision and initialize a cluster, returning the cluster ID, status, and connection details upon successful creation.", + "category": "database-management", + "parameters": [ + { + "name": "clusterName", + "type": "string", + "description": "A unique name identifier for the cluster to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "nodeCount", + "type": "number", + "description": "The total number of nodes in the cluster to provision.", + "required": true, + "defaultValue": "" + }, + { + "name": "instanceType", + "type": "string", + "description": "The type/specification of database instances (e.g., CPU, memory) for each node.", + "required": true, + "defaultValue": "" + }, + { + "name": "storageSizeGB", + "type": "number", + "description": "The storage size in gigabytes allocated to each node's database volume.", + "required": true, + "defaultValue": "" + }, + { + "name": "region", + "type": "string", + "description": "The geographic region or availability zone where the cluster will be deployed.", + "required": true, + "defaultValue": "" + }, + { + "name": "multiAZ", + "type": "boolean", + "description": "Whether the cluster nodes should be deployed across multiple availability zones for redundancy.", + "required": false, + "defaultValue": "false" + }, + { + "name": "networkConfig", + "type": "object", + "description": "Network settings including VPC ID, subnet IDs, and security group IDs for cluster networking.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing confirmation of cluster creation, including clusterId, status (e.g., provisioning, active), endpoint connection info, and detailed node summaries." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically provision a new database cluster with specified capacity and configuration in a cloud or data center environment. Ideal for initializing environments for scalable database workloads, testing, or production deployment.", + "limitations": "This tool does not handle post-deployment cluster management such as scaling, backups, or failover management. It requires correct permissions and existing networking infrastructure. It cannot validate the instance types beyond format consistency.", + "examples": [ + "Create a 5-node cluster with medium instance types and 100GB storage each in us-east-1.", + "Build a multi-AZ cluster named 'analytics-prod' with 3 nodes and 500GB storage per node.", + "Provision a small test cluster with 2 nodes in the eu-west-2 region with default network settings." + ] + }, + "tags": [ + "database", + "cluster", + "provisioning", + "infrastructure", + "cloud", + "deployment", + "automation" + ], + "examples": [ + { + "inputJson": "{\"clusterName\":\"test-cluster\",\"nodeCount\":3,\"instanceType\":\"db.m4.large\",\"storageSizeGB\":100,\"region\":\"us-east-1\",\"multiAZ\":false}", + "description": "Create a 3-node cluster with medium instances and 100GB storage in US East region without multi-AZ." + }, + { + "inputJson": "{\"clusterName\":\"analytics-prod\",\"nodeCount\":5,\"instanceType\":\"db.r5.xlarge\",\"storageSizeGB\":500,\"region\":\"us-west-2\",\"multiAZ\":true,\"networkConfig\":{\"vpcId\":\"vpc-12345\",\"subnetIds\":[\"subnet-123\",\"subnet-456\"],\"securityGroupIds\":[\"sg-12345\"]}}", + "description": "Build a 5-node highly available multi-AZ cluster with advanced network settings." + }, + { + "inputJson": "{\"clusterName\":\"dev-cluster\",\"nodeCount\":2,\"instanceType\":\"db.t3.medium\",\"storageSizeGB\":50,\"region\":\"eu-central-1\"}", + "description": "Provision a small development cluster with 2 nodes and default network configuration." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Cluster", + "context": null + } + }, + { + "name": "database-management.composeArticle", + "description": "This tool composes a structured article by querying a database for relevant data based on given topics and keywords, synthesizing the information into a coherent article with sections and references. It accepts input parameters for topics, desired length, and style, and outputs a ready-to-use article text and metadata.", + "category": "database-management", + "parameters": [ + { + "name": "topics", + "type": "array", + "description": "List of main topics or keywords to base the article on.", + "required": true, + "defaultValue": "" + }, + { + "name": "desiredLength", + "type": "number", + "description": "Approximate word count desired for the article.", + "required": false, + "defaultValue": "1000" + }, + { + "name": "writingStyle", + "type": "string", + "description": "Tone or style of the article such as 'formal', 'casual', or 'technical'.", + "required": false, + "defaultValue": "formal" + }, + { + "name": "includeReferences", + "type": "boolean", + "description": "Whether to include references or citations from the database sources.", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "Language code for the generated article, e.g., 'en' for English.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing the composed article text, metadata including sections, word count, and optionally references." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate a comprehensive article or report by extracting and synthesizing information from a structured database, tailored to specific topics and stylistic preferences. It is especially useful for automating content creation in knowledge bases or content management systems.", + "limitations": "This tool cannot generate articles without relevant data present in the database. It does not replace human editorial review for accuracy or style nuances.", + "examples": [ + "Compose a 1500-word technical article on renewable energy technology in English with references included.", + "Generate a casual 800-word article about latest trends in wearable devices without references.", + "Create a formal report-style article about data privacy laws focusing on European countries." + ] + }, + "tags": [ + "database", + "article generation", + "content synthesis", + "document creation", + "query", + "writing" + ], + "examples": [ + { + "inputJson": "{\"topics\":[\"climate change\",\"carbon footprint\"],\"desiredLength\":1200,\"writingStyle\":\"formal\",\"includeReferences\":true,\"language\":\"en\"}", + "description": "Compose a formal article about climate change and carbon footprint including references, approx 1200 words." + }, + { + "inputJson": "{\"topics\":[\"blockchain technology\"],\"desiredLength\":800,\"writingStyle\":\"technical\",\"includeReferences\":false,\"language\":\"en\"}", + "description": "Generate a concise technical article on blockchain technology without references." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Article", + "context": null + } + }, + { + "name": "database-management.buildPipeline", + "description": "Constructs a configurable data processing pipeline for database operations. Accepts a sequence of pipeline stages with specific operation types and parameters, validates their order and compatibility, and outputs an executable pipeline configuration object that can be run to perform complex data transformations, queries, and aggregations on a specified database.", + "category": "database-management", + "parameters": [ + { + "name": "pipelineStages", + "type": "array", + "description": "An ordered list of pipeline stages, where each stage specifies an operation type (e.g., filter, join, aggregate) and its relevant parameters. Required.", + "required": true, + "defaultValue": "" + }, + { + "name": "sourceDatabase", + "type": "string", + "description": "The identifier or connection string of the source database where the pipeline will be executed. Required.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetDatabase", + "type": "string", + "description": "Optional identifier or connection string of the target database for storing pipeline output results.", + "required": false, + "defaultValue": "" + }, + { + "name": "runImmediately", + "type": "boolean", + "description": "Flag indicating whether to execute the pipeline immediately after building. Defaults to false.", + "required": false, + "defaultValue": "false" + }, + { + "name": "errorHandlingStrategy", + "type": "string", + "description": "Defines how the pipeline should handle runtime errors (e.g., 'stopOnError', 'skipError', 'logAndContinue'). Defaults to 'stopOnError'.", + "required": false, + "defaultValue": "stopOnError" + }, + { + "name": "maxConcurrency", + "type": "number", + "description": "Maximum number of concurrent operations allowed in the pipeline execution. Defaults to 1 (sequential).", + "required": false, + "defaultValue": "1" + } + ], + "returns": { + "type": "object", + "description": "An object representing the constructed pipeline, including its validated stages, configuration details, and an executable method to run the pipeline on the specified databases." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to assemble complex multi-stage data workflows involving filtering, joining, transforming, or aggregating data within or across databases. Ideal for scenarios requiring automated generation of pipeline scripts or config objects from user-defined operations.", + "limitations": "Does not execute pipeline on unsupported or incompatible database types. Cannot optimize pipeline stages beyond specified parameters. Does not support real-time streaming data pipelines currently.", + "examples": [ + "Build a pipeline with filter and join stages to transform data from sales_db and save results to analytics_db.", + "Create an aggregation pipeline summarizing user activity with error skipping.", + "Generate and immediately run a pipeline that extracts and transforms data, handling up to 3 concurrent operations." + ] + }, + "tags": [ + "database", + "pipeline", + "data-processing", + "automation", + "query-building", + "ETL", + "aggregation" + ], + "examples": [ + { + "inputJson": "{\"pipelineStages\":[{\"type\":\"filter\",\"conditions\":{\"field\":\"status\",\"operator\":\"=\",\"value\":\"active\"}},{\"type\":\"join\",\"with\":\"customer_db\",\"on\":{\"customerId\":\"userId\"}},{\"type\":\"aggregate\",\"groupBy\":[\"region\"],\"metrics\":{\"sales\":\"sum\"}}],\"sourceDatabase\":\"sales_db\",\"targetDatabase\":\"analytics_db\",\"runImmediately\":false}", + "description": "Builds a pipeline filtering active records, joining with customer data, and aggregating sales by region for later execution." + }, + { + "inputJson": "{\"pipelineStages\":[{\"type\":\"aggregate\",\"groupBy\":[\"userId\"],\"metrics\":{\"loginCount\":\"count\"}}],\"sourceDatabase\":\"user_db\",\"runImmediately\":true,\"errorHandlingStrategy\":\"skipError\",\"maxConcurrency\":3}", + "description": "Generates and runs immediately an aggregation pipeline counting user logins with error skipping and concurrency up to 3." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Pipeline", + "context": null + } + }, + { + "name": "database-management.buildPackage", + "description": "This tool creates a deployable database management package based on provided configuration details, schema definitions, and optional scripts. It processes inputs like database type, schema information, setup scripts, and package metadata to produce a ready-to-deploy package archive (e.g., a ZIP file) that can initialize and manage the specified database environment.", + "category": "database-management", + "parameters": [ + { + "name": "databaseType", + "type": "string", + "description": "Type of the target database system (e.g., 'PostgreSQL', 'MySQL', 'SQLite').", + "required": true, + "defaultValue": "" + }, + { + "name": "schemaDefinitions", + "type": "string", + "description": "SQL or JSON string defining database tables, relationships, indexes, and constraints.", + "required": true, + "defaultValue": "" + }, + { + "name": "setupScripts", + "type": "array", + "description": "Optional array of SQL or script strings to run during package deployment for setup or seeding data.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "packageName", + "type": "string", + "description": "Name of the database management package to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "version", + "type": "string", + "description": "Version number for the package, following semantic versioning (e.g., '1.0.0').", + "required": false, + "defaultValue": "1.0.0" + }, + { + "name": "includeMigrationTool", + "type": "boolean", + "description": "Whether to include migration tools/scripts for managing schema updates.", + "required": false, + "defaultValue": "false" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output package archive, e.g., 'zip' or 'tar.gz'.", + "required": false, + "defaultValue": "zip" + } + ], + "returns": { + "type": "object", + "description": "Object containing package metadata and a base64 encoded string of the package archive ready for deployment." + }, + "aiAgent": { + "useCase": "Use this tool when you need to create a consistent, portable database management package tailored to a specific database type and schema definition. It is ideal for automating database deployment setups, migrations, or distributing database initialization packages.", + "limitations": "Cannot connect to actual databases or execute scripts; only builds the package based on inputs. Complex schema validations or proprietary database features may need external handling.", + "examples": [ + "Build a PostgreSQL package named 'userdb' version 1.2.0 including schema definitions and setup scripts.", + "Create a MySQL package with no migration tools and default zip output.", + "Generate a SQLite package with just schema and minimal setup scripts." + ] + }, + "tags": [ + "database", + "package", + "build", + "schema", + "deployment", + "migration", + "automation" + ], + "examples": [ + { + "inputJson": "{\"databaseType\":\"PostgreSQL\",\"schemaDefinitions\":\"CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(100) UNIQUE);\",\"setupScripts\":[\"INSERT INTO users (name,email) VALUES ('Admin', 'admin@example.com');\"],\"packageName\":\"userdb\",\"version\":\"1.2.0\",\"includeMigrationTool\":true,\"outputFormat\":\"zip\"}", + "description": "Builds a PostgreSQL package named 'userdb' version 1.2.0 with users table and initial seed data including migration tools in zip format." + }, + { + "inputJson": "{\"databaseType\":\"MySQL\",\"schemaDefinitions\":\"CREATE TABLE products (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), price DECIMAL(10,2));\",\"packageName\":\"productCatalog\",\"version\":\"1.0.0\",\"includeMigrationTool\":false,\"outputFormat\":\"zip\"}", + "description": "Creates a MySQL package named 'productCatalog' with products table schema, no migration tools, default version 1.0.0, output as zip." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Package", + "context": null + } + }, + { + "name": "database-management.buildWorkflow", + "description": "Constructs an automated workflow for database operations by accepting a series of operation steps, conditional logic, and execution parameters. The tool processes this structured input to produce a valid workflow definition JSON compatible with orchestration engines, facilitating automated and repeatable database management tasks.", + "category": "database-management", + "parameters": [ + { + "name": "workflowName", + "type": "string", + "description": "Descriptive name for the workflow to be built.", + "required": true, + "defaultValue": "" + }, + { + "name": "operations", + "type": "array", + "description": "Ordered list of database operation objects defining each step (e.g., queries, updates, backups). Each operation includes type, parameters, and optional conditions.", + "required": true, + "defaultValue": "" + }, + { + "name": "conditions", + "type": "object", + "description": "Optional global conditional logic dictating workflow branching based on operation outcomes or external variables.", + "required": false, + "defaultValue": "" + }, + { + "name": "executionSettings", + "type": "object", + "description": "Settings controlling workflow execution parameters such as retries, timeouts, and concurrency.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing the fully assembled workflow definition ready for deployment or further customization." + }, + "aiAgent": { + "useCase": "Use this tool when there is a need to programmatically define a sequence of database tasks, optionally with branching and execution control, enabling automation of routine or complex database management workflows without manual scripting.", + "limitations": "This tool does not execute the workflow; it only builds the workflow definition. It requires valid and executable operations to be provided. It cannot validate database connectivity or operation success beyond structural correctness.", + "examples": [ + "Build a workflow named 'NightlyBackup' with steps to dump the database and then optimize tables.", + "Create a workflow with conditional steps that update user records only if a prior validation step passes.", + "Generate a workflow definition including retries and timeout settings for critical operations." + ] + }, + "tags": [ + "database", + "workflow", + "automation", + "orchestration", + "management" + ], + "examples": [ + { + "inputJson": "{\"workflowName\":\"DailyDataCleanup\",\"operations\":[{\"type\":\"query\",\"query\":\"DELETE FROM logs WHERE created_at < NOW() - INTERVAL '30 days'\"},{\"type\":\"backup\",\"target\":\"s3://db-backups/daily/\"}],\"executionSettings\":{\"retryCount\":3,\"timeoutSeconds\":600}}", + "description": "Build a daily cleanup workflow with log deletion and S3 backup, including retry and timeout settings." + }, + { + "inputJson": "{\"workflowName\":\"UserOnboarding\",\"operations\":[{\"type\":\"validate\",\"query\":\"SELECT COUNT(*) FROM users WHERE email = ?\",\"parameters\":[\"user@example.com\"]},{\"type\":\"insert\",\"table\":\"users\",\"data\":{\"email\":\"user@example.com\",\"status\":\"active\"}}],\"conditions\":{\"onFailure\":\"halt\"}}", + "description": "Create a workflow for user onboarding that validates existence before inserting, halting on validation failure." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Workflow", + "context": null + } + }, + { + "name": "database-management.generateConversion", + "description": "Generates detailed conversion analytics by processing database records that contain user interactions and events. Accepts parameters defining conversion criteria, timeframe, and segmentation. Outputs conversion rates, counts, and funnel progression statistics to aid in performance analysis and optimization.", + "category": "database-management", + "parameters": [ + { + "name": "databaseConnectionString", + "type": "string", + "description": "Connection string for the target database to query user interaction events.", + "required": true, + "defaultValue": "" + }, + { + "name": "conversionEvent", + "type": "string", + "description": "Name of the event that defines a conversion (e.g., 'purchase', 'signup').", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "Start date (ISO 8601) for the analysis period.", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "End date (ISO 8601) for the analysis period.", + "required": true, + "defaultValue": "" + }, + { + "name": "userIdField", + "type": "string", + "description": "Database field name representing the unique user identifier.", + "required": true, + "defaultValue": "" + }, + { + "name": "eventTable", + "type": "string", + "description": "Name of the database table storing event or interaction records.", + "required": true, + "defaultValue": "" + }, + { + "name": "segmentBy", + "type": "array", + "description": "Optional list of database fields to segment conversion data by (e.g., ['deviceType', 'campaignId']).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "conversionFunnelEvents", + "type": "array", + "description": "Optional ordered list of events representing a conversion funnel to analyze stepwise drop-off rates.", + "required": false, + "defaultValue": "[]" + } + ], + "returns": { + "type": "object", + "description": "An object containing overall conversion rate, conversion counts, optionally segmented by specified fields, and funnel step conversion statistics if requested." + }, + "aiAgent": { + "useCase": "Use this tool when you need to extract and analyze conversion metrics from user interaction data stored in a database. Ideal for generating conversion rates for marketing or product analytics, segmenting conversions by dimensions, and understanding funnel progression over a specified timeframe.", + "limitations": "This tool requires the underlying database to contain relevant event data with consistent schema and user identifiers. It does not perform data cleaning or validate event semantics beyond the specified parameters and relies on accurate input for meaningful results.", + "examples": [ + "Generate overall purchase conversion rate for the last month from the event table 'user_events'", + "Analyze signup conversion segmented by device type and campaign over a quarter", + "Calculate stepwise funnel conversion from visit to add_to_cart to purchase events" + ] + }, + "tags": [ + "conversion", + "analytics", + "database", + "user-behavior", + "funnel-analysis", + "segmentation" + ], + "examples": [ + { + "inputJson": "{\"databaseConnectionString\":\"Server=mydb;Database=prod;User Id=admin;Password=secret;\",\"conversionEvent\":\"purchase\",\"startDate\":\"2023-01-01\",\"endDate\":\"2023-01-31\",\"userIdField\":\"user_id\",\"eventTable\":\"user_events\",\"segmentBy\":[],\"conversionFunnelEvents\":[]}", + "description": "Calculate purchase conversion rate in January 2023 from user_events table." + }, + { + "inputJson": "{\"databaseConnectionString\":\"Server=mydb;Database=prod;User Id=admin;Password=secret;\",\"conversionEvent\":\"signup\",\"startDate\":\"2023-04-01\",\"endDate\":\"2023-06-30\",\"userIdField\":\"user_id\",\"eventTable\":\"user_events\",\"segmentBy\":[\"device_type\",\"campaign_id\"],\"conversionFunnelEvents\":[]}", + "description": "Generate signup conversion segmented by device and campaign for Q2 2023." + }, + { + "inputJson": "{\"databaseConnectionString\":\"Server=mydb;Database=prod;User Id=admin;Password=secret;\",\"conversionEvent\":\"purchase\",\"startDate\":\"2023-05-01\",\"endDate\":\"2023-05-31\",\"userIdField\":\"user_id\",\"eventTable\":\"user_events\",\"segmentBy\":[],\"conversionFunnelEvents\":[\"visit\",\"add_to_cart\",\"purchase\"]}", + "description": "Calculate funnel conversion from visit to purchase for May 2023." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Conversion", + "context": null + } + }, + { + "name": "database-management.generateGraph", + "description": "Generates a data visualization graph from database query results. Accepts a SQL query, fetches corresponding data from the specified database, processes it into a structured format, and produces a graphical data representation such as bar chart, line chart, or pie chart in SVG or PNG format. Supports customizable graph types, labels, and styling options.", + "category": "database-management", + "parameters": [ + { + "name": "databaseConnectionString", + "type": "string", + "description": "Connection string used to connect to the target database (required to fetch data)", + "required": true, + "defaultValue": "" + }, + { + "name": "query", + "type": "string", + "description": "SQL query string to retrieve data, must return data suitable for graphing (e.g., categorical and numerical columns)", + "required": true, + "defaultValue": "" + }, + { + "name": "graphType", + "type": "string", + "description": "Type of graph to generate. Supported types: bar, line, pie, scatter", + "required": true, + "defaultValue": "bar" + }, + { + "name": "title", + "type": "string", + "description": "Optional title to display on the generated graph", + "required": false, + "defaultValue": "" + }, + { + "name": "xAxisLabel", + "type": "string", + "description": "Label for the X axis of the graph", + "required": false, + "defaultValue": "" + }, + { + "name": "yAxisLabel", + "type": "string", + "description": "Label for the Y axis of the graph", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Output image format for the graph: svg or png", + "required": false, + "defaultValue": "svg" + }, + { + "name": "width", + "type": "number", + "description": "Width of the generated graph image in pixels", + "required": false, + "defaultValue": "800" + }, + { + "name": "height", + "type": "number", + "description": "Height of the generated graph image in pixels", + "required": false, + "defaultValue": "600" + } + ], + "returns": { + "type": "object", + "description": "An object containing the graph image encoded as a base64 string along with metadata such as image format and graph type" + }, + "aiAgent": { + "useCase": "Use this tool when you need to visualize database query results as graphs for reporting, dashboards, or data analysis. Especially useful when the raw data is large or complex and a graphical summary is desired. The agent should provide a valid query and specify graph preferences.", + "limitations": "Cannot interpret queries returning non-tabular or unsuitable data for graphs. Does not support complex custom visualizations like interactive charts or multi-axis graphs. Relies on database connectivity and correct query syntax.", + "examples": [ + "Generate a bar chart for monthly sales totals from sales database", + "Create a pie chart representing market share by product category", + "Produce a line chart showing stock prices over time" + ] + }, + "tags": [ + "database", + "graph", + "visualization", + "data-analysis", + "reporting", + "SQL", + "chart" + ], + "examples": [ + { + "inputJson": "{\"databaseConnectionString\":\"Server=myServerAddress;Database=myDB;User Id=user;Password=pass;\",\"query\":\"SELECT month, total_sales FROM sales_data ORDER BY month\",\"graphType\":\"bar\",\"title\":\"Monthly Sales\",\"xAxisLabel\":\"Month\",\"yAxisLabel\":\"Total Sales\",\"outputFormat\":\"png\",\"width\":1024,\"height\":768}", + "description": "Generate a PNG bar chart of monthly sales data from the sales_data table." + }, + { + "inputJson": "{\"databaseConnectionString\":\"Server=myServerAddress;Database=myDB;User Id=user;Password=pass;\",\"query\":\"SELECT category, SUM(quantity) as total_quantity FROM products GROUP BY category\",\"graphType\":\"pie\",\"title\":\"Product Category Distribution\",\"outputFormat\":\"svg\"}", + "description": "Create an SVG pie chart showing total quantity by product category." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Graph", + "context": null + } + }, + { + "name": "database-management.generateAnomaly", + "description": "Generates anomaly detection results by analyzing specified database tables using configurable detection algorithms. Accepts input parameters including database connection details, target tables, anomaly detection method, and sensitivity thresholds. Processes data to identify unusual patterns or outliers and outputs detailed anomaly reports and summary statistics.", + "category": "database-management", + "parameters": [ + { + "name": "connectionString", + "type": "string", + "description": "Database connection string to access the target database.", + "required": true, + "defaultValue": "" + }, + { + "name": "tables", + "type": "array", + "description": "List of database table names to analyze for anomalies.", + "required": true, + "defaultValue": "" + }, + { + "name": "detectionMethod", + "type": "string", + "description": "Choice of anomaly detection algorithm to apply (e.g., 'statistical', 'machineLearning').", + "required": false, + "defaultValue": "statistical" + }, + { + "name": "sensitivity", + "type": "number", + "description": "Sensitivity threshold for anomaly detection, ranging from 0 (low sensitivity) to 1 (high sensitivity).", + "required": false, + "defaultValue": "0.75" + }, + { + "name": "timeRange", + "type": "object", + "description": "Optional start and end timestamps to filter data by a specific time range. Format: {start: 'YYYY-MM-DD', end: 'YYYY-MM-DD'}.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeDetails", + "type": "boolean", + "description": "Whether to include detailed anomaly data points in the output report.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing anomaly detection summary, including detected anomalies per table, severity scores, timestamps, and optionally detailed anomaly records." + }, + "aiAgent": { + "useCase": "Use this tool when needing to automatically identify unusual or suspicious data patterns in one or more database tables, such as detecting fraud, data quality issues, or performance anomalies. It is suitable for periodic monitoring or detailed investigation of data irregularities using configurable algorithms.", + "limitations": "This tool does not modify database data and cannot perform predictive maintenance or root cause analysis beyond flagging anomalies.", + "examples": [ + "Detect anomalies in sales and inventory tables for the last month with medium sensitivity.", + "Find unusual activity patterns in user logs using machine learning detection method.", + "Generate detailed anomaly reports for performance metrics over a specified time range." + ] + }, + "tags": [ + "database", + "anomaly-detection", + "analytics", + "data-quality", + "monitoring" + ], + "examples": [ + { + "inputJson": "{\"connectionString\":\"Server=myServer;Database=myDB;User Id=myUser;Password=myPass;\",\"tables\":[\"sales\",\"inventory\"],\"detectionMethod\":\"statistical\",\"sensitivity\":0.7,\"timeRange\":{\"start\":\"2024-01-01\",\"end\":\"2024-01-31\"},\"includeDetails\":true}", + "description": "Detect anomalies in sales and inventory tables from January 2024 with a statistical method and medium sensitivity." + }, + { + "inputJson": "{\"connectionString\":\"Server=prodDb;Database=analytics;User Id=admin;Password=secure123;\",\"tables\":[\"user_logs\"],\"detectionMethod\":\"machineLearning\",\"sensitivity\":0.8,\"includeDetails\":false}", + "description": "Find anomalies in user_logs table using machine learning detection with high sensitivity, excluding detailed anomaly data." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Anomaly", + "context": null + } + }, + { + "name": "database-management.generateQuote", + "description": "Generates a motivational or business-related quote based on the specified category and optional author filter. Accepts category and optional author as inputs, retrieves quotes from the database matching the criteria, and outputs a single quote with author and category information.", + "category": "database-management", + "parameters": [ + { + "name": "category", + "type": "string", + "description": "The category of quotes to generate (e.g., 'motivation', 'business', 'wisdom').", + "required": true, + "defaultValue": "" + }, + { + "name": "author", + "type": "string", + "description": "Optional author name to filter quotes by a specific author.", + "required": false, + "defaultValue": "" + }, + { + "name": "maxLength", + "type": "number", + "description": "Optional maximum length of the generated quote in characters.", + "required": false, + "defaultValue": "200" + } + ], + "returns": { + "type": "object", + "description": "An object containing the quote text, author, and category." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to provide a relevant, categorized quote from a database for motivational, educational, or business contexts. It is helpful to retrieve quotes matching certain themes or authors during presentations, reports, or communications.", + "limitations": "Cannot generate original quotes; only retrieves existing quotes from the database. The quality depends on the database content and availability of quotes matching filters.", + "examples": [ + "Generate a motivational quote to inspire the team.", + "Provide a business quote by Steve Jobs.", + "Find a wisdom quote no longer than 100 characters." + ] + }, + "tags": [ + "database", + "quote", + "generation", + "motivational", + "business", + "inspiration" + ], + "examples": [ + { + "inputJson": "{\"category\":\"motivation\"}", + "description": "Generate a random motivational quote with no specific author." + }, + { + "inputJson": "{\"category\":\"business\",\"author\":\"Steve Jobs\"}", + "description": "Generate a business quote by Steve Jobs." + }, + { + "inputJson": "{\"category\":\"wisdom\",\"maxLength\":100}", + "description": "Generate a wisdom quote no longer than 100 characters." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Quote", + "context": null + } + }, + { + "name": "database-management.generateReadme", + "description": "Generates a comprehensive README markdown document for a given database schema. Accepts schema details including tables, fields, data types, and relationships, and creates human-readable documentation that outlines the database structure, usage examples, and connection information.", + "category": "database-management", + "parameters": [ + { + "name": "databaseName", + "type": "string", + "description": "The name of the database to document.", + "required": true, + "defaultValue": "" + }, + { + "name": "schema", + "type": "object", + "description": "An object describing the database schema: tables, columns, data types, primary/foreign keys, and relationships.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeExamples", + "type": "boolean", + "description": "Whether to include sample queries or usage examples in the README.", + "required": false, + "defaultValue": "false" + }, + { + "name": "connectionInfo", + "type": "object", + "description": "Optional object containing connection parameters like host, port, user, and database to include in the README.", + "required": false, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the generated documentation. Currently supports 'markdown'.", + "required": false, + "defaultValue": "markdown" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated README content as a string in the specified format." + }, + "aiAgent": { + "useCase": "Use this tool when needing to automatically generate clear, structured documentation for a database schema, facilitating developer onboarding, maintenance, and knowledge sharing. This is useful after designing or updating a database schema to keep documentation in sync.", + "limitations": "The tool cannot generate documentation for database behavior outside the schema (e.g., stored procedures, performance tuning) and does not connect to the database to extract live schema info; it requires schema input provided explicitly.", + "examples": [ + "Generate a README document for a new e-commerce database schema including tables, fields, and relationships.", + "Create documentation that includes connection details and sample SQL queries for accessing the data.", + "Produce a markdown README for a legacy database schema to aid new developers in understanding the structure." + ] + }, + "tags": [ + "documentation", + "database", + "schema", + "readme", + "markdown", + "database-management", + "db-schema" + ], + "examples": [ + { + "inputJson": "{\"databaseName\":\"EcommerceDB\",\"schema\":{\"tables\":[{\"name\":\"users\",\"columns\":[{\"name\":\"id\",\"type\":\"integer\",\"primaryKey\":true},{\"name\":\"email\",\"type\":\"string\"},{\"name\":\"password\",\"type\":\"string\"}]},{\"name\":\"orders\",\"columns\":[{\"name\":\"order_id\",\"type\":\"integer\",\"primaryKey\":true},{\"name\":\"user_id\",\"type\":\"integer\",\"foreignKey\":{\"table\":\"users\",\"column\":\"id\"}},{\"name\":\"amount\",\"type\":\"decimal\"}]}]},\"includeExamples\":true,\"connectionInfo\":{\"host\":\"localhost\",\"port\":5432,\"user\":\"admin\",\"database\":\"EcommerceDB\"},\"outputFormat\":\"markdown\"}", + "description": "Generate README for a simple e-commerce database including connection info and example queries." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Readme", + "context": null + } + }, + { + "name": "database-management.generateYAML", + "description": "Generates a YAML representation of database schema or query results. Accepts JSON input describing database tables, columns, and optionally data rows or query output, then converts this structured data into formatted YAML for configuration, documentation, or data exchange purposes.", + "category": "database-management", + "parameters": [ + { + "name": "inputData", + "type": "object", + "description": "JSON object representing the database schema or query results to be converted into YAML format.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeDataRows", + "type": "boolean", + "description": "Whether to include actual data rows from query results in the YAML output.", + "required": false, + "defaultValue": "false" + }, + { + "name": "indentationSpaces", + "type": "number", + "description": "Number of spaces to use for YAML indentation formatting (commonly 2 or 4).", + "required": false, + "defaultValue": "2" + }, + { + "name": "useExplicitTypes", + "type": "boolean", + "description": "Whether to include explicit YAML data type tags for keys and values in the output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated YAML string representation under the 'yamlString' key." + }, + "aiAgent": { + "useCase": "Use this tool when you need to convert structured database schema definitions or query output data from JSON format into a human-readable YAML format. This is useful for generating configuration files, documentation, or exchanging data between systems that utilize YAML.", + "limitations": "This tool does not connect to databases or execute queries by itself. It only converts provided JSON structured data into YAML format. It cannot validate the correctness of the database schema or query results data input.", + "examples": [ + "Convert JSON schema of tables and columns into YAML for documentation.", + "Generate YAML config file representing database schema details from a JSON object.", + "Transform JSON query result set including some data rows into a YAML formatted output." + ] + }, + "tags": [ + "database", + "yaml", + "schema", + "query", + "export", + "format-conversion" + ], + "examples": [ + { + "inputJson": "{\"inputData\":{\"tables\":[{\"name\":\"users\",\"columns\":[{\"name\":\"id\",\"type\":\"integer\"},{\"name\":\"email\",\"type\":\"string\"},{\"name\":\"created_at\",\"type\":\"datetime\"}]}]},\"includeDataRows\":false,\"indentationSpaces\":2,\"useExplicitTypes\":false}", + "description": "Convert a simple JSON database schema with table and columns into YAML format without including data rows." + }, + { + "inputJson": "{\"inputData\":{\"tables\":[{\"name\":\"products\",\"columns\":[{\"name\":\"product_id\",\"type\":\"integer\"},{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"price\",\"type\":\"float\"}],\"rows\":[{\"product_id\":1,\"name\":\"Laptop\",\"price\":899.99},{\"product_id\":2,\"name\":\"Mouse\",\"price\":19.99}]}]},\"includeDataRows\":true,\"indentationSpaces\":4,\"useExplicitTypes\":true}", + "description": "Generate YAML including schema and data rows with explicit data types and 4-space indentation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "YAML", + "context": null + } + }, + { + "name": "database-management.generateTemplate", + "description": "Generates a customizable SQL query template or database schema template based on provided table name, columns, and optional constraints. Accepts table structure inputs and outputs a formatted template to help users quickly create or document database structures.", + "category": "database-management", + "parameters": [ + { + "name": "tableName", + "type": "string", + "description": "Name of the database table to generate the template for.", + "required": true, + "defaultValue": "" + }, + { + "name": "columns", + "type": "array", + "description": "List of column definitions including name and data type, and optional constraints.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeConstraints", + "type": "boolean", + "description": "Whether to include common constraints (e.g., primary key, foreign key) annotations in the template.", + "required": false, + "defaultValue": "true" + }, + { + "name": "templateType", + "type": "string", + "description": "Type of template to generate: 'createTable' for SQL CREATE TABLE statement, or 'doc' for a documentation-style schema template.", + "required": false, + "defaultValue": "createTable" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated template as a string along with metadata about the template type and included elements." + }, + "aiAgent": { + "useCase": "Use this tool when needing to quickly generate database table schema templates or SQL CREATE TABLE statements based on specified table structure inputs. It helps automate the creation of reusable, clear database definitions for documentation or initial schema setup.", + "limitations": "This tool does not connect to any actual database or verify existing schema states. It cannot generate complex database-wide schema relations or migration scripts beyond a single table template.", + "examples": [ + "Generate a CREATE TABLE SQL template for a user table with id, name, and email columns.", + "Create a documentation style template for a product table specifying columns and data types without SQL syntax.", + "Generate a SQL template including primary key constraint for an orders table." + ] + }, + "tags": [ + "database", + "template", + "schema", + "SQL", + "table", + "automation", + "documentation" + ], + "examples": [ + { + "inputJson": "{\"tableName\":\"users\",\"columns\":[{\"name\":\"id\",\"type\":\"INT\"},{\"name\":\"username\",\"type\":\"VARCHAR(50)\"},{\"name\":\"email\",\"type\":\"VARCHAR(100)\"}],\"includeConstraints\":true,\"templateType\":\"createTable\"}", + "description": "Generate SQL CREATE TABLE template including constraints for a users table with id, username, and email columns." + }, + { + "inputJson": "{\"tableName\":\"products\",\"columns\":[{\"name\":\"product_id\",\"type\":\"INT\"},{\"name\":\"product_name\",\"type\":\"VARCHAR(100)\"},{\"name\":\"price\",\"type\":\"DECIMAL(10,2)\"}],\"includeConstraints\":false,\"templateType\":\"doc\"}", + "description": "Generate a documentation-style schema template for products table without constraints." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Template", + "context": null + } + }, + { + "name": "database-management.generateBlogPost", + "description": "Generates a formatted blog post document using specified database content and metadata. Accepts parameters like topic, author, key points, and optional database query to enrich content. Outputs a structured blog post with title, body, metadata suitable for CMS or publishing.", + "category": "database-management", + "parameters": [ + { + "name": "topic", + "type": "string", + "description": "Main topic or title of the blog post to generate.", + "required": true, + "defaultValue": "" + }, + { + "name": "author", + "type": "string", + "description": "Name of the author of the blog post.", + "required": false, + "defaultValue": "" + }, + { + "name": "keyPoints", + "type": "array", + "description": "List of key points or sections to include in the blog post, guiding the content structure.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "databaseQuery", + "type": "string", + "description": "Optional SQL query string to fetch related data from a connected database for content enrichment.", + "required": false, + "defaultValue": "" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length (in words) of the generated blog post content.", + "required": false, + "defaultValue": "1000" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "Whether to include a summary section at the beginning of the blog post.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Returns a blog post object containing title, author, date, summary, content sections, and metadata for publishing." + }, + "aiAgent": { + "useCase": "Use this tool when needing to automatically produce a structured blog post derived from database contents and specified highlights. Ideal for content automation in CMS or publishing workflows where input parameters define focus and depth.", + "limitations": "Cannot guarantee stylistic consistency or deep creativity in writing; output quality depends on input completeness. Database query execution is limited to predefined schemas and permissions.", + "examples": [ + "Generate a blog post about 'AI in Healthcare' authored by 'Jane Doe' including key points about benefits and challenges.", + "Create a blog post with topic 'Quarterly Sales Report' using a SQL query to retrieve sales data from the database.", + "Produce a summarized blog post about 'Cloud Security' without specifying an author but including main key points." + ] + }, + "tags": [ + "database", + "blog", + "content-generation", + "automation", + "CMS", + "document" + ], + "examples": [ + { + "inputJson": "{\"topic\":\"AI in Healthcare\",\"author\":\"Jane Doe\",\"keyPoints\":[\"Benefits\",\"Challenges\",\"Future Trends\"],\"databaseQuery\":\"SELECT * FROM health_ai_data WHERE year=2023;\",\"maxLength\":1200,\"includeSummary\":true}", + "description": "Generate a detailed blog post about AI in Healthcare using provided data and key points." + }, + { + "inputJson": "{\"topic\":\"Quarterly Sales Report\",\"author\":\"\",\"keyPoints\":[],\"databaseQuery\":\"SELECT region, total_sales FROM sales WHERE quarter='Q1';\",\"maxLength\":800,\"includeSummary\":false}", + "description": "Create a blog post summarizing Q1 sales using a database query, without an author or summary section." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "BlogPost", + "context": null + } + }, + { + "name": "database-management.createCache", + "description": "Creates a cache layer for a specified database query or dataset to improve read performance. Accepts database connection details, a query or table name to cache, cache expiration time, and cache storage options. Returns cache configuration details including cache ID, status, and expiry.", + "category": "database-management", + "parameters": [ + { + "name": "databaseType", + "type": "string", + "description": "Type of the database (e.g., MySQL, PostgreSQL, MongoDB) to connect and cache from", + "required": true, + "defaultValue": "" + }, + { + "name": "connectionString", + "type": "string", + "description": "Database connection string or URI to access the database", + "required": true, + "defaultValue": "" + }, + { + "name": "query", + "type": "string", + "description": "The SQL query or dataset identifier to cache", + "required": false, + "defaultValue": "" + }, + { + "name": "tableName", + "type": "string", + "description": "Name of the database table to cache if caching entire table; mutually exclusive with query", + "required": false, + "defaultValue": "" + }, + { + "name": "cacheExpirySeconds", + "type": "number", + "description": "Time in seconds before the cache expires and refreshes", + "required": false, + "defaultValue": "3600" + }, + { + "name": "cacheStorage", + "type": "string", + "description": "Type of cache storage to use (e.g., Redis, Memcached, in-memory)", + "required": false, + "defaultValue": "in-memory" + }, + { + "name": "maxCacheSizeMB", + "type": "number", + "description": "Maximum size of the cache in megabytes", + "required": false, + "defaultValue": "100" + }, + { + "name": "autoRefresh", + "type": "boolean", + "description": "Whether the cache should automatically refresh upon expiration", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object describing the created cache including cacheId, status (active/failed), expiry time, and statistics like size and hit rate" + }, + "aiAgent": { + "useCase": "Use this tool when you need to optimize database read performance by creating a cache for frequently accessed queries or tables. It helps reduce database load and accelerates data retrieval in applications or systems that support caching layers.", + "limitations": "This tool does not perform actual query optimization or database tuning; it only manages caching. It cannot handle write-through or write-back caching strategies inherently and assumes read-only cache use cases.", + "examples": [ + "Create a cache for the sales table in a PostgreSQL database to improve dashboard performance.", + "Cache the result of a complex SQL query on MySQL with a 2-hour expiry for analytics.", + "Set up an in-memory cache for MongoDB collection data with auto-refresh enabled." + ] + }, + "tags": [ + "database", + "cache", + "performance", + "query-optimization", + "infrastructure" + ], + "examples": [ + { + "inputJson": "{\"databaseType\":\"PostgreSQL\",\"connectionString\":\"postgresql://user:pass@host:5432/dbname\",\"tableName\":\"sales\",\"cacheExpirySeconds\":7200,\"cacheStorage\":\"Redis\",\"maxCacheSizeMB\":500,\"autoRefresh\":true}", + "description": "Create a Redis cache for the entire 'sales' table in PostgreSQL with 2-hour expiry and auto refresh enabled." + }, + { + "inputJson": "{\"databaseType\":\"MySQL\",\"connectionString\":\"mysql://user:pass@host:3306/dbname\",\"query\":\"SELECT * FROM orders WHERE status = 'pending'\",\"cacheExpirySeconds\":1800,\"cacheStorage\":\"Memcached\",\"maxCacheSizeMB\":200,\"autoRefresh\":false}", + "description": "Create a Memcached cache for a specific query on MySQL with 30 minutes expiry and no auto refresh." + }, + { + "inputJson": "{\"databaseType\":\"MongoDB\",\"connectionString\":\"mongodb://user:pass@host:27017/dbname\",\"tableName\":\"customers\",\"cacheExpirySeconds\":3600,\"cacheStorage\":\"in-memory\",\"maxCacheSizeMB\":100,\"autoRefresh\":true}", + "description": "Create an in-memory cache for the 'customers' collection in MongoDB with 1-hour expiry and auto refresh enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Cache", + "context": null + } + }, + { + "name": "database-management.createExpense", + "description": "Creates a new expense record in the database with details such as amount, date, category, description, and associated metadata. Accepts structured input parameters, validates required fields, and returns the created expense object including its unique ID and timestamps.", + "category": "database-management", + "parameters": [ + { + "name": "amount", + "type": "number", + "description": "The monetary amount of the expense, required and must be positive.", + "required": true, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "The currency code (ISO 4217) for the expense amount, e.g., 'USD'. Defaults to 'USD'.", + "required": false, + "defaultValue": "USD" + }, + { + "name": "date", + "type": "string", + "description": "The date when the expense occurred in ISO 8601 format (YYYY-MM-DD), required.", + "required": true, + "defaultValue": "" + }, + { + "name": "category", + "type": "string", + "description": "The expense category such as 'Travel', 'Meals', or 'Office Supplies', required.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional detailed description or notes about the expense.", + "required": false, + "defaultValue": "" + }, + { + "name": "paymentMethod", + "type": "string", + "description": "Optional payment method used like 'Credit Card', 'Cash', or 'Bank Transfer'.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional metadata as key-value pairs related to the expense.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "An object representing the newly created expense record including unique ID, input fields, creation and update timestamps." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to record or log a new business expense into a database system, ensuring structured data entry and persistent storage for financial tracking. Ideal for automating bookkeeping or expense reporting workflows.", + "limitations": "Does not perform currency conversion, approval workflows, or complex validation beyond required fields and basic formatting. Relies on external database to be available and correctly configured.", + "examples": [ + "Create an expense for a business lunch: amount 45.50, currency USD, date 2024-06-10, category Meals, description 'Lunch with client'.", + "Log a travel expense of 300 EUR on 2024-05-30 under category Travel with payment method 'Credit Card'.", + "Add an office supplies purchase costing 123.99 USD, dated 2024-06-01, and include metadata with vendor name 'Staples' and receipt number." + ] + }, + "tags": [ + "database", + "expense", + "create", + "financial", + "business", + "record", + "transaction" + ], + "examples": [ + { + "inputJson": "{\"amount\":45.50,\"currency\":\"USD\",\"date\":\"2024-06-10\",\"category\":\"Meals\",\"description\":\"Lunch with client\"}", + "description": "Create an expense record for a business lunch." + }, + { + "inputJson": "{\"amount\":300,\"currency\":\"EUR\",\"date\":\"2024-05-30\",\"category\":\"Travel\",\"paymentMethod\":\"Credit Card\"}", + "description": "Log a travel expense paid by credit card." + }, + { + "inputJson": "{\"amount\":123.99,\"currency\":\"USD\",\"date\":\"2024-06-01\",\"category\":\"Office Supplies\",\"metadata\":{\"vendor\":\"Staples\",\"receiptNumber\":\"A12345\"}}", + "description": "Add office supplies purchase with extra metadata." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Expense", + "context": null + } + }, + { + "name": "database-management.createConversion", + "description": "Creates a database conversion report by analyzing raw event and user data to calculate key conversion metrics over a specified time range. Inputs include source database connection, conversion funnel steps, and filters. Outputs structured conversion metrics for further analysis.", + "category": "database-management", + "parameters": [ + { + "name": "sourceDatabase", + "type": "string", + "description": "Connection string or identifier for the source database containing event and user data", + "required": true, + "defaultValue": "" + }, + { + "name": "conversionSteps", + "type": "array", + "description": "Ordered list of events or user actions defining the conversion funnel steps", + "required": true, + "defaultValue": "[]" + }, + { + "name": "startDate", + "type": "string", + "description": "Starting date (inclusive) for the data analysis in ISO format (YYYY-MM-DD)", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "Ending date (inclusive) for the data analysis in ISO format (YYYY-MM-DD)", + "required": true, + "defaultValue": "" + }, + { + "name": "userFilters", + "type": "object", + "description": "Optional filters to apply on user segments, e.g., demographics or cohorts", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeDropOffRates", + "type": "boolean", + "description": "Whether to compute drop-off rates between funnel steps", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing computed conversion metrics such as counts per funnel step, conversion rates between steps, and optional drop-off statistics" + }, + "aiAgent": { + "useCase": "Use this tool when building analytics dashboards or reports that require calculating conversion rates and funnel analysis directly from raw database event data. It helps in automating the extraction and computation of key performance indicators related to user conversions.", + "limitations": "This tool assumes the source database schema includes event or action logs with timestamps; it does not perform data cleaning or schema inference and requires correct input parameters.", + "examples": [ + "Create a conversion report from my event database showing signup to purchase funnel for last month.", + "Calculate funnel conversion rates for user onboarding steps filtered by a specific user segment.", + "Generate drop-off rates for ecommerce funnel steps from the analytics database between specific dates." + ] + }, + "tags": [ + "database", + "conversion", + "analytics", + "funnels", + "reporting", + "metrics" + ], + "examples": [ + { + "inputJson": "{\"sourceDatabase\":\"postgresql://user:password@host:5432/eventsdb\",\"conversionSteps\":[\"landing_page_view\",\"signup\",\"email_confirmed\",\"purchase\"],\"startDate\":\"2024-01-01\",\"endDate\":\"2024-01-31\",\"userFilters\":{\"country\":\"US\"},\"includeDropOffRates\":true}", + "description": "Calculate conversion funnel in January 2024 for US users from landing page view to purchase." + }, + { + "inputJson": "{\"sourceDatabase\":\"mysql://user:pass@localhost:3306/appdb\",\"conversionSteps\":[\"app_start\",\"feature_used\",\"subscription_started\"],\"startDate\":\"2024-04-01\",\"endDate\":\"2024-04-30\",\"userFilters\":{},\"includeDropOffRates\":false}", + "description": "Generate conversion metrics for app usage funnel in April 2024 without drop-off rates." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Conversion", + "context": null + } + }, + { + "name": "database-management.createCertificate", + "description": "Creates a new SSL/TLS certificate entry in the database to manage security credentials. Accepts certificate data such as common name, issuer, validity period, and public key, then stores this certificate metadata securely. Returns confirmation including certificate ID and status.", + "category": "database-management", + "parameters": [ + { + "name": "commonName", + "type": "string", + "description": "The common name (CN) for the certificate, typically a domain name or entity name.", + "required": true, + "defaultValue": "" + }, + { + "name": "issuer", + "type": "string", + "description": "The name of the certificate authority issuing the certificate.", + "required": true, + "defaultValue": "" + }, + { + "name": "validFrom", + "type": "string", + "description": "The start date of the certificate validity period in ISO 8601 format.", + "required": true, + "defaultValue": "" + }, + { + "name": "validTo", + "type": "string", + "description": "The end date of the certificate validity period in ISO 8601 format.", + "required": true, + "defaultValue": "" + }, + { + "name": "publicKey", + "type": "string", + "description": "The public key associated with the certificate, in PEM or DER format as a string.", + "required": true, + "defaultValue": "" + }, + { + "name": "serialNumber", + "type": "string", + "description": "Unique serial number assigned to the certificate.", + "required": true, + "defaultValue": "" + }, + { + "name": "certificateType", + "type": "string", + "description": "Type of the certificate (e.g., SSL, CodeSigning, ClientAuth).", + "required": false, + "defaultValue": "SSL" + } + ], + "returns": { + "type": "object", + "description": "An object containing the stored certificate ID, a status message, and optionally error details if creation failed." + }, + "aiAgent": { + "useCase": "Use this tool when needing to store security certificate metadata in a database system for management, tracking, or validation purposes during security and identity workflows. It is relevant for applications managing certificate inventories or automating TLS certificate lifecycle.", + "limitations": "This tool only stores certificate metadata; it does not generate actual cryptographic keys or sign certificates.", + "examples": [ + "Create a new SSL certificate entry for domain example.com with validity for one year.", + "Store a client authentication certificate's metadata after receiving it from a certificate authority.", + "Update the database by adding a new code signing certificate record for auditing." + ] + }, + "tags": [ + "database", + "security", + "certificate", + "ssl", + "tls", + "management", + "metadata" + ], + "examples": [ + { + "inputJson": "{\"commonName\":\"example.com\",\"issuer\":\"Example CA\",\"validFrom\":\"2024-01-01T00:00:00Z\",\"validTo\":\"2025-01-01T00:00:00Z\",\"publicKey\":\"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkq...\\n-----END PUBLIC KEY-----\",\"serialNumber\":\"1234567890ABCDEF\",\"certificateType\":\"SSL\"}", + "description": "Create an SSL certificate entry for example.com valid for one year from 2024-01-01." + }, + { + "inputJson": "{\"commonName\":\"client.user1\",\"issuer\":\"Example CA\",\"validFrom\":\"2024-05-01T00:00:00Z\",\"validTo\":\"2026-05-01T00:00:00Z\",\"publicKey\":\"-----BEGIN PUBLIC KEY-----\\nMIICIjANBgkq...\\n-----END PUBLIC KEY-----\",\"serialNumber\":\"ABCDEF1234567890\",\"certificateType\":\"ClientAuth\"}", + "description": "Store a client authentication certificate's metadata valid for two years." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Certificate", + "context": null + } + }, + { + "name": "database-management.createChannel", + "description": "Creates a new communication channel entry in the database with specified attributes such as name, type, permissions, and metadata. Accepts channel details as input, processes validations, stores the channel record, and returns the created channel's unique identifier and details.", + "category": "database-management", + "parameters": [ + { + "name": "channelName", + "type": "string", + "description": "The unique name identifier for the channel to create", + "required": true, + "defaultValue": "" + }, + { + "name": "channelType", + "type": "string", + "description": "Type of the channel, e.g., 'public', 'private', or 'encrypted'", + "required": true, + "defaultValue": "" + }, + { + "name": "permissions", + "type": "object", + "description": "An object defining access permissions for the channel (e.g., roles allowed)", + "required": false, + "defaultValue": "{}" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional metadata associated with the channel such as description or tags", + "required": false, + "defaultValue": "{}" + }, + { + "name": "createdBy", + "type": "string", + "description": "User ID or identifier for the channel creator", + "required": true, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the unique channel ID, name, type, permissions, metadata, creator, and creation timestamp" + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create a new communication channel record in a database system, such as setting up new chat rooms, notification streams, or topic channels with specific access controls and metadata. It supports managing channel lifecycle by providing standard attributes required for channel management in multi-user systems.", + "limitations": "This tool does not establish real-time communication protocols or messaging infrastructure; it only creates and stores channel metadata in the database. Integration with messaging services and user notification is outside its scope.", + "examples": [ + "Create a public channel named 'general' accessible to all users", + "Create a private channel named 'dev-team' restricted to team members", + "Create an encrypted channel for sensitive communications with custom metadata" + ] + }, + "tags": [ + "database", + "channel management", + "communication", + "create", + "permissions", + "metadata" + ], + "examples": [ + { + "inputJson": "{\"channelName\":\"general\",\"channelType\":\"public\",\"permissions\":{},\"metadata\":{\"description\":\"General discussion channel\"},\"createdBy\":\"user123\"}", + "description": "Create a public channel named 'general' with a description and no special permissions." + }, + { + "inputJson": "{\"channelName\":\"dev-team\",\"channelType\":\"private\",\"permissions\":{\"roles\":[\"developer\",\"manager\"]},\"metadata\":{\"description\":\"Development team discussions\"},\"createdBy\":\"user456\"}", + "description": "Create a private channel for the development team with restricted access based on roles." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Channel", + "context": null + } + }, + { + "name": "database-management.createDiagram", + "description": "Generates a visual Entity-Relationship Diagram (ERD) for a specified database schema. Accepts database connection details and optional customization parameters, processes the schema metadata, and outputs a diagram file (SVG/PNG) or JSON representation of the diagram structure for further use or visualization.", + "category": "database-management", + "parameters": [ + { + "name": "dbType", + "type": "string", + "description": "Type of the database (e.g., mysql, postgres, oracle) to connect and extract schema from.", + "required": true, + "defaultValue": "" + }, + { + "name": "connectionString", + "type": "string", + "description": "Database connection string or URL to access the target database.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeTables", + "type": "array", + "description": "Optional list of table names to include in the diagram; if empty, all tables are included.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "excludeTables", + "type": "array", + "description": "Optional list of table names to exclude from the diagram.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format of the diagram: 'svg', 'png', or 'json'.", + "required": false, + "defaultValue": "svg" + }, + { + "name": "showIndexes", + "type": "boolean", + "description": "Whether to include index information on the diagram.", + "required": false, + "defaultValue": "true" + }, + { + "name": "showColumnTypes", + "type": "boolean", + "description": "Whether to display column data types in the diagram.", + "required": false, + "defaultValue": "true" + }, + { + "name": "diagramTitle", + "type": "string", + "description": "Optional title text to display at the top of the diagram.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the diagram in the specified format as a base64 string or as structured JSON, plus metadata about included tables and relationships." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to visualize a relational database schema clearly, such as for documentation, analysis, or communication with development teams. It helps in generating ER diagrams automatically from live databases without manual diagram construction.", + "limitations": "Cannot modify or alter database schema; depends on database connectivity and permissions; complex or very large schemas may result in crowded diagrams; does not support non-relational databases.", + "examples": [ + "Create an ER diagram in PNG format from a PostgreSQL database connection.", + "Generate a JSON object representing the schema diagram for inclusion in a documentation system.", + "Produce an SVG ER diagram including only specific tables for a MySQL database." + ] + }, + "tags": [ + "database", + "diagram", + "ERD", + "schema-visualization", + "database-management", + "visualization", + "documentation" + ], + "examples": [ + { + "inputJson": "{\"dbType\":\"postgres\",\"connectionString\":\"postgresql://user:pass@localhost:5432/mydb\",\"outputFormat\":\"png\",\"diagramTitle\":\"Customer DB Schema\"}", + "description": "Generate a PNG ER diagram for a PostgreSQL database with a custom title." + }, + { + "inputJson": "{\"dbType\":\"mysql\",\"connectionString\":\"mysql://user:pass@localhost/mydb\",\"includeTables\":[\"users\",\"orders\"],\"excludeTables\":[],\"outputFormat\":\"svg\",\"showIndexes\":false}", + "description": "Create an SVG diagram for MySQL including only 'users' and 'orders' tables without index info." + }, + { + "inputJson": "{\"dbType\":\"oracle\",\"connectionString\":\"oracle://user:pass@host:1521/dbname\",\"outputFormat\":\"json\",\"showColumnTypes\":false}", + "description": "Output a JSON structured diagram for an Oracle database without column types displayed." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Diagram", + "context": null + } + }, + { + "name": "database-management.createGraph", + "description": "Creates a graph data structure representation from given database tables and relationships. Accepts parameters describing nodes and edges, processes relational data into a graph model, and outputs the graph in a standard JSON format suitable for visualization or graph database import.", + "category": "database-management", + "parameters": [ + { + "name": "databaseType", + "type": "string", + "description": "Type of the source database (e.g., 'mysql', 'postgres', 'mongodb').", + "required": true, + "defaultValue": "" + }, + { + "name": "connectionString", + "type": "string", + "description": "Connection string or URI to connect to the source database.", + "required": true, + "defaultValue": "" + }, + { + "name": "nodeTables", + "type": "array", + "description": "List of table names to be treated as nodes in the graph.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "edgeRelations", + "type": "array", + "description": "List of relationship definitions representing edges, each with 'from', 'to', and optionally 'label' fields.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "includeProperties", + "type": "boolean", + "description": "Whether to include node and edge properties in the graph output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "limitRowsPerTable", + "type": "number", + "description": "Maximum number of rows to process per table to limit graph size; 0 means no limit.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An object containing 'nodes' array and 'edges' array representing the created graph data structure in JSON format." + }, + "aiAgent": { + "useCase": "Use this tool when you need to transform relational database schema and data into a graph data model for visualization, analysis, or importing into graph databases. It is ideal for generating node-edge representations from tables and their relationships automatically.", + "limitations": "This tool cannot connect to databases without correct credentials and URI, does not perform data cleaning, and may not support complex or non-relational schemas fully. It doesn't generate visual graphs, only the data structure.", + "examples": [ + "Create a graph from a MySQL database with 'users' and 'orders' tables as nodes connected by foreign keys.", + "Generate a graph model including properties for nodes and edges with a row limit to reduce output size.", + "Build a graph JSON from PostgreSQL database specifying relationships for visualizing the social network." + ] + }, + "tags": [ + "database-management", + "graph-creation", + "relational-to-graph", + "data-visualization", + "graph-structure" + ], + "examples": [ + { + "inputJson": "{\"databaseType\":\"mysql\",\"connectionString\":\"mysql://user:pass@localhost:3306/shopdb\",\"nodeTables\":[\"users\",\"orders\"],\"edgeRelations\":[{\"from\":\"users\",\"to\":\"orders\",\"label\":\"placed\"}],\"includeProperties\":true,\"limitRowsPerTable\":100}", + "description": "Create a graph JSON from 'users' and 'orders' tables in a MySQL database with edges labeled 'placed'." + }, + { + "inputJson": "{\"databaseType\":\"postgres\",\"connectionString\":\"postgresql://admin:1234@localhost:5432/social\",\"nodeTables\":[\"people\",\"friends\"],\"edgeRelations\":[{\"from\":\"people\",\"to\":\"people\",\"label\":\"friend_of\"}],\"includeProperties\":false,\"limitRowsPerTable\":0}", + "description": "Generate friend-of relationships graph for 'people' table in PostgreSQL without properties included." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Graph", + "context": null + } + }, + { + "name": "database-management.createAudio", + "description": "This tool accepts structured input data such as text transcripts or audio metadata and creates new audio entries in a database with associated metadata including title, duration, format, and tags. It processes inputs to generate properly formatted audio database records and returns the newly created audio record's ID and status confirmation.", + "category": "database-management", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title of the audio entry to create", + "required": true, + "defaultValue": "" + }, + { + "name": "audioContent", + "type": "string", + "description": "Base64 encoded audio file content or URL reference to audio source", + "required": true, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "The audio file format (e.g., mp3, wav, flac)", + "required": true, + "defaultValue": "" + }, + { + "name": "durationSeconds", + "type": "number", + "description": "Duration of the audio clip in seconds", + "required": false, + "defaultValue": "0" + }, + { + "name": "tags", + "type": "array", + "description": "List of descriptive tags for categorizing the audio", + "required": false, + "defaultValue": "[]" + }, + { + "name": "transcript", + "type": "string", + "description": "Optional text transcript of the audio content", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the created audio record ID, status message, and any validation errors." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to add new audio records into a database by providing audio data and metadata, facilitating media management or cataloging systems. It is suitable for organizing audio assets with searchable metadata and optional transcripts.", + "limitations": "This tool does not perform audio generation or editing, only creates database records for existing audio data. Audio content must be provided as a file or URL; encoding or processing audio beyond metadata storage is out of scope.", + "examples": [ + "Create a new podcast episode audio record including title, mp3 audio data, duration, and transcript.", + "Add an audio clip to the database with tags for music and ambient sound.", + "Store a voice memo audio entry including its text transcript for search purposes." + ] + }, + "tags": [ + "database", + "audio", + "create", + "media-management", + "metadata", + "cataloging" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Morning Podcast Episode 1\",\"audioContent\":\"base64encodedstring...\",\"format\":\"mp3\",\"durationSeconds\":3600,\"tags\":[\"podcast\",\"morning\"],\"transcript\":\"Welcome to the first episode...\"}", + "description": "Creating a new podcast episode audio record with metadata and transcript." + }, + { + "inputJson": "{\"title\":\"Forest Ambience\",\"audioContent\":\"http://example.com/audio/forest.wav\",\"format\":\"wav\",\"durationSeconds\":180,\"tags\":[\"ambient\",\"nature\"]}", + "description": "Adding a nature ambient sound audio clip by URL with tags." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Audio", + "context": null + } + }, + { + "name": "database-management.createTemplate", + "description": "This tool creates a reusable database query template based on user-defined parameters, including the template name, target database type, SQL query with placeholders, and optional metadata. It accepts JSON inputs describing the template structure, validates the SQL syntax against the specified database dialect, and outputs a template ID and details for storage and future querying.", + "category": "database-management", + "parameters": [ + { + "name": "templateName", + "type": "string", + "description": "Name of the query template to identify it uniquely.", + "required": true, + "defaultValue": "" + }, + { + "name": "databaseType", + "type": "string", + "description": "Type of database for which the template is designed (e.g., MySQL, PostgreSQL).", + "required": true, + "defaultValue": "" + }, + { + "name": "sqlQuery", + "type": "string", + "description": "The SQL query string with placeholders for parameters (e.g., ':userId').", + "required": true, + "defaultValue": "" + }, + { + "name": "parametersSchema", + "type": "object", + "description": "JSON schema defining expected parameters and their types for the SQL query placeholders.", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional human-readable description of what the template does.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the created template ID, template name, database type, SQL query, parameters schema, and creation timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically create standardized, reusable SQL query templates that can be stored and executed later with dynamic parameters, ensuring consistency across database queries and facilitating automation in data management tasks.", + "limitations": "This tool does not execute the SQL query or validate the correctness of parameter values at runtime; it only validates syntax and structure based on the database type. It does not support non-SQL databases or complex stored procedures.", + "examples": [ + "Create an SQL query template to select user data by user ID for a PostgreSQL database.", + "Generate a reusable insert statement template for a MySQL database with defined parameter schema.", + "Create a description-rich template for updating order status with placeholders for order ID and status." + ] + }, + "tags": [ + "database", + "template", + "SQL", + "query-generation", + "automation", + "database-management" + ], + "examples": [ + { + "inputJson": "{\"templateName\":\"GetUserById\",\"databaseType\":\"PostgreSQL\",\"sqlQuery\":\"SELECT * FROM users WHERE user_id = :userId;\",\"parametersSchema\":{\"userId\":{\"type\":\"integer\"}},\"description\":\"Fetch user details by user ID.\"}", + "description": "Create a PostgreSQL query template to select user details by user ID with parameter validation." + }, + { + "inputJson": "{\"templateName\":\"InsertNewOrder\",\"databaseType\":\"MySQL\",\"sqlQuery\":\"INSERT INTO orders (user_id, product_id, quantity) VALUES (:userId, :productId, :quantity);\",\"parametersSchema\":{\"userId\":{\"type\":\"integer\"},\"productId\":{\"type\":\"integer\"},\"quantity\":{\"type\":\"integer\"}},\"description\":\"Insert a new order record with user, product, and quantity.\"}", + "description": "Create a MySQL insert statement template with multiple parameters." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Template", + "context": null + } + }, + { + "name": "database-management.createYAML", + "description": "This tool accepts structured database query results or schema definitions as input objects and converts them into a well-formed YAML formatted string. It processes JSON-like inputs representing tables, columns, or query outputs and produces human-readable YAML files suitable for configuration, export, or documentation use.", + "category": "database-management", + "parameters": [ + { + "name": "dataObject", + "type": "object", + "description": "Structured input data representing database query results or schema to be converted into YAML format.", + "required": true, + "defaultValue": "" + }, + { + "name": "indentation", + "type": "number", + "description": "Number of spaces to use for indentation in generated YAML to enhance readability.", + "required": false, + "defaultValue": "2" + }, + { + "name": "includeComments", + "type": "boolean", + "description": "If true, includes descriptive comments or metadata in the YAML output when available.", + "required": false, + "defaultValue": "false" + }, + { + "name": "sortKeys", + "type": "boolean", + "description": "Sorts keys alphabetically in the output YAML for consistency if set to true.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated YAML string under the 'yamlString' key." + }, + "aiAgent": { + "useCase": "Use this tool when needing to export or transform structured database query results, schemas, or configuration objects into YAML format for use in config files, documentation, or interoperability with other systems that accept YAML inputs.", + "limitations": "Does not validate the semantics of the input data; only converts provided structure. Complex circular references or unsupported data types may cause conversion issues.", + "examples": [ + "Convert a JSON representation of a database schema into YAML for configuration.", + "Export query results from a database as YAML to include in documentation.", + "Generate YAML formatted backups of certain database metadata for integration with other tools." + ] + }, + "tags": [ + "database", + "YAML", + "export", + "serialization", + "configuration", + "schema", + "query-results" + ], + "examples": [ + { + "inputJson": "{\"dataObject\":{\"tables\":[{\"name\":\"users\",\"columns\":[{\"name\":\"id\",\"type\":\"integer\"},{\"name\":\"name\",\"type\":\"string\"}]}]},\"indentation\":4,\"includeComments\":false,\"sortKeys\":true}", + "description": "Converts a simple database schema object describing tables and columns into an indented, sorted YAML string without comments." + }, + { + "inputJson": "{\"dataObject\":{\"queryResult\":[{\"id\":1,\"name\":\"Alice\"},{\"id\":2,\"name\":\"Bob\"}]},\"indentation\":2,\"includeComments\":true,\"sortKeys\":false}", + "description": "Transforms query results data into a YAML string with comments included, keeping original key order." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "YAML", + "context": null + } + }, + { + "name": "database-management.createBlogPost", + "description": "This tool creates a new blog post entry in a database. It accepts inputs such as the post title, content body, author name, tags, and an optional publication date. The tool processes these inputs and inserts a structured blog post record into the database, returning the unique ID and timestamp of the created entry.", + "category": "database-management", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title of the blog post.", + "required": true, + "defaultValue": "" + }, + { + "name": "content", + "type": "string", + "description": "The main content body of the blog post.", + "required": true, + "defaultValue": "" + }, + { + "name": "author", + "type": "string", + "description": "Name of the blog post author.", + "required": true, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "List of tags associated with the blog post for categorization.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "publicationDate", + "type": "string", + "description": "Optional ISO 8601 formatted date-time string to set the publish date; uses current date if omitted.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Returns an object including the unique identifier of the created blog post, the creation timestamp, and confirmation of the stored fields." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to add new blog post content into a CMS or database programmatically, ensuring consistent structure and storing metadata like tags and publication date.", + "limitations": "This tool does not handle media uploads (images/videos), does not perform content moderation or validation beyond simple presence checks, and assumes the backing database is reachable and correctly configured.", + "examples": [ + "Create a new blog post titled 'Tech Trends 2024' by author 'Jane Doe' with tags ['technology','2024'] published immediately.", + "Add a draft post with a future publication date to schedule release.", + "Insert a blog post without tags or publication date." + ] + }, + "tags": [ + "database", + "blog", + "create", + "content-management", + "cms", + "post", + "publication" + ], + "examples": [ + { + "inputJson": "{\"title\":\"My First Blog Post\",\"content\":\"This is the content of my first post.\",\"author\":\"Alice Smith\",\"tags\":[\"introduction\",\"welcome\"],\"publicationDate\":\"2024-06-01T09:00:00Z\"}", + "description": "Create a blog post with all fields including a scheduled publication date." + }, + { + "inputJson": "{\"title\":\"Weekly Update\",\"content\":\"Updates for the week...\",\"author\":\"Bob Lee\",\"tags\":[],\"publicationDate\":\"\"}", + "description": "Create an immediate publication blog post without tags." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "BlogPost", + "context": null + } + }, + { + "name": "testing-automation.analyzeLink", + "description": "This tool accepts a URL string input and performs automated analysis of the link's health and quality. It fetches the link, checks HTTP status, identifies redirects, validates SSL certificate, scans for broken or dead links within the page, and evaluates page load performance indicators. The output is a structured report detailing link accessibility, security, and internal link integrity, assisting in automated web testing and monitoring.", + "category": "testing-automation", + "parameters": [ + { + "name": "url", + "type": "string", + "description": "The URL of the link to analyze. Must be a valid HTTP/HTTPS URL.", + "required": true, + "defaultValue": "" + }, + { + "name": "checkInternalLinks", + "type": "boolean", + "description": "If true, scans and reports on broken links within the linked page.", + "required": false, + "defaultValue": "true" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait for the link to respond before aborting.", + "required": false, + "defaultValue": "10" + }, + { + "name": "maxInternalLinks", + "type": "number", + "description": "Maximum number of internal links to analyze within the page to limit scan scope.", + "required": false, + "defaultValue": "100" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing HTTP status, SSL certificate validity, redirect chain, page load time, and broken internal links count and details." + }, + "aiAgent": { + "useCase": "Use this tool when automated testing requires evaluating the validity, accessibility, and security of web links, such as verifying URLs in web applications, checking link rot, or monitoring website health in continuous integration workflows.", + "limitations": "This tool does not perform content analysis beyond link-level checks and cannot guarantee detection of dynamically generated links loaded by scripts after page load. It requires network access to the URL and may fail with highly protected or geo-restricted sites.", + "examples": [ + "Analyze the link 'https://example.com' for HTTP status and internal link breaks.", + "Check if 'https://secure-site.org' has a valid SSL certificate and no broken internal links.", + "Verify that the link 'http://oldsite.net/page' is accessible with no redirects outside the domain." + ] + }, + "tags": [ + "testing", + "automation", + "link-analysis", + "web-testing", + "url-validation" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://example.com\",\"checkInternalLinks\":true,\"timeoutSeconds\":8,\"maxInternalLinks\":50}", + "description": "Analyze example.com with internal link checking, timeout 8 sec, limit to 50 internal links." + }, + { + "inputJson": "{\"url\":\"https://expired.badssl.com\",\"checkInternalLinks\":false}", + "description": "Check SSL validity and HTTP status on a known site with an expired SSL certificate, without scanning internal links." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Link", + "context": null + } + }, + { + "name": "testing-automation.analyzeKPI", + "description": "Analyzes Key Performance Indicators (KPIs) from automated testing data by processing input test run metrics, applying statistical methods and threshold evaluations to determine performance trends and issues, and produces a detailed report including KPI trends, anomalies, and improvement recommendations.", + "category": "testing-automation", + "parameters": [ + { + "name": "testRunData", + "type": "array", + "description": "An array of objects representing individual test runs with metrics such as duration, pass/fail status, and timestamps.", + "required": true, + "defaultValue": "" + }, + { + "name": "kpiDefinitions", + "type": "object", + "description": "An object defining KPIs to analyze, each with calculation formulas, threshold values for alerts, and target goals.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeRange", + "type": "object", + "description": "Optional date range to filter test runs, with 'startDate' and 'endDate' ISO strings.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeAnomalies", + "type": "boolean", + "description": "Flag to indicate if anomaly detection on KPI trends should be included in the analysis.", + "required": false, + "defaultValue": "true" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output report, e.g., 'json' for structured data or 'csv' for tabular data.", + "required": false, + "defaultValue": "json" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object including KPI evaluation results, trend graphs (base64 images or data URIs), anomaly alerts, and recommendations for improving test KPIs." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to evaluate automated testing KPIs over a series of test runs to assess software quality trends, detect performance regressions, and recommend areas for process improvement within software development lifecycles.", + "limitations": "Cannot directly access external test data sources or databases; requires all test run data and KPI definitions to be supplied in input. It does not perform tests or collect data itself, only analyzes provided data.", + "examples": [ + "Analyze KPIs for the last month of nightly test runs to detect any regressions in test pass rates.", + "Generate a KPI report identifying slow test cases and suggesting optimization points based on duration thresholds.", + "Evaluate current test automation effectiveness by analyzing flakiness and failure rate KPIs over quarterly data." + ] + }, + "tags": [ + "testing", + "automation", + "analytics", + "KPI", + "performance", + "software quality", + "test metrics" + ], + "examples": [ + { + "inputJson": "{\"testRunData\":[{\"testId\":\"login_01\",\"duration\":1200,\"passed\":true,\"timestamp\":\"2024-05-01T10:00:00Z\"},{\"testId\":\"login_01\",\"duration\":1500,\"passed\":false,\"timestamp\":\"2024-05-02T10:00:00Z\"},{\"testId\":\"payment_02\",\"duration\":800,\"passed\":true,\"timestamp\":\"2024-05-01T10:10:00Z\"}],\"kpiDefinitions\":{\"passRate\":{\"formula\":\"passed/total\",\"threshold\":0.95,\"target\":1.0},\"avgDuration\":{\"formula\":\"avg(duration)\",\"threshold\":1000,\"target\":500}},\"timeRange\":{\"startDate\":\"2024-05-01T00:00:00Z\",\"endDate\":\"2024-05-31T23:59:59Z\"},\"includeAnomalies\":true,\"outputFormat\":\"json\"}", + "description": "Analyze pass rate and average duration KPIs from test runs in May 2024, including anomaly detection." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "KPI", + "context": null + } + }, + { + "name": "testing-automation.analyzeComment", + "description": "Analyzes a software development comment string to extract sentiment, detect actionable items, and identify potential code quality concerns. Accepts a comment text input, processes it using natural language analysis and domain-specific heuristics, and outputs a structured report detailing sentiment, issue tags, and recommended follow-up actions.", + "category": "testing-automation", + "parameters": [ + { + "name": "commentText", + "type": "string", + "description": "The textual content of the software comment to analyze (e.g., code review comments, commit messages).", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "The natural language of the comment, to improve analysis accuracy (e.g., 'en' for English).", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeSentiment", + "type": "boolean", + "description": "Whether to perform sentiment analysis on the comment text.", + "required": false, + "defaultValue": "true" + }, + { + "name": "detectActions", + "type": "boolean", + "description": "Whether to detect actionable items or requests in the comment.", + "required": false, + "defaultValue": "true" + }, + { + "name": "detectCodeQualityConcerns", + "type": "boolean", + "description": "Whether to identify references to code quality issues in the comment.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "A detailed analysis report object containing overall sentiment, a list of detected actionable items, and identified code quality concerns, each with explanations and confidence scores." + }, + "aiAgent": { + "useCase": "This tool is ideal for AI agents automating software testing workflows to analyze comments found in code reviews, commit logs, or issue trackers. It helps detect tone, prioritize actionable feedback, and surface potential quality issues early. Agents can use it to summarize comments, generate recommended tasks, or flag problematic remarks requiring human attention.", + "limitations": "This tool is optimized for textual comments in a limited set of natural languages and may not accurately interpret highly technical jargon, sarcasm, or cultural nuances. It cannot execute code or verify the correctness of suggested actions.", + "examples": [ + "Analyze the sentiment and actionable requests in this code review comment.", + "Detect any code quality concerns mentioned in the latest commit message.", + "Summarize actionable feedback from developer comments on a pull request." + ] + }, + "tags": [ + "testing", + "automation", + "comment analysis", + "sentiment", + "code review", + "actionable feedback" + ], + "examples": [ + { + "inputJson": "{\"commentText\":\"I think this function is a bit too complex and might cause issues later. Please consider refactoring it.\",\"language\":\"en\",\"includeSentiment\":true,\"detectActions\":true,\"detectCodeQualityConcerns\":true}", + "description": "Analyze a constructive code review comment mentioning complexity and refactoring request." + }, + { + "inputJson": "{\"commentText\":\"Looks good to me, no changes needed.\",\"includeSentiment\":true}", + "description": "Analyze a positive approval comment with no actionable requests." + }, + { + "inputJson": "{\"commentText\":\"This hack is ugly but works. We should clean it up before release.\",\"includeSentiment\":true,\"detectActions\":true,\"detectCodeQualityConcerns\":true}", + "description": "Analyze a comment describing a workaround that might affect code quality and contains a cleanup action request." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Comment", + "context": null + } + }, + { + "name": "testing-automation.analyzeDashboard", + "description": "Analyzes automated testing dashboard data by accepting JSON-formatted test execution and results logs. Processes metrics such as pass/fail rates, test coverage, execution times, and trends over time. Produces a structured summary report highlighting key performance indicators, flakiness alerts, and areas for test improvement.", + "category": "testing-automation", + "parameters": [ + { + "name": "dashboardData", + "type": "object", + "description": "A JSON object representing the structured test execution logs and results to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeRange", + "type": "object", + "description": "Optional object defining start and end timestamps (ISO 8601 strings) to filter the dashboard data period.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeFlakinessAnalysis", + "type": "boolean", + "description": "Flag indicating whether to analyze test flakiness based on historical inconsistent test outcomes.", + "required": false, + "defaultValue": "true" + }, + { + "name": "minTestCoverageThreshold", + "type": "number", + "description": "Minimum test coverage percentage to identify under-covered test areas; values 0-100.", + "required": false, + "defaultValue": "80" + }, + { + "name": "trendAnalysisPeriodDays", + "type": "number", + "description": "Number of recent days over which to analyze trend data for test performance metrics.", + "required": false, + "defaultValue": "30" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing summarized test results metrics, trend insights, flakiness alerts, and coverage warnings." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to summarize and interpret complex automated testing dashboard data to provide actionable insights like test stability, coverage gaps, and execution trends. Ideal for continuous integration pipelines and quality engineers seeking data-driven testing improvements.", + "limitations": "This tool does not run tests, cannot fix test failures, and relies on properly structured and comprehensive test result data input for accurate analysis.", + "examples": [ + "Analyze dashboard data for the last month highlighting flaky tests and coverage below 90%.", + "Summarize test execution trends ignoring flakiness analysis over a custom date range.", + "Generate a report from recent CI pipeline test data including flakiness insights and coverage metrics." + ] + }, + "tags": [ + "automated testing", + "dashboard analysis", + "test results", + "test coverage", + "flakiness detection", + "CI/CD", + "trend analysis" + ], + "examples": [ + { + "inputJson": "{\"dashboardData\":{\"tests\":[{\"id\":\"T001\",\"status\":\"pass\",\"duration\":120,\"timestamp\":\"2024-05-20T10:00:00Z\"},{\"id\":\"T002\",\"status\":\"fail\",\"duration\":150,\"timestamp\":\"2024-05-20T10:05:00Z\"},{\"id\":\"T001\",\"status\":\"fail\",\"duration\":110,\"timestamp\":\"2024-05-19T10:00:00Z\"}]},\"timeRange\":{\"start\":\"2024-05-01T00:00:00Z\",\"end\":\"2024-05-31T23:59:59Z\"},\"includeFlakinessAnalysis\":true,\"minTestCoverageThreshold\":85,\"trendAnalysisPeriodDays\":30}", + "description": "Analyze May test dashboard data with flakiness analysis, considering tests with coverage less than 85%." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Dashboard", + "context": null + } + }, + { + "name": "testing-automation.analyzeRisk", + "description": "Analyzes software test automation suites to identify and evaluate potential risks that could impact test reliability, security, and effectiveness. Takes as input test scripts, test environment details, and risk criteria to output a detailed risk assessment report with prioritized risk items and suggested mitigations.", + "category": "testing-automation", + "parameters": [ + { + "name": "testScripts", + "type": "array", + "description": "An array of test script objects or code snippets to analyze for risks.", + "required": true, + "defaultValue": "" + }, + { + "name": "testEnvironment", + "type": "object", + "description": "Details of the test environment including OS, browsers, network configurations relevant for risk analysis.", + "required": true, + "defaultValue": "" + }, + { + "name": "riskCriteria", + "type": "object", + "description": "Customizable risk criteria including categories such as security risks, flaky tests, data sensitivity, and infrastructure dependencies.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeHistoricalFailures", + "type": "boolean", + "description": "Flag indicating whether to include analysis of historical test failures to assess risk patterns.", + "required": false, + "defaultValue": "false" + }, + { + "name": "maxRiskItems", + "type": "number", + "description": "Maximum number of top risk items to report (prioritized by risk score).", + "required": false, + "defaultValue": "10" + } + ], + "returns": { + "type": "object", + "description": "A structured risk assessment report containing identified risk items, their severity, likelihood, potential impact, and recommended mitigation actions." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to assess risks in a software test automation suite, such as identifying fragile tests, security weaknesses in test scripts, or environment-related risks that could cause unreliable test results or security vulnerabilities.", + "limitations": "Cannot automatically fix identified risks or execute tests. Does not analyze manual tests or production system risks beyond test automation context.", + "examples": [ + "Analyze risk in our latest Selenium test scripts given our QA environment settings.", + "Assess potential security and reliability risks in our automated test suite before release.", + "Generate a prioritized list of flaky tests from historical failure data for mitigation planning." + ] + }, + "tags": [ + "testing", + "automation", + "risk-analysis", + "security", + "quality-assurance", + "test-scripts", + "flaky-tests" + ], + "examples": [ + { + "inputJson": "{\"testScripts\":[{\"id\":\"TS001\",\"content\":\"Login test script using Selenium WebDriver\"},{\"id\":\"TS002\",\"content\":\"Data validation script with API mocks\"}],\"testEnvironment\":{\"os\":\"Windows 10\",\"browsers\":[\"Chrome 90\",\"Firefox 88\"],\"network\":\"corporate VPN\"},\"riskCriteria\":{\"riskCategories\":[\"flaky-tests\",\"security\",\"data-sensitivity\"]},\"includeHistoricalFailures\":true,\"maxRiskItems\":5}", + "description": "Analyze login and data validation Selenium scripts in specified environment focusing on flaky tests, security, and data sensitivity, including test failure history with top 5 risks." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Risk", + "context": null + } + }, + { + "name": "testing-automation.analyzeTable", + "description": "Analyzes tabular test data or test result tables to detect anomalies, summarize key metrics, and identify outliers or patterns impacting software test automation. Accepts table data in JSON format, processes each row and column for statistical and consistency checks, and returns a structured report highlighting potential issues and test coverage insights.", + "category": "testing-automation", + "parameters": [ + { + "name": "tableData", + "type": "array", + "description": "An array of objects representing rows in the table; each object contains column key-value pairs. Required to analyze test data or results.", + "required": true, + "defaultValue": "" + }, + { + "name": "keyColumns", + "type": "array", + "description": "List of column names to use as keys or identifiers for grouping and analysis. Optional.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "numericColumns", + "type": "array", + "description": "List of column names expected to contain numeric values for statistical analysis like mean and standard deviation. Optional.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "detectionThreshold", + "type": "number", + "description": "Threshold value for flagging anomalies or outliers in numeric data, specified as number of standard deviations from mean.", + "required": false, + "defaultValue": "3" + }, + { + "name": "includeSummary", + "type": "boolean", + "description": "If true, includes a statistical summary (mean, median, mode) for numeric columns in the output report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxRowSamples", + "type": "number", + "description": "Maximum number of example rows to include in the report for each detected anomaly or pattern. Helps keep report concise.", + "required": false, + "defaultValue": "5" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing detected anomalies, summary statistics, outlier details, and possible data inconsistencies or missing values." + }, + "aiAgent": { + "useCase": "Use this tool when needing automated insight into test automation data presented as tables, such as pass/fail rates, execution times, or coverage metrics, to detect unexpected results or data integrity issues that might affect CI/CD pipelines.", + "limitations": "Cannot fix data errors or execute tests; limited to analyzing provided data format (array of objects). Statistical anomaly detection is basic and may require domain-specific tuning.", + "examples": [ + "Analyze a test results table JSON to find tests with abnormally long execution times.", + "Summarize coverage metrics in a table and flag any unexpected zero coverage areas.", + "Detect missing data or inconsistent status entries in automated test logs represented as table data." + ] + }, + "tags": [ + "testing", + "automation", + "table", + "analysis", + "anomaly-detection", + "quality-assurance", + "data-validation" + ], + "examples": [ + { + "inputJson": "{\"tableData\":[{\"testName\":\"LoginTest\",\"status\":\"PASS\",\"durationMs\":120},{\"testName\":\"CheckoutTest\",\"status\":\"FAIL\",\"durationMs\":430},{\"testName\":\"SearchTest\",\"status\":\"PASS\",\"durationMs\":200},{\"testName\":\"ProfileUpdateTest\",\"status\":\"PASS\",\"durationMs\":180},{\"testName\":\"LongRunningTest\",\"status\":\"PASS\",\"durationMs\":1500}],\"keyColumns\":[\"testName\"],\"numericColumns\":[\"durationMs\"],\"detectionThreshold\":2,\"includeSummary\":true,\"maxRowSamples\":3}", + "description": "Analyze test result durations to detect tests with unusually long execution times and provide summary statistics." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Table", + "context": null + } + }, + { + "name": "testing-automation.analyzeOpportunity", + "description": "Analyzes opportunities for automated testing improvements within a software development project. Accepts inputs describing current test coverage, test types, historical test results, and project goals. Processes these inputs to identify gaps, suggest automation candidates, and estimate potential impact. Returns a detailed analysis report highlighting actionable testing automation opportunities.", + "category": "testing-automation", + "parameters": [ + { + "name": "projectName", + "type": "string", + "description": "Name of the software project to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "currentTestCoverage", + "type": "number", + "description": "Current percentage of code or features covered by automated tests (0-100).", + "required": true, + "defaultValue": "" + }, + { + "name": "testTypesIncluded", + "type": "array", + "description": "Array of existing automated test types in use (e.g., unit, integration, UI).", + "required": true, + "defaultValue": "" + }, + { + "name": "historicalTestResults", + "type": "object", + "description": "Historical test results data including failure rates and flaky tests statistics.", + "required": false, + "defaultValue": "" + }, + { + "name": "projectGoals", + "type": "array", + "description": "List of automation or quality goals prioritized by the project (e.g., reduce regression bugs, speed CI).", + "required": false, + "defaultValue": "" + }, + { + "name": "maxEffortLevel", + "type": "string", + "description": "Maximum acceptable effort level for implementing new automation opportunities (e.g., low, medium, high).", + "required": false, + "defaultValue": "medium" + } + ], + "returns": { + "type": "object", + "description": "An analysis report containing identified gaps in testing, recommended automation opportunities, estimated effort and benefits, and prioritization based on project goals." + }, + "aiAgent": { + "useCase": "Use this tool when evaluating current software test automation to identify significant gaps and actionable opportunities to improve test automation coverage and quality. It helps select areas where automation investments yield the highest impact on quality and development efficiency.", + "limitations": "The tool depends on accurate and current input data; it cannot perform actual automation or generate detailed automation scripts. It does not assess code complexity or specific technical feasibility.", + "examples": [ + "Analyze testing gaps and automation opportunities for Project X with 65% coverage and unit/integration tests.", + "Evaluate automation opportunities focusing on reducing flaky UI tests in Project Y.", + "Identify test automation gaps in Project Z considering goals to speed up CI pipelines." + ] + }, + "tags": [ + "testing", + "automation", + "analysis", + "quality-assurance", + "test-coverage" + ], + "examples": [ + { + "inputJson": "{\"projectName\":\"Project Phoenix\",\"currentTestCoverage\":70,\"testTypesIncluded\":[\"unit\",\"integration\"],\"historicalTestResults\":{\"failureRate\":0.05,\"flakyTestsPercentage\":0.02},\"projectGoals\":[\"reduce regression bugs\",\"accelerate CI pipeline\"],\"maxEffortLevel\":\"medium\"}", + "description": "Analyze test automation opportunities for Project Phoenix with moderate coverage and focus on reducing regressions and speeding CI." + }, + { + "inputJson": "{\"projectName\":\"AlphaApp\",\"currentTestCoverage\":40,\"testTypesIncluded\":[\"unit\"],\"historicalTestResults\":{\"failureRate\":0.10,\"flakyTestsPercentage\":0.05},\"projectGoals\":[\"expand UI test coverage\"],\"maxEffortLevel\":\"high\"}", + "description": "Evaluate opportunities for expanding UI test automation in AlphaApp with low coverage and high test failure rates." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Opportunity", + "context": null + } + }, + { + "name": "testing-automation.analyzePayment", + "description": "Analyzes payment transaction records to identify inconsistencies, fraud indicators, and performance anomalies. Accepts structured payment data input, executes validation against business rules, anomaly detection, and fraud pattern analysis, then outputs a detailed report of findings including risk scores and flagged entries.", + "category": "testing-automation", + "parameters": [ + { + "name": "paymentData", + "type": "array", + "description": "An array of payment transaction objects to be analyzed, each containing timestamp, amount, payer, payee, and status fields.", + "required": true, + "defaultValue": "" + }, + { + "name": "fraudDetectionRules", + "type": "object", + "description": "An optional object specifying custom rules or thresholds for fraud detection analysis.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "performanceThresholds", + "type": "object", + "description": "An optional object defining acceptable performance metrics such as transaction processing times for anomaly detection.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeDetailedLogs", + "type": "boolean", + "description": "Flag indicating if detailed transaction processing logs should be included in the analysis output.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing summary statistics, risk assessment scores, identified anomalies and fraud flags, plus optionally detailed analysis logs." + }, + "aiAgent": { + "useCase": "Use this tool when you need to automatically validate large volumes of payment transactions to detect potential fraud, anomalies in payment behavior, or performance bottlenecks before deploying or releasing payment processing systems.", + "limitations": "This tool analyzes transactional data based on supplied rules and cannot directly interface with live payment gateways or fix detected issues. Accuracy depends on quality and completeness of input data and correctness of fraud/performance rules.", + "examples": [ + "Analyze a batch of payment transactions for fraud indicators and performance anomalies.", + "Check a payment log dataset to produce a compliance and risk report.", + "Perform anomaly detection on payment amounts and processing durations with custom thresholds." + ] + }, + "tags": [ + "testing", + "automation", + "payment", + "fraud detection", + "anomaly detection", + "performance analysis" + ], + "examples": [ + { + "inputJson": "{\"paymentData\":[{\"timestamp\":\"2024-06-01T12:00:00Z\",\"amount\":120.50,\"payer\":\"user123\",\"payee\":\"merchant456\",\"status\":\"completed\"},{\"timestamp\":\"2024-06-01T12:05:00Z\",\"amount\":12700,\"payer\":\"user789\",\"payee\":\"merchant456\",\"status\":\"completed\"}],\"fraudDetectionRules\":{\"maxAmount\":10000},\"performanceThresholds\":{\"maxProcessingTimeMs\":2000},\"includeDetailedLogs\":true}", + "description": "Analyze two payment records with a custom maximum allowed amount and performance timing threshold, including detailed logs." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Payment", + "context": null + } + }, + { + "name": "testing-automation.uploadImage", + "description": "Uploads an image file to a specified testing automation platform or service, enabling test scripts to access visual assets for UI validation or automated visual comparison. Accepts image data or URL and returns upload status with a reference link or ID.", + "category": "testing-automation", + "parameters": [ + { + "name": "imageBase64", + "type": "string", + "description": "Base64-encoded string of the image file to be uploaded. Required if imageUrl is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "imageUrl", + "type": "string", + "description": "URL pointing to the image file to be uploaded. Required if imageBase64 is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "fileName", + "type": "string", + "description": "Optional file name to assign to the uploaded image, including extension (e.g., 'screenshot.png').", + "required": false, + "defaultValue": "image.png" + }, + { + "name": "targetEnvironment", + "type": "string", + "description": "Identifier or endpoint of the testing platform or environment where the image should be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "overwrite", + "type": "boolean", + "description": "If true, allows overwriting an existing image with the same file name in target environment.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing upload success status, uploaded image ID or URL reference, and message for error or success." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically upload images that will be used in automated test scenarios, such as UI snapshot validations, visual regression tests, or as test data inputs. It enables AI agents to integrate images into testing platforms dynamically, supporting continuous integration workflows.", + "limitations": "This tool does not perform image validation or preprocessing, nor does it support uploading non-image files. The upload depends on the target environment's API and network accessibility.", + "examples": [ + "Upload a base64 image representing a UI screenshot to the testing server for visual validation.", + "Provide a direct URL of an image to upload it into the test asset repository before running automated layout checks.", + "Overwrite an existing image in the test environment with a new screenshot for the latest test iteration." + ] + }, + "tags": [ + "upload", + "image", + "testing", + "automation", + "UI", + "visual-testing", + "test-assets" + ], + "examples": [ + { + "inputJson": "{\"imageBase64\":\"iVBORw0KGgoAAAANSUhEUgAAAAUA...\",\"fileName\":\"homepage.png\",\"targetEnvironment\":\"https://test-platform.example.com/api/upload\",\"overwrite\":false}", + "description": "Upload a base64 encoded PNG image named homepage.png to the specified test platform without overwriting." + }, + { + "inputJson": "{\"imageUrl\":\"https://example.com/assets/button.png\",\"fileName\":\"button.png\",\"targetEnvironment\":\"https://test-platform.example.com/api/upload\",\"overwrite\":true}", + "description": "Upload an image by URL, overwriting any existing file named button.png in the test automation environment." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Image", + "context": null + } + }, + { + "name": "testing-automation.sendNotification", + "description": "Sends a notification message during automated testing workflows. Accepts inputs including recipient identifiers, message content, notification type (e.g., email, SMS, in-app), and optional metadata. Processes this data to dispatch the specified notification and returns a status report indicating success or failure for each recipient.", + "category": "testing-automation", + "parameters": [ + { + "name": "recipients", + "type": "array", + "description": "List of recipient identifiers such as email addresses or user IDs to whom the notification will be sent", + "required": true, + "defaultValue": "" + }, + { + "name": "message", + "type": "string", + "description": "The content of the notification message to be sent", + "required": true, + "defaultValue": "" + }, + { + "name": "notificationType", + "type": "string", + "description": "The type of notification channel to use, such as 'email', 'sms', or 'inApp'", + "required": true, + "defaultValue": "email" + }, + { + "name": "subject", + "type": "string", + "description": "Subject line for notifications that support it, like email", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Additional optional data to customize or enrich the notification (e.g., priority, tags)", + "required": false, + "defaultValue": "" + }, + { + "name": "simulate", + "type": "boolean", + "description": "If true, simulates sending without actual dispatch, useful for test validation", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing a summary status including overall success boolean and an array of results per recipient with individual success and error messages if any" + }, + "aiAgent": { + "useCase": "Use this tool within automated testing scenarios that require programmatic notification dispatch to verify messaging functionality, alert testing teams, or simulate user notification workflows. It's ideal for integration tests that check end-to-end notification pipelines or for sending test alerts during CI/CD runs.", + "limitations": "This tool does not support message content localization or message templates; notifications require fully composed text. It cannot guarantee delivery beyond initial dispatch and is not a full messaging platform.", + "examples": [ + "Send a test email notification to QA team members after a critical test suite completes.", + "Dispatch in-app notifications to a set of user IDs during UI automation tests.", + "Simulate SMS notification sending to validate notification pipeline without sending actual messages." + ] + }, + "tags": [ + "testing", + "notification", + "automation", + "messaging", + "email", + "sms", + "in-app" + ], + "examples": [ + { + "inputJson": "{\"recipients\":[\"qa-team@example.com\"],\"message\":\"Automated test suite completed successfully.\",\"notificationType\":\"email\",\"subject\":\"Test Suite Report\",\"simulate\":false}", + "description": "Send an email notification to the QA team after automated tests complete." + }, + { + "inputJson": "{\"recipients\":[\"user123\",\"user456\"],\"message\":\"Your session will expire soon.\",\"notificationType\":\"inApp\",\"simulate\":false}", + "description": "Send an in-app notification to users to warn session expiration during UI tests." + }, + { + "inputJson": "{\"recipients\":[\"+1234567890\"],\"message\":\"Test SMS notification for pipeline check.\",\"notificationType\":\"sms\",\"simulate\":true}", + "description": "Simulate sending an SMS notification to validate the notification sending process without actual dispatch." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Notification", + "context": null + } + }, + { + "name": "testing-automation.uploadJSON", + "description": "Uploads a JSON-formatted test configuration or test case data to a specified testing automation platform or service. Accepts JSON content as input and sends it to a target endpoint or local testing environment, returning success status and any error messages.", + "category": "testing-automation", + "parameters": [ + { + "name": "jsonContent", + "type": "string", + "description": "The JSON string containing test configuration or test case data to upload.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetUrl", + "type": "string", + "description": "The URL of the testing automation platform or API endpoint where the JSON should be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Optional authorization token or API key used for authentication at the target endpoint.", + "required": false, + "defaultValue": "" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "Whether to overwrite existing JSON data at the target if present (true) or reject (false).", + "required": false, + "defaultValue": "false" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time to wait for upload response before timing out.", + "required": false, + "defaultValue": "30" + } + ], + "returns": { + "type": "object", + "description": "An object containing upload status, including success boolean, server response message, and optional error details." + }, + "aiAgent": { + "useCase": "This tool should be used when an AI agent needs to programmatically submit JSON test configurations or case definitions to a testing automation system for execution or management. It is suitable for integrating automated test data input pipelines, continuous integration workflows, or remote test environment setups.", + "limitations": "This tool does not validate the semantic correctness of the JSON content beyond JSON syntax and does not execute tests. It also depends on the target platform accepting JSON uploads and user having appropriate permissions.", + "examples": [ + "Upload JSON test case data to a remote testing API with authentication.", + "Send updated test configuration JSON to a local test management server, replacing old data.", + "Attempt to upload test suite JSON without overwriting existing data, handling failure if present." + ] + }, + "tags": [ + "testing", + "automation", + "upload", + "json", + "test-management", + "API" + ], + "examples": [ + { + "inputJson": "{\"jsonContent\":\"{\\\"testName\\\":\\\"LoginTest\\\",\\\"steps\\\":[{\\\"action\\\":\\\"openUrl\\\",\\\"target\\\":\\\"/login\\\"}]}\" ,\"targetUrl\":\"https://test-platform.example.com/api/upload\",\"authToken\":\"abc123token\",\"overwriteExisting\":true,\"timeoutSeconds\":30}", + "description": "Uploading a simple login test case JSON to a remote API with overwrite enabled." + }, + { + "inputJson": "{\"jsonContent\":\"{\\\"suiteName\\\":\\\"SmokeTests\\\",\\\"tests\\\":[{\\\"id\\\":1,\\\"name\\\":\\\"HomePageLoad\\\"}]}\",\"targetUrl\":\"http://localhost:8080/upload\",\"overwriteExisting\":false}", + "description": "Uploading smoke test suite JSON to a local test manager without overwriting existing data." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "JSON", + "context": null + } + }, + { + "name": "testing-automation.uploadDataset", + "description": "Uploads a dataset file to a specified test automation platform or environment. Accepts CSV, JSON, or Excel files and processes them for integration with testing workflows. Returns upload status and metadata including file size, record count, and a unique dataset ID for reference in subsequent automated tests.", + "category": "testing-automation", + "parameters": [ + { + "name": "filePath", + "type": "string", + "description": "Local or network path to the dataset file to upload (CSV, JSON, XLSX)", + "required": true, + "defaultValue": "" + }, + { + "name": "datasetName", + "type": "string", + "description": "A descriptive name for the uploaded dataset for identification", + "required": true, + "defaultValue": "" + }, + { + "name": "fileType", + "type": "string", + "description": "The format of the dataset file: 'csv', 'json', or 'xlsx'", + "required": true, + "defaultValue": "" + }, + { + "name": "targetEnvironment", + "type": "string", + "description": "The test environment or platform where the dataset will be uploaded (e.g., 'staging', 'dev')", + "required": false, + "defaultValue": "" + }, + { + "name": "overwriteExisting", + "type": "boolean", + "description": "Whether to overwrite an existing dataset with the same name", + "required": false, + "defaultValue": "false" + }, + { + "name": "notifyOnCompletion", + "type": "boolean", + "description": "If true, sends a notification once the upload and processing are complete", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the upload result: success status, dataset ID, file size in bytes, number of records loaded, and any error messages if applicable" + }, + "aiAgent": { + "useCase": "Use this tool when automating testing workflows that require loading structured data sets into test environments. Ideal for feeding test data for functional, regression, or performance tests. Facilitates controlled dataset versioning and availability across different automated test stages.", + "limitations": "Does not validate dataset content consistency or schema beyond file type recognition. Upload success depends on connectivity and target environment permissions. Large files may require additional handling outside basic upload.", + "examples": [ + "Upload a CSV dataset named 'UserCredentials' to the staging environment, overwriting any existing dataset with the same name.", + "Upload an Excel file containing product catalog data without overwriting, and notify when upload completes.", + "Upload a JSON dataset to the default environment without notifications or overwrite." + ] + }, + "tags": [ + "testing", + "automation", + "dataset", + "upload", + "test-data", + "csv", + "json", + "excel" + ], + "examples": [ + { + "inputJson": "{\"filePath\":\"/data/test_users.csv\",\"datasetName\":\"UserCredentials\",\"fileType\":\"csv\",\"targetEnvironment\":\"staging\",\"overwriteExisting\":true,\"notifyOnCompletion\":true}", + "description": "Upload a CSV dataset named 'UserCredentials' to the staging environment and overwrite existing datasets with the same name, notify when done." + }, + { + "inputJson": "{\"filePath\":\"/data/products.xlsx\",\"datasetName\":\"ProductCatalog\",\"fileType\":\"xlsx\",\"overwriteExisting\":false,\"notifyOnCompletion\":false}", + "description": "Upload an Excel dataset called 'ProductCatalog' without overwriting or notifications to default environment." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Dataset", + "context": null + } + }, + { + "name": "testing-automation.formatDataset", + "description": "Formats a test dataset according to specified schema and formatting rules to prepare it for automated testing scenarios. Accepts raw dataset input in JSON or CSV format, applies transformations such as type casting, normalization, and field renaming, and outputs a structured dataset ready for use in test automation tools.", + "category": "testing-automation", + "parameters": [ + { + "name": "inputData", + "type": "string", + "description": "The raw dataset content as a string, in JSON array or CSV format, to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "inputFormat", + "type": "string", + "description": "The format of the inputData: either 'json' or 'csv'.", + "required": true, + "defaultValue": "json" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The desired output dataset format: 'json' or 'csv'.", + "required": false, + "defaultValue": "json" + }, + { + "name": "schemaMapping", + "type": "object", + "description": "An object defining how to map and transform fields: keys are target field names, values specify source fields and optional transformation rules.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "normalizeValues", + "type": "boolean", + "description": "Whether to normalize numerical values in the dataset to a standard range (0 to 1).", + "required": false, + "defaultValue": "false" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "If outputFormat is 'csv', whether to include header row with field names.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted dataset as a string under 'formattedData', and metadata such as record count and field names." + }, + "aiAgent": { + "useCase": "Use this tool when preparing raw test datasets to conform to a specific schema or format required by automated testing systems. It helps convert and format data inputs systematically for integration in test scenarios, ensuring consistent data structure and types.", + "limitations": "This tool does not perform data validation beyond structural transformations and basic type casting. It cannot generate test data or perform complex data integrity checks. It assumes input data is well-formed in the specified format.", + "examples": [ + "Format a raw JSON dataset to a CSV with specified schema mapping.", + "Convert CSV test data into normalized JSON format for testing input.", + "Rename and cast fields in existing JSON data for automated test scenario compatibility." + ] + }, + "tags": [ + "testing", + "automation", + "dataset", + "formatting", + "data-preparation", + "test-data" + ], + "examples": [ + { + "inputJson": "{\"inputData\":\"[{\\\"userId\\\":\\\"123\\\",\\\"age\\\":\\\"27\\\",\\\"score\\\":\\\"0.85\\\"},{\\\"userId\\\":\\\"456\\\",\\\"age\\\":\\\"31\\\",\\\"score\\\":\\\"0.90\\\"}]\",\"inputFormat\":\"json\",\"outputFormat\":\"csv\",\"schemaMapping\":{\"id\":{\"source\":\"userId\",\"type\":\"string\"},\"age\":{\"source\":\"age\",\"type\":\"number\"},\"performanceScore\":{\"source\":\"score\",\"type\":\"number\"}},\"normalizeValues\":true,\"includeHeaders\":true}", + "description": "Convert JSON array to CSV, renaming fields and normalizing numerical scores." + }, + { + "inputJson": "{\"inputData\":\"userId,age\\n789,45\\n012,38\",\"inputFormat\":\"csv\",\"outputFormat\":\"json\",\"schemaMapping\":{\"identifier\":{\"source\":\"userId\"},\"userAge\":{\"source\":\"age\",\"type\":\"number\"}},\"normalizeValues\":false}", + "description": "Parse CSV data, rename fields and output as JSON." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Dataset", + "context": null + } + }, + { + "name": "testing-automation.sendAlert", + "description": "Sends a security alert notification during automated testing processes. Accepts alert details like severity, message, and optional metadata. Processes the input to simulate sending alerts to configured monitoring or incident response systems. Returns the status and timestamp of the alert dispatch.", + "category": "testing-automation", + "parameters": [ + { + "name": "alertLevel", + "type": "string", + "description": "Severity of the alert (e.g., info, warning, critical).", + "required": true, + "defaultValue": "" + }, + { + "name": "message", + "type": "string", + "description": "Detailed message describing the alert event.", + "required": true, + "defaultValue": "" + }, + { + "name": "recipientList", + "type": "array", + "description": "List of recipient identifiers to receive the alert (e.g., emails, user IDs).", + "required": false, + "defaultValue": "[]" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional additional key-value pairs with context information about the alert.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "timestamp", + "type": "string", + "description": "ISO 8601 format timestamp of when the alert was generated; defaults to current time if omitted.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing confirmation of alert sending status, including a success flag, alert ID, and timestamp." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically simulate or send security alert notifications during software testing automation. It is suited for triggering alerts within test environments to validate alert handling workflows or incident response automation.", + "limitations": "This tool does not connect to real-world security systems by itself; it simulates alert sending or triggers alerts within configured test environments only. It does not analyze alert contents or perform threat detection.", + "examples": [ + "Send a critical alert to on-call security team emails during an automated penetration test.", + "Notify the monitoring dashboard with a warning alert and additional context metadata.", + "Generate an informational alert for audit logging during automated security scans." + ] + }, + "tags": [ + "testing", + "security", + "automation", + "alert", + "notification", + "incident-response" + ], + "examples": [ + { + "inputJson": "{\"alertLevel\":\"critical\",\"message\":\"Unauthorized access detected in test environment\",\"recipientList\":[\"security-team@example.com\"],\"metadata\":{\"source\":\"penetration-test-runner\",\"testId\":\"PT-2024-06-001\"}}", + "description": "Send critical alert with context metadata to security team emails during a security test." + }, + { + "inputJson": "{\"alertLevel\":\"warning\",\"message\":\"Suspicious login attempt detected\",\"recipientList\":[\"oncall@example.com\",\"security@example.com\"]}", + "description": "Send warning alert to multiple recipients about suspicious login during automated testing." + }, + { + "inputJson": "{\"alertLevel\":\"info\",\"message\":\"Automated scan completed successfully\"}", + "description": "Send informational alert indicating success of automated security scan without recipients specified." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "send", + "object": "Alert", + "context": null + } + }, + { + "name": "testing-automation.formatTest", + "description": "Formats source code of automated test scripts into a consistent, readable style based on specified formatting rules or code style guidelines. Accepts raw test code as input along with optional style configurations, processes the code formatting, and outputs the beautified, standardized test code for better maintenance and readability.", + "category": "testing-automation", + "parameters": [ + { + "name": "testCode", + "type": "string", + "description": "The raw automated test script source code to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Programming or scripting language of the test code (e.g., JavaScript, Python, Java).", + "required": true, + "defaultValue": "" + }, + { + "name": "styleConfig", + "type": "object", + "description": "Optional configuration object defining code style rules like indentation size, brace style, maximum line length.", + "required": false, + "defaultValue": "" + }, + { + "name": "maxLineLength", + "type": "number", + "description": "Maximum allowed length for each line to enforce wrapping or formatting accordingly.", + "required": false, + "defaultValue": "80" + }, + { + "name": "useTabs", + "type": "boolean", + "description": "Whether to use tabs (true) or spaces (false) for indentation.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted test code as a string and optionally a summary of formatting actions taken." + }, + "aiAgent": { + "useCase": "Use this tool when you have automated test scripts that require consistent formatting for readability, maintainability, or integration into a codebase with strict style guidelines. It is particularly useful after generation or modification of tests by various tools or manual editing that results in inconsistent style.", + "limitations": "This tool does not execute or validate tests; it only reformats source code. It relies on correct language specification for best results and does not fix semantic or syntactic errors in the test code.", + "examples": [ + "Format a raw Python unittest script to use 4-space indentation and maximum line length of 100.", + "Reformat a JavaScript test script to use tabs instead of spaces and apply standard Airbnb style conventions.", + "Beautify a Java test file to ensure consistent brace style and line wrapping." + ] + }, + "tags": [ + "testing", + "formatting", + "automation", + "code-style", + "test-scripts", + "code-quality" + ], + "examples": [ + { + "inputJson": "{\"testCode\":\"def testAddition():\\n assert add(1,2)==3\",\"language\":\"python\",\"styleConfig\":{\"indentSize\":4,\"braceStyle\":\"collapse\"},\"maxLineLength\":80,\"useTabs\":false}", + "description": "Format a simple Python test function with 4-space indentation and standard brace style." + }, + { + "inputJson": "{\"testCode\":\"describe('Array test', function(){it('should have length', function(){expect(arr.length).toBe(3);});});\",\"language\":\"javascript\",\"styleConfig\":{\"indentSize\":2},\"maxLineLength\":80,\"useTabs\":true}", + "description": "Format a JavaScript Jasmine test spec to use tabs and 2-space indentation equivalent." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Test", + "context": null + } + }, + { + "name": "testing-automation.formatWord", + "description": "Formats a given word string according to specified casing and delimiter styles to standardize input for testing automation scripts. Accepts an input word and applies transformations such as camelCase, PascalCase, snake_case, kebab-case, uppercase, or lowercase, optionally using a custom delimiter. Returns the formatted word string suitable for consistent use in test scripts and automation workflows.", + "category": "testing-automation", + "parameters": [ + { + "name": "word", + "type": "string", + "description": "The input word string to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "formatStyle", + "type": "string", + "description": "The casing style to apply. Options include camelCase, PascalCase, snake_case, kebab-case, uppercase, lowercase.", + "required": true, + "defaultValue": "" + }, + { + "name": "customDelimiter", + "type": "string", + "description": "Optional custom delimiter to use when formatStyle is snake_case or kebab-case. Defaults to '_' for snake_case and '-' for kebab-case if empty.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted word string under the key 'formattedWord'." + }, + "aiAgent": { + "useCase": "Use this tool when you need to normalize or standardize single word inputs for automated testing scripts to ensure consistency in naming conventions, variable generation, or data transformation. It helps maintain uniform style across test automation, reducing errors caused by inconsistent formatting.", + "limitations": "This tool formats only single words or tokens, not complex phrases or sentences. It does not correct spelling, grammar, or handle multiple word transformations beyond the specified format styles.", + "examples": [ + "Format the word 'testValue' to snake_case.", + "Convert the word 'errorHandler' to PascalCase.", + "Change the word 'data-point' to uppercase." + ] + }, + "tags": [ + "formatting", + "string", + "testing", + "automation", + "casing", + "word", + "standardization" + ], + "examples": [ + { + "inputJson": "{\"word\":\"testValue\",\"formatStyle\":\"snake_case\"}", + "description": "Convert 'testValue' into 'test_value' using snake_case." + }, + { + "inputJson": "{\"word\":\"errorHandler\",\"formatStyle\":\"PascalCase\"}", + "description": "Format 'errorHandler' to 'ErrorHandler' as a PascalCase word." + }, + { + "inputJson": "{\"word\":\"data-point\",\"formatStyle\":\"uppercase\"}", + "description": "Transform 'data-point' to 'DATA-POINT' in uppercase." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Word", + "context": null + } + }, + { + "name": "testing-automation.buildBranch", + "description": "Builds and tests a specified code branch in a software repository. Accepts repository URL, branch name, and build configuration parameters. It clones the branch, executes build scripts or commands, runs automated tests, and outputs a build report including success status, logs, and test results.", + "category": "testing-automation", + "parameters": [ + { + "name": "repositoryUrl", + "type": "string", + "description": "URL of the code repository to clone (e.g., git HTTPS or SSH URL)", + "required": true, + "defaultValue": "" + }, + { + "name": "branchName", + "type": "string", + "description": "Name of the branch to build and test (e.g., 'feature/login')", + "required": true, + "defaultValue": "" + }, + { + "name": "buildCommands", + "type": "array", + "description": "Array of shell commands or scripts to run the build process", + "required": true, + "defaultValue": "[\"npm install\",\"npm run build\"]" + }, + { + "name": "testCommands", + "type": "array", + "description": "Array of shell commands or scripts to execute automated tests", + "required": false, + "defaultValue": "[\"npm test\"]" + }, + { + "name": "environmentVariables", + "type": "object", + "description": "Key-value pairs of environment variables for the build and test processes", + "required": false, + "defaultValue": "{}" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds allowed for the build and test process before aborting", + "required": false, + "defaultValue": "600" + }, + { + "name": "verboseLogging", + "type": "boolean", + "description": "If true, produces detailed logs during build and test", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing build success boolean, an array of log strings, and test results summary with pass/fail counts." + }, + "aiAgent": { + "useCase": "Use this tool when needing to automate the process of building and testing code changes on a specific branch. It helps verify integration, catch build errors early, and confirm test passes on feature or bugfix branches before merging. Useful for continuous integration (CI) workflows or validation during development.", + "limitations": "Does not perform code merges or handle conflict resolution. Requires accessible repository and environment configured to run supplied commands. It does not deploy built artifacts or run performance tests.", + "examples": [ + "Build and test the 'develop' branch of a repository with default build and test commands.", + "Build a feature branch with custom environment variables and extended timeout.", + "Run a build with verbose logs for debugging purposes." + ] + }, + "tags": [ + "testing", + "automation", + "build", + "ci", + "branch", + "continuous-integration", + "software-development" + ], + "examples": [ + { + "inputJson": "{\"repositoryUrl\":\"https://github.com/example/project.git\",\"branchName\":\"develop\",\"buildCommands\":[\"npm install\",\"npm run build\"],\"testCommands\":[\"npm test\"],\"environmentVariables\":{},\"timeoutSeconds\":600,\"verboseLogging\":false}", + "description": "Build and test the 'develop' branch with standard npm commands." + }, + { + "inputJson": "{\"repositoryUrl\":\"git@github.com:example/project.git\",\"branchName\":\"feature/login\",\"buildCommands\":[\"./configure\",\"make\"],\"testCommands\":[\"make test\"],\"environmentVariables\":{\"NODE_ENV\":\"test\"},\"timeoutSeconds\":1200,\"verboseLogging\":true}", + "description": "Build 'feature/login' branch using custom build commands and verbose logging." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Branch", + "context": null + } + }, + { + "name": "testing-automation.buildService", + "description": "This tool automates the building and deployment of a test service environment based on provided configuration parameters. It accepts service definitions, dependencies, environment variables, and deployment settings, then orchestrates the setup using containerization or cloud infrastructure. The output is a report detailing the deployment status, service endpoints, and any errors encountered during the build process.", + "category": "testing-automation", + "parameters": [ + { + "name": "serviceName", + "type": "string", + "description": "The unique name identifier for the service to be built.", + "required": true, + "defaultValue": "" + }, + { + "name": "serviceVersion", + "type": "string", + "description": "The version tag of the service to build and deploy.", + "required": false, + "defaultValue": "latest" + }, + { + "name": "dependencies", + "type": "array", + "description": "List of external services or modules that the service depends upon, specified by name or URL.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "environmentVariables", + "type": "object", + "description": "Key-value pairs of environment variables to configure the service runtime environment.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "deploymentType", + "type": "string", + "description": "Specifies the type of deployment: 'docker', 'kubernetes', or 'serverless'.", + "required": true, + "defaultValue": "docker" + }, + { + "name": "resourceLimits", + "type": "object", + "description": "Defines resource constraints like CPU and memory limits for the service containers.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "autoStart", + "type": "boolean", + "description": "Whether to automatically start the service after building and deployment.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the deployment status (success/failure), service endpoints with URLs or IP addresses if applicable, and a detailed log of the build process including any errors or warnings." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to automate the setup and deployment of a test environment for a microservice or similar component within a larger application system. It is particularly useful for continuous integration pipelines or automated regression testing workflows.", + "limitations": "This tool does not perform the actual testing or validation of the service functionality after deployment. It also does not manage complex multi-service orchestrations beyond specified dependencies.", + "examples": [ + "Build and deploy a test version of the user authentication service using Docker, with predefined environment variables.", + "Deploy a microservice with specific CPU and memory limits to a Kubernetes cluster without auto-starting it.", + "Set up a serverless test environment for an API gateway service specifying its dependencies." + ] + }, + "tags": [ + "automation", + "testing", + "deployment", + "service", + "infrastructure", + "CI/CD", + "containerization" + ], + "examples": [ + { + "inputJson": "{\"serviceName\":\"auth-service\",\"serviceVersion\":\"1.2.3\",\"dependencies\":[\"user-db\",\"email-service\"],\"environmentVariables\":{\"NODE_ENV\":\"test\",\"LOG_LEVEL\":\"debug\"},\"deploymentType\":\"docker\",\"resourceLimits\":{\"cpu\":\"500m\",\"memory\":\"256Mi\"},\"autoStart\":true}", + "description": "Deploys the 'auth-service' version 1.2.3 via Docker with specified dependencies, environment variables, resource limits, and auto-start enabled." + }, + { + "inputJson": "{\"serviceName\":\"payment-gateway\",\"deploymentType\":\"kubernetes\",\"autoStart\":false}", + "description": "Builds the latest version of 'payment-gateway' service and deploys it to Kubernetes cluster but does not start it automatically." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Service", + "context": null + } + }, + { + "name": "testing-automation.buildContainer", + "description": "Builds and configures a test container environment based on specified parameters such as base image, resource limits, environment variables, and setup scripts. Accepts configuration inputs, provisions the container with desired software and settings, and outputs container ID and status for integration in automated testing pipelines.", + "category": "testing-automation", + "parameters": [ + { + "name": "baseImage", + "type": "string", + "description": "Docker image name or identifier to use as the base for the test container.", + "required": true, + "defaultValue": "" + }, + { + "name": "containerName", + "type": "string", + "description": "Optional name to assign to the container for easier identification.", + "required": false, + "defaultValue": "" + }, + { + "name": "environmentVariables", + "type": "object", + "description": "Key-value pairs of environment variables to be set inside the container.", + "required": false, + "defaultValue": "" + }, + { + "name": "resourceLimits", + "type": "object", + "description": "Resource constraints for the container, e.g., CPU shares and memory limit in MB.", + "required": false, + "defaultValue": "" + }, + { + "name": "setupCommands", + "type": "array", + "description": "List of shell commands or scripts to execute within the container for setup purposes.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "exposePorts", + "type": "array", + "description": "List of ports to expose from the container for networking during tests.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "autoRemove", + "type": "boolean", + "description": "Flag to specify if the container should be automatically removed after test execution.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the container ID, status (e.g., created, running, error), and any error messages if applicable." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to programmatically provision containerized environments tailored for automated software testing. Ideal for setting up isolated test environments that require custom configurations, environment variables, and software setup, facilitating repeatable and consistent testing workflows.", + "limitations": "This tool does not perform in-container test execution or cleanup beyond optional auto-removal. It requires a container runtime environment (like Docker) to be accessible and cannot manage network orchestration beyond port exposure.", + "examples": [ + "Create a container based on 'node:14' image with a memory limit of 512MB and environment variable NODE_ENV=testing.", + "Build a test container named 'api-test-env' exposing ports 8080 and 9090, including setup commands to install dependencies.", + "Provision a lightweight container from 'alpine:latest' with autoRemove=true after tests complete." + ] + }, + "tags": [ + "testing", + "automation", + "containerization", + "infrastructure", + "docker", + "ci-cd" + ], + "examples": [ + { + "inputJson": "{\"baseImage\":\"node:14\",\"containerName\":\"test-container\",\"environmentVariables\":{\"NODE_ENV\":\"test\"},\"resourceLimits\":{\"memoryMB\":512},\"setupCommands\":[\"npm install\"],\"exposePorts\":[3000],\"autoRemove\":false}", + "description": "Create a Node.js 14 test container named 'test-container' with 512MB memory limit, NODE_ENV=test, runs npm install, and exposes port 3000." + }, + { + "inputJson": "{\"baseImage\":\"python:3.9\",\"containerName\":\"api-test-env\",\"environmentVariables\":{\"ENV\":\"staging\"},\"resourceLimits\":{\"memoryMB\":1024,\"cpuShares\":512},\"setupCommands\":[\"pip install -r requirements.txt\",\"python setup.py install\"],\"exposePorts\":[8080,9090],\"autoRemove\":true}", + "description": "Build a Python 3.9 container called 'api-test-env' for staging with memory and CPU constraints, setup commands, exposing ports 8080 and 9090, and auto-remove enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Container", + "context": null + } + }, + { + "name": "testing-automation.formatAPI", + "description": "Formats raw API specification inputs into standardized API definition formats such as OpenAPI or RAML. Accepts an unstructured or semi-structured API description object and converts it into a clean, consistent formatted string output suitable for automated API testing tools and documentation generators.", + "category": "testing-automation", + "parameters": [ + { + "name": "apiInput", + "type": "object", + "description": "The raw or semi-structured API specification object to format, which may include endpoints, methods, parameters, and descriptions.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "The target API specification format to produce, e.g., 'OpenAPI', 'RAML', or 'Swagger'.", + "required": true, + "defaultValue": "\"OpenAPI\"" + }, + { + "name": "includeExamples", + "type": "boolean", + "description": "Whether to include example request and response payloads in the formatted output.", + "required": false, + "defaultValue": "false" + }, + { + "name": "indentation", + "type": "number", + "description": "Number of spaces to use for indentation in the formatted output for readability.", + "required": false, + "defaultValue": "2" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted API specification string and metadata such as the format type." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent has received an API specification in an unstructured or loosely structured format and needs to produce a clean, standardized API definition document to support automated testing, validation, or documentation. It ensures consistency and compliance with common API specification standards.", + "limitations": "Cannot validate the completeness or semantic correctness of API details; does not generate API schemas from scratch but formats existing input data.", + "examples": [ + "Format a raw JSON API spec into an OpenAPI v3 specification string.", + "Convert a semi-structured internal API description to RAML format with examples included.", + "Reformat a Swagger 2.0 spec to a neatly indented OpenAPI 3.0 document." + ] + }, + "tags": [ + "formatting", + "API", + "testing-automation", + "OpenAPI", + "RAML", + "Swagger", + "automation" + ], + "examples": [ + { + "inputJson": "{\"apiInput\":{\"paths\":{\"/users\":{\"get\":{\"summary\":\"List users\",\"responses\":{\"200\":{\"description\":\"successful operation\"}}}}}},\"outputFormat\":\"OpenAPI\",\"includeExamples\":true,\"indentation\":2}", + "description": "Format a simple GET endpoint spec into OpenAPI format including example payloads." + }, + { + "inputJson": "{\"apiInput\":{\"endpoints\":[{\"path\":\"/items\",\"method\":\"POST\",\"description\":\"Create item\",\"parameters\":[{\"name\":\"name\",\"type\":\"string\"}] }]},\"outputFormat\":\"RAML\",\"includeExamples\":false,\"indentation\":4}", + "description": "Convert a basic POST endpoint description to RAML format without examples using 4-space indentation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "API", + "context": null + } + }, + { + "name": "testing-automation.buildEndpoint", + "description": "Builds a test API endpoint stub based on provided specifications such as HTTP method, path, expected request parameters, and response schema. Accepts input describing the endpoint configuration, and outputs generated code or configuration snippet to be used in automated testing environments.", + "category": "testing-automation", + "parameters": [ + { + "name": "httpMethod", + "type": "string", + "description": "HTTP method for the endpoint (e.g., GET, POST, PUT, DELETE).", + "required": true, + "defaultValue": "" + }, + { + "name": "endpointPath", + "type": "string", + "description": "URI path of the endpoint, supporting path parameters (e.g., /users/{id}).", + "required": true, + "defaultValue": "" + }, + { + "name": "requestParams", + "type": "object", + "description": "Specification of expected request parameters including path, query, headers, and body parameters with types.", + "required": false, + "defaultValue": "" + }, + { + "name": "responseSchema", + "type": "object", + "description": "Schema defining the structure and types of the expected response payload.", + "required": true, + "defaultValue": "" + }, + { + "name": "authenticationRequired", + "type": "boolean", + "description": "Flag indicating if the endpoint requires authentication logic in the stub.", + "required": false, + "defaultValue": "false" + }, + { + "name": "statusCode", + "type": "number", + "description": "HTTP status code that the endpoint should respond with (default 200).", + "required": false, + "defaultValue": "200" + }, + { + "name": "language", + "type": "string", + "description": "Programming or specification language for output (e.g., JavaScript, Python, OpenAPI).", + "required": false, + "defaultValue": "JavaScript" + } + ], + "returns": { + "type": "object", + "description": "Generated endpoint stub code or configuration as a string, with metadata like language and endpoint identifier." + }, + "aiAgent": { + "useCase": "Use this tool to automatically generate mock or stub API endpoint implementations for integration testing or automated test scenarios, based on detailed endpoint configuration. It helps to rapidly scaffold endpoint mocks without manual coding.", + "limitations": "Does not fully implement backend logic or persistence, only generates static stubs based on input specs. Complex dynamic behavior or data-driven mocking is not supported.", + "examples": [ + "Build a POST /users endpoint stub with JSON body request and 201 response.", + "Generate a GET /items/{itemId} endpoint stub that requires authentication and returns a JSON object.", + "Create a DELETE /orders/{orderId} stub with status 204 response and no body." + ] + }, + "tags": [ + "testing", + "automation", + "api", + "endpoint", + "stub", + "mock", + "integration" + ], + "examples": [ + { + "inputJson": "{\"httpMethod\":\"POST\",\"endpointPath\":\"/users\",\"requestParams\":{\"body\":{\"name\":\"string\",\"email\":\"string\"}},\"responseSchema\":{\"id\":\"number\",\"name\":\"string\",\"email\":\"string\"},\"authenticationRequired\":true,\"statusCode\":201,\"language\":\"JavaScript\"}", + "description": "Generate a POST /users endpoint stub requiring auth and accepting a JSON body with name and email, responding with 201 and a user object." + }, + { + "inputJson": "{\"httpMethod\":\"GET\",\"endpointPath\":\"/products/{productId}\",\"requestParams\":{\"path\":{\"productId\":\"string\"}},\"responseSchema\":{\"productId\":\"string\",\"name\":\"string\",\"price\":\"number\"},\"authenticationRequired\":false,\"statusCode\":200,\"language\":\"OpenAPI\"}", + "description": "Generate a GET endpoint for /products/{productId} returning a product object in OpenAPI spec format." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Endpoint", + "context": null + } + }, + { + "name": "testing-automation.generateKPI", + "description": "Generates key performance indicators (KPIs) for automated testing results by analyzing test execution data such as pass rates, failure trends, test coverage, and execution times. Accepts raw test logs or summarized test reports as input and outputs structured KPI metrics to help evaluate testing effectiveness and identify bottlenecks.", + "category": "testing-automation", + "parameters": [ + { + "name": "testData", + "type": "array", + "description": "An array of test result objects including testId, status, executionTime, and optional error details representing individual test executions.", + "required": true, + "defaultValue": "" + }, + { + "name": "kpiMetrics", + "type": "array", + "description": "List of specific KPIs to calculate, e.g., ['passRate', 'failureRate', 'averageExecutionTime', 'testCoverage']", + "required": true, + "defaultValue": "[\"passRate\", \"failureRate\", \"averageExecutionTime\"]" + }, + { + "name": "timeRange", + "type": "object", + "description": "Optional time range filter with 'start' and 'end' ISO date strings to limit the tests considered for KPI calculation.", + "required": false, + "defaultValue": "" + }, + { + "name": "groupBy", + "type": "string", + "description": "Optional field name by which to group KPIs, e.g., 'testSuite', 'component', or 'tester'.", + "required": false, + "defaultValue": "" + }, + { + "name": "minTestCount", + "type": "number", + "description": "Minimum number of tests required in a group to report KPIs for that group.", + "required": false, + "defaultValue": "1" + } + ], + "returns": { + "type": "object", + "description": "An object containing calculated KPIs keyed by the group (or 'overall' if no grouping), each with the requested KPI metrics and their values." + }, + "aiAgent": { + "useCase": "Use this tool when you have automated test execution data and need quantitative KPIs to monitor testing health, identify trends, and improve test quality or coverage. It is ideal for generating dashboards or reports that summarize test results over time or by components.", + "limitations": "Cannot perform root cause analysis of failures or recommend fixes; relies on accurate and complete input test data; limited to KPIs pre-defined or supported by the tool.", + "examples": [ + "Calculate overall pass rate and average execution time from last week's test executions.", + "Generate KPIs grouped by test suite to identify suites with high failure rates.", + "Filter test data by a specific date range and report test coverage KPI." + ] + }, + "tags": [ + "testing", + "automation", + "KPI", + "analytics", + "test-metrics", + "quality-assurance" + ], + "examples": [ + { + "inputJson": "{\"testData\":[{\"testId\":\"T1\",\"status\":\"pass\",\"executionTime\":120},{\"testId\":\"T2\",\"status\":\"fail\",\"executionTime\":200}],\"kpiMetrics\":[\"passRate\",\"failureRate\",\"averageExecutionTime\"],\"timeRange\":{},\"groupBy\":\"\",\"minTestCount\":1}", + "description": "Calculate pass rate, failure rate, and average execution time overall." + }, + { + "inputJson": "{\"testData\":[{\"testId\":\"T1\",\"status\":\"pass\",\"executionTime\":150,\"testSuite\":\"Login\"},{\"testId\":\"T2\",\"status\":\"fail\",\"executionTime\":300,\"testSuite\":\"Login\"},{\"testId\":\"T3\",\"status\":\"pass\",\"executionTime\":100,\"testSuite\":\"Dashboard\"}],\"kpiMetrics\":[\"passRate\"],\"groupBy\":\"testSuite\"}", + "description": "Calculate pass rate grouped by test suite." + }, + { + "inputJson": "{\"testData\":[{\"testId\":\"T1\",\"status\":\"pass\",\"executionTime\":120,\"date\":\"2024-05-01T10:00:00Z\"},{\"testId\":\"T2\",\"status\":\"fail\",\"executionTime\":200,\"date\":\"2024-05-02T10:00:00Z\"}],\"kpiMetrics\":[\"passRate\"],\"timeRange\":{\"start\":\"2024-05-01T00:00:00Z\",\"end\":\"2024-05-01T23:59:59Z\"}}", + "description": "Calculate pass rate for tests executed on May 1, 2024." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "KPI", + "context": null + } + }, + { + "name": "testing-automation.generateDashboard", + "description": "Generates an interactive testing analytics dashboard based on provided test execution data and configuration. Accepts arrays of test results, metadata, and user-defined metrics. Processes data to create visualizations like pass rates, failure trends, and test coverage summarized in a customizable dashboard layout. Outputs a structured dashboard object ready for rendering or reporting.", + "category": "testing-automation", + "parameters": [ + { + "name": "testResults", + "type": "array", + "description": "An array of test execution result objects including status, timestamps, and test identifiers.", + "required": true, + "defaultValue": "" + }, + { + "name": "metrics", + "type": "array", + "description": "List of specific metrics or KPIs to include in the dashboard, such as pass rate, average duration, failure frequency.", + "required": false, + "defaultValue": "[\"passRate\",\"failureRate\"]" + }, + { + "name": "timeRange", + "type": "object", + "description": "Specified start and end timestamps to filter test results by execution date.", + "required": false, + "defaultValue": "" + }, + { + "name": "groupBy", + "type": "string", + "description": "Field to group test results by for trend analysis, e.g., 'testSuite', 'testType', or 'environment'.", + "required": false, + "defaultValue": "testSuite" + }, + { + "name": "includeLogs", + "type": "boolean", + "description": "Whether to include recent error logs or stack traces in the dashboard for failed tests.", + "required": false, + "defaultValue": "false" + }, + { + "name": "dashboardLayout", + "type": "string", + "description": "Preferred layout style of the dashboard, e.g., 'summary', 'detailed', 'custom'.", + "required": false, + "defaultValue": "summary" + } + ], + "returns": { + "type": "object", + "description": "A dashboard object containing structured data and visualization components representing analytics of the test runs, suitable for rendering in a UI or exporting." + }, + "aiAgent": { + "useCase": "Use this tool when needing an automated, consolidated view of software test executions to analyze quality trends, identify problematic areas, and communicate results through rich visual dashboards. Ideal for continuous integration reports, QA team reviews, and stakeholder reporting.", + "limitations": "Does not execute tests or fetch raw data autonomously; requires pre-collected and formatted test results input. Visualization is provided as structured data, not as rendered graphics or UI components.", + "examples": [ + "Generate a dashboard for the last week's regression test runs grouped by test suite showing pass and failure rates.", + "Create a detailed dashboard including error logs for failed tests in nightly build executions.", + "Produce a summary layout dashboard to track test coverage and average duration over a custom time range." + ] + }, + "tags": [ + "testing", + "automation", + "dashboard", + "analytics", + "test-results", + "visualization" + ], + "examples": [ + { + "inputJson": "{\"testResults\":[{\"testId\":\"loginTest\",\"status\":\"passed\",\"timestamp\":\"2024-06-15T10:00:00Z\",\"duration\":12},{\"testId\":\"purchaseTest\",\"status\":\"failed\",\"timestamp\":\"2024-06-15T10:05:00Z\",\"duration\":30}],\"metrics\":[\"passRate\",\"failureRate\"],\"timeRange\":{\"start\":\"2024-06-01T00:00:00Z\",\"end\":\"2024-06-15T23:59:59Z\"},\"groupBy\":\"testId\",\"includeLogs\":true,\"dashboardLayout\":\"detailed\"}", + "description": "Generate a detailed dashboard from test results for the first half of June, grouped by test ID, including pass/failure rates and failure logs." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Dashboard", + "context": null + } + }, + { + "name": "testing-automation.createKPI", + "description": "Generates customizable Key Performance Indicators (KPIs) for automated testing projects by analyzing test run data and metrics. Accepts test suite results and configuration inputs to calculate KPIs such as pass rate, average execution time, and defect density. Outputs structured KPI reports to track testing effectiveness over time.", + "category": "testing-automation", + "parameters": [ + { + "name": "testRunData", + "type": "array", + "description": "Array of test run result objects including status, execution time, and defects for each test case.", + "required": true, + "defaultValue": "" + }, + { + "name": "kpiTypes", + "type": "array", + "description": "List of KPI types to calculate from available options such as ['passRate','avgExecutionTime','defectDensity'].", + "required": true, + "defaultValue": "[\"passRate\",\"avgExecutionTime\"]" + }, + { + "name": "timeFrame", + "type": "string", + "description": "The time period during which to calculate KPIs, e.g., 'lastWeek', 'lastMonth', 'custom'.", + "required": false, + "defaultValue": "lastWeek" + }, + { + "name": "customDateRange", + "type": "object", + "description": "If timeFrame is 'custom', specifies {\"startDate\":\"YYYY-MM-DD\",\"endDate\":\"YYYY-MM-DD\"} for KPI calculation.", + "required": false, + "defaultValue": "" + }, + { + "name": "groupBy", + "type": "string", + "description": "Optional dimension to group KPI results by, e.g., 'testSuite', 'component', or 'tester'.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeTrendAnalysis", + "type": "boolean", + "description": "Whether to include trend analysis over the selected timeframe comparing current KPIs to previous periods.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing calculated KPI metrics with key-value pairs per KPI type, optionally grouped by specified dimensions. Includes numeric values and trend indicators if requested." + }, + "aiAgent": { + "useCase": "Use this tool when you need to derive meaningful KPIs from automated testing results to monitor and evaluate test effectiveness, test quality, and efficiency over time across different test suites or components. It helps in decision making for quality assurance and release readiness.", + "limitations": "This tool does not perform raw test execution or log parsing; it requires preprocessed test run data as input. It also cannot infer root causes or suggest fixes based on KPIs alone.", + "examples": [ + "Calculate pass rate and average execution time KPIs for the last month grouped by test suite.", + "Generate defect density KPI with trend analysis comparing last week to the previous week.", + "Create KPIs for a custom date range without grouping." + ] + }, + "tags": [ + "testing", + "automation", + "KPI", + "analytics", + "quality-assurance", + "reporting" + ], + "examples": [ + { + "inputJson": "{\"testRunData\":[{\"testId\":\"TC01\",\"status\":\"passed\",\"executionTime\":12.4,\"defects\":0},{\"testId\":\"TC02\",\"status\":\"failed\",\"executionTime\":10.8,\"defects\":2}],\"kpiTypes\":[\"passRate\",\"avgExecutionTime\"],\"timeFrame\":\"lastWeek\",\"groupBy\":\"testSuite\",\"includeTrendAnalysis\":true}", + "description": "Calculate pass rate and average execution time KPIs for last week, grouped by test suite, with trend analysis." + }, + { + "inputJson": "{\"testRunData\":[{\"testId\":\"TC10\",\"status\":\"passed\",\"executionTime\":15.3,\"defects\":1},{\"testId\":\"TC11\",\"status\":\"passed\",\"executionTime\":11.7,\"defects\":0}],\"kpiTypes\":[\"defectDensity\"],\"timeFrame\":\"custom\",\"customDateRange\":{\"startDate\":\"2024-01-01\",\"endDate\":\"2024-01-31\"},\"includeTrendAnalysis\":false}", + "description": "Generate defect density KPI for test runs in January 2024 with no trend analysis." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "KPI", + "context": null + } + }, + { + "name": "testing-automation.generateQuery", + "description": "Generates automated test queries based on input criteria for testing software application databases or APIs. Accepts query parameters such as target entity, filters, and query type, processes them into executable query statements for use in testing assertions or data retrieval during automation workflows.", + "category": "testing-automation", + "parameters": [ + { + "name": "targetEntity", + "type": "string", + "description": "The main database table or API resource to query in the test.", + "required": true, + "defaultValue": "" + }, + { + "name": "filters", + "type": "object", + "description": "Key-value pairs representing field conditions to apply as filters in the query.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "queryType", + "type": "string", + "description": "Type of query to generate, e.g., 'select', 'count', or 'exists' to customize query structure.", + "required": false, + "defaultValue": "select" + }, + { + "name": "maxResults", + "type": "number", + "description": "Maximum number of results to return; limits the query result size.", + "required": false, + "defaultValue": "100" + }, + { + "name": "sortBy", + "type": "string", + "description": "Optional field to sort the results by, ascending order.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated query string optimized for use in automated testing tools and assertions." + }, + "aiAgent": { + "useCase": "Use this tool when automating tests that require dynamic generation of database or API queries based on variable test parameters or filters. Ideal for generating test queries to validate data or system behavior without manually writing each query.", + "limitations": "Does not execute queries or validate query correctness against a specific database dialect; it generates syntactically generic queries that might need adjustment for specific environments.", + "examples": [ + "Generate a select query for the 'users' entity filtering by 'status:active'.", + "Create a count query to verify the number of 'orders' with 'status:pending'.", + "Generate a query to check existence of records in 'products' with 'category:electronics', limiting to 10 results." + ] + }, + "tags": [ + "testing", + "automation", + "query", + "database", + "API", + "test-generation", + "software-testing" + ], + "examples": [ + { + "inputJson": "{\"targetEntity\":\"users\",\"filters\":{\"status\":\"active\"},\"queryType\":\"select\",\"maxResults\":50,\"sortBy\":\"created_at\"}", + "description": "Generate a select query for active users, limiting to 50 results sorted by creation date." + }, + { + "inputJson": "{\"targetEntity\":\"orders\",\"filters\":{\"status\":\"pending\"},\"queryType\":\"count\"}", + "description": "Generate a count query to get the number of pending orders." + }, + { + "inputJson": "{\"targetEntity\":\"products\",\"filters\":{\"category\":\"electronics\"},\"queryType\":\"exists\",\"maxResults\":10}", + "description": "Generate an existence query for electronics products, limit to 10 to test presence." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Query", + "context": null + } + }, + { + "name": "testing-automation.createLink", + "description": "Creates a testable hyperlink element representation based on specified parameters, enabling automated test scripts to interact with consistent link objects. Accepts input such as URL, display text, and optional attributes, producing a structured link object suitable for UI automation frameworks.", + "category": "testing-automation", + "parameters": [ + { + "name": "url", + "type": "string", + "description": "The URL that the created link should point to.", + "required": true, + "defaultValue": "" + }, + { + "name": "displayText", + "type": "string", + "description": "The text shown for the link in the UI.", + "required": true, + "defaultValue": "" + }, + { + "name": "openInNewTab", + "type": "boolean", + "description": "Flag indicating whether the link should open in a new browser tab.", + "required": false, + "defaultValue": "false" + }, + { + "name": "cssClass", + "type": "string", + "description": "Optional CSS class(es) to apply to the link element for styling or identification.", + "required": false, + "defaultValue": "" + }, + { + "name": "id", + "type": "string", + "description": "Optional ID attribute for the link element to uniquely identify it during tests.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the configured link element with properties for URL, text, target behavior, and optional attributes, formatted for automated UI testing usage." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate standardized clickable link elements for test automation scripts or UI component simulations, ensuring consistent link creation during automated testing or mock setups.", + "limitations": "This tool does not render actual UI elements or verify link usability in browsers; it only creates structured link representations for automation purposes.", + "examples": [ + "Create a link for testing navigation to https://example.com with text 'Visit Example'.", + "Generate a link that opens in a new tab with custom CSS class for styling validation.", + "Produce a uniquely identified link element for targeted UI interaction in automated tests." + ] + }, + "tags": [ + "testing", + "automation", + "link", + "ui", + "web", + "element", + "create" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://example.com\",\"displayText\":\"Visit Example\",\"openInNewTab\":false,\"cssClass\":\"nav-link\",\"id\":\"link1\"}", + "description": "Create a standard link to https://example.com with text 'Visit Example', styled with 'nav-link' CSS class and unique ID for testing." + }, + { + "inputJson": "{\"url\":\"https://docs.example.com\",\"displayText\":\"Documentation\",\"openInNewTab\":true,\"cssClass\":\"doc-link\",\"id\":\"\"}", + "description": "Generate a link opening in a new tab to documentation URL with text 'Documentation' and a CSS class to identify it during testing." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Link", + "context": null + } + }, + { + "name": "testing-automation.createDashboard", + "description": "Creates a customizable test analytics dashboard by accepting test result data and configuration options. It processes aggregated test metrics like pass rates, failure trends, and runtime statistics, and outputs an interactive dashboard URL or embed code for real-time testing insights.", + "category": "testing-automation", + "parameters": [ + { + "name": "testResultData", + "type": "array", + "description": "Array of test result objects containing test names, statuses, timestamps, and error details.", + "required": true, + "defaultValue": "" + }, + { + "name": "dashboardTitle", + "type": "string", + "description": "Title to display on the dashboard header.", + "required": false, + "defaultValue": "\"Test Analytics Dashboard\"" + }, + { + "name": "metricsToInclude", + "type": "array", + "description": "List of metric keys to display on the dashboard, e.g., ['passRate','failures','avgRuntime'].", + "required": false, + "defaultValue": "[\"passRate\",\"failures\",\"avgRuntime\"]" + }, + { + "name": "refreshIntervalSeconds", + "type": "number", + "description": "Interval in seconds at which the dashboard auto-refreshes to show latest test data.", + "required": false, + "defaultValue": "60" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output: 'url' to a hosted dashboard or 'embedCode' for HTML embed snippet.", + "required": false, + "defaultValue": "\"url\"" + }, + { + "name": "theme", + "type": "string", + "description": "Visual theme of the dashboard, e.g., 'light' or 'dark'.", + "required": false, + "defaultValue": "\"light\"" + } + ], + "returns": { + "type": "object", + "description": "An object containing dashboard access information: URL or embed code, dashboard ID, and metadata like last updated time." + }, + "aiAgent": { + "useCase": "Use this tool when you need to generate a real-time dashboard to visualize automated testing results, helping teams monitor test performance, identify flaky tests, and track trends over time without manual reporting.", + "limitations": "Does not perform test execution or result aggregation from raw logs; expects structured test result data as input. It cannot customize visualizations beyond predefined metrics or replace dedicated BI tools.", + "examples": [ + "Generate a dashboard with pass/fail trends and average runtime for nightly regression tests.", + "Create an embeddable dashboard snippet to show test suite health on the team's portal page.", + "Get a URL to a live dashboard refreshing every 30 seconds for continuous integration test reporting." + ] + }, + "tags": [ + "testing", + "automation", + "dashboard", + "analytics", + "test-reporting", + "continuous-integration" + ], + "examples": [ + { + "inputJson": "{\"testResultData\":[{\"testName\":\"LoginTest\",\"status\":\"passed\",\"timestamp\":\"2024-06-10T08:30:00Z\"},{\"testName\":\"PaymentTest\",\"status\":\"failed\",\"timestamp\":\"2024-06-10T08:35:00Z\",\"error\":\"Timeout\"}],\"dashboardTitle\":\"Nightly Regression Tests\",\"metricsToInclude\":[\"passRate\",\"failures\"],\"refreshIntervalSeconds\":120,\"outputFormat\":\"url\",\"theme\":\"dark\"}", + "description": "Create a dark-themed dashboard URL focusing on pass rate and failures with 2-minute auto-refresh." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Dashboard", + "context": null + } + }, + { + "name": "testing-automation.createRisk", + "description": "This tool accepts detailed inputs about software testing scenarios, such as test case descriptions, affected components, and severity levels, then analyzes the inputs to generate a structured risk report. The output includes identified risks, their potential impact, likelihood, and suggested mitigation strategies for automated testing pipelines.", + "category": "testing-automation", + "parameters": [ + { + "name": "testScenarioDescription", + "type": "string", + "description": "Detailed description of the test scenario or condition under consideration.", + "required": true, + "defaultValue": "" + }, + { + "name": "affectedComponents", + "type": "array", + "description": "List of system components or modules affected by the scenario.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "severityLevel", + "type": "string", + "description": "Severity level of the potential risk, e.g., 'low', 'medium', 'high'.", + "required": true, + "defaultValue": "" + }, + { + "name": "likelihood", + "type": "string", + "description": "Estimated probability of the risk occurring, e.g., 'unlikely', 'possible', 'likely'.", + "required": true, + "defaultValue": "" + }, + { + "name": "mitigationStrategies", + "type": "array", + "description": "Optional list of suggested mitigation strategies or controls.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "includeComplianceAssessment", + "type": "boolean", + "description": "Whether to assess the risk impact against compliance standards (if applicable).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "A structured risk report object containing risk name, description, impact, likelihood, severity, and mitigation recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when generating formalized risk assessments from automated testing scenarios to assist risk management and decision-making processes in development pipelines. It helps prioritize test failures or scenario risks based on impact and likelihood, and suggests mitigations.", + "limitations": "This tool does not perform real security vulnerability scanning or dynamic code analysis. It relies on input accuracy and does not replace expert security reviews. Compliance assessments are limited to provided metadata and may not cover all regulatory requirements.", + "examples": [ + "Generate a risk report for a login module test case that fails rate limiting checks.", + "Create a risk assessment for a scenario where a payment API returns timeout errors under load.", + "Produce mitigation suggestions for risks identified in a data encryption test suite." + ] + }, + "tags": [ + "testing", + "risk-assessment", + "automation", + "security", + "quality-assurance", + "mitigation" + ], + "examples": [ + { + "inputJson": "{\"testScenarioDescription\":\"Automated test detects that session timeout does not trigger as expected after 30 minutes of inactivity.\",\"affectedComponents\":[\"SessionManagement\",\"AuthenticationService\"],\"severityLevel\":\"high\",\"likelihood\":\"likely\",\"mitigationStrategies\":[\"Implement stricter session timeout policies\",\"Add automated alerts for session expiration failures\"],\"includeComplianceAssessment\":true}", + "description": "Assess risk of missing session timeout detection in authentication workflows." + }, + { + "inputJson": "{\"testScenarioDescription\":\"Load test reveals API endpoint returns 503 errors under moderate traffic.\",\"affectedComponents\":[\"PaymentAPI\",\"LoadBalancer\"],\"severityLevel\":\"medium\",\"likelihood\":\"possible\",\"mitigationStrategies\":[\"Scale backend servers dynamically\",\"Optimize load balancer configuration\"],\"includeComplianceAssessment\":false}", + "description": "Create risk analysis for intermittent API downtime detected during load testing." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Risk", + "context": null + } + }, + { + "name": "testing-automation.createPayment", + "description": "This tool automates the creation of payment transactions in a test environment. It accepts payment details such as payer information, amount, currency, and payment method, processes these inputs to simulate payment creation, and returns a structured response with payment status, transaction ID, and amount paid, facilitating automated testing workflows for payment systems.", + "category": "testing-automation", + "parameters": [ + { + "name": "payerId", + "type": "string", + "description": "The unique identifier of the payer initiating the payment.", + "required": true, + "defaultValue": "" + }, + { + "name": "amount", + "type": "number", + "description": "The amount to be paid in specified currency units.", + "required": true, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "The three-letter ISO currency code for the payment (e.g., USD, EUR).", + "required": true, + "defaultValue": "" + }, + { + "name": "paymentMethod", + "type": "string", + "description": "The payment method used (e.g., credit_card, bank_transfer, paypal).", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional description or memo for the payment.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Optional key-value pairs for additional payment metadata.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing details about the simulated payment creation, including success status, transaction ID, payment amount, and optional error messages if creation failed." + }, + "aiAgent": { + "useCase": "Use this tool when automating test scenarios involving payment processing systems where realistic payment creation simulations are needed. It helps validate integration, error handling, and payment workflows without real transactions.", + "limitations": "This tool simulates payment creation only within a testing environment; it cannot process real payments or interact with live payment gateways.", + "examples": [ + "Create a payment of $150 USD via credit card for testing order payment workflows.", + "Simulate a bank transfer payment of 200 EUR with metadata for automated invoice processing tests.", + "Generate a PayPal payment of 99.99 USD with a description for UI functional tests in payment modules." + ] + }, + "tags": [ + "automation", + "payment", + "testing", + "simulation", + "finance", + "transaction", + "QA" + ], + "examples": [ + { + "inputJson": "{\"payerId\":\"user-123\",\"amount\":150.00,\"currency\":\"USD\",\"paymentMethod\":\"credit_card\",\"description\":\"Test payment for order #456\"}", + "description": "Simulates creating a $150 payment via credit card for user user-123." + }, + { + "inputJson": "{\"payerId\":\"user-789\",\"amount\":200,\"currency\":\"EUR\",\"paymentMethod\":\"bank_transfer\",\"metadata\":{\"invoiceId\":\"inv-2024\"}}", + "description": "Simulates a 200 EUR bank transfer payment with invoice metadata for user-789." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Payment", + "context": null + } + }, + { + "name": "testing-automation.createOpportunity", + "description": "Creates a test opportunity entity within an automated testing framework for business domain applications. Accepts parameters defining opportunity details such as title, description, lead source, amount, and expected close date. Validates inputs and returns a structured confirmation with the created opportunity's unique ID and status.", + "category": "testing-automation", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title or name of the opportunity to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "A detailed description of the opportunity.", + "required": false, + "defaultValue": "" + }, + { + "name": "leadSource", + "type": "string", + "description": "The origin or source of the lead related to the opportunity (e.g., 'Web', 'Referral').", + "required": false, + "defaultValue": "" + }, + { + "name": "amount", + "type": "number", + "description": "The estimated financial value of the opportunity in the relevant currency.", + "required": false, + "defaultValue": "0" + }, + { + "name": "expectedCloseDate", + "type": "string", + "description": "The expected close date of the opportunity, in ISO 8601 format (YYYY-MM-DD).", + "required": false, + "defaultValue": "" + }, + { + "name": "probability", + "type": "number", + "description": "The probability of successfully closing the opportunity, expressed as a percentage (0-100).", + "required": false, + "defaultValue": "0" + }, + { + "name": "assignedTo", + "type": "string", + "description": "Identifier for the user or team assigned to this opportunity.", + "required": false, + "defaultValue": "" + }, + { + "name": "metadata", + "type": "object", + "description": "Additional custom key-value pairs related to the opportunity for extended test scenarios.", + "required": false, + "defaultValue": "{}" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing the unique identifier of the created opportunity, status message indicating success or failure, and any validation error details if applicable." + }, + "aiAgent": { + "useCase": "Use this tool when simulating or automating business process workflows involving the creation of sales or lead opportunities in a CRM or similar system during automated testing scenarios. It allows agents to generate realistic test data and verify system behavior under controlled inputs.", + "limitations": "This tool does not handle persistence beyond the testing framework context, nor does it integrate directly with real CRM systems. It also does not validate complex business rules beyond basic input validation.", + "examples": [ + "Create a new sales opportunity titled 'Enterprise Subscription Deal' with an estimated amount of 50000 and expected close date next month.", + "Add a lead opportunity from 'Referral' source with 75% closing probability, assigned to sales rep ID 'user123'.", + "Generate a minimal opportunity with only the required title parameter for testing defaults." + ] + }, + "tags": [ + "testing", + "automation", + "business", + "opportunity", + "CRM", + "lead management" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Enterprise Subscription Deal\",\"description\":\"Deal for enterprise-level subscription plan.\",\"leadSource\":\"Web\",\"amount\":50000,\"expectedCloseDate\":\"2024-07-15\",\"probability\":60,\"assignedTo\":\"user123\",\"metadata\":{\"region\":\"EMEA\"}}", + "description": "Create a detailed opportunity with financial and assignment details." + }, + { + "inputJson": "{\"title\":\"Referral Opportunity\",\"leadSource\":\"Referral\",\"probability\":75,\"assignedTo\":\"user123\"}", + "description": "Create an opportunity from referral source with high close probability." + }, + { + "inputJson": "{\"title\":\"Basic Opportunity\"}", + "description": "Create a minimal opportunity with only the required title." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Opportunity", + "context": null + } + }, + { + "name": "testing-automation.createQuery", + "description": "Generates a query string or object for automated test scenarios based on specified criteria. Accepts parameters defining the target data, filters, sorting, and pagination settings to construct queries used in testing data retrieval or validation steps within automated test workflows. Outputs the query in the requested format (e.g., SQL, NoSQL, RESTful).", + "category": "testing-automation", + "parameters": [ + { + "name": "queryType", + "type": "string", + "description": "Type of query to create, e.g., 'SQL', 'NoSQL', or 'REST'.", + "required": true, + "defaultValue": "" + }, + { + "name": "filterCriteria", + "type": "object", + "description": "An object specifying key-value pairs for filtering data in the query.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "sortBy", + "type": "string", + "description": "Field name to sort the results by.", + "required": false, + "defaultValue": "" + }, + { + "name": "sortOrder", + "type": "string", + "description": "Sort direction: 'asc' for ascending or 'desc' for descending.", + "required": false, + "defaultValue": "asc" + }, + { + "name": "limit", + "type": "number", + "description": "Maximum number of results to return (pagination).", + "required": false, + "defaultValue": "100" + }, + { + "name": "offset", + "type": "number", + "description": "Number of records to skip (pagination offset).", + "required": false, + "defaultValue": "0" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Format of the output query string, e.g., 'string' for raw query or 'object' for structured format.", + "required": false, + "defaultValue": "string" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated query in the specified output format, including the raw query string or structured query object." + }, + "aiAgent": { + "useCase": "This tool is useful for AI agents automating the creation of queries to retrieve or manipulate test data dynamically in various test environments. It supports building queries across different query languages and formats, enabling flexible integration into diverse testing frameworks. Use it when you need to generate parameterized or filtered queries automatically to validate application data or behavior.", + "limitations": "It does not execute queries or validate query semantics against actual databases; it builds syntactically correct queries based on input but cannot guarantee runtime correctness or database compatibility.", + "examples": [ + "Create an SQL query to retrieve active users sorted by last login descending, limit 50.", + "Generate a NoSQL query filtering orders with status 'pending' and sort by creation date ascending.", + "Produce a REST query string to request products filtered by category 'electronics' with pagination." + ] + }, + "tags": [ + "testing", + "automation", + "query", + "test-data", + "SQL", + "NoSQL", + "REST", + "filtering" + ], + "examples": [ + { + "inputJson": "{\"queryType\":\"SQL\",\"filterCriteria\":{\"status\":\"active\"},\"sortBy\":\"last_login\",\"sortOrder\":\"desc\",\"limit\":50,\"offset\":0,\"outputFormat\":\"string\"}", + "description": "Generate an SQL query string to select active users sorted by last login date descending, limited to 50 records." + }, + { + "inputJson": "{\"queryType\":\"NoSQL\",\"filterCriteria\":{\"order_status\":\"pending\"},\"sortBy\":\"created_at\",\"sortOrder\":\"asc\",\"limit\":100,\"offset\":0,\"outputFormat\":\"object\"}", + "description": "Generate a NoSQL structured query object to find pending orders sorted by creation date ascending." + }, + { + "inputJson": "{\"queryType\":\"REST\",\"filterCriteria\":{\"category\":\"electronics\"},\"limit\":20,\"offset\":10,\"outputFormat\":\"string\"}", + "description": "Create a RESTful query string for products filtered by electronics category with pagination (limit 20, offset 10)." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Query", + "context": null + } + }, + { + "name": "testing-automation.createVariable", + "description": "Creates a new variable definition for use in automated test scripts. Accepts variable name, type, initial value, scope, and optional description. Processes input to generate a standardized variable object compatible with testing frameworks, outputting the variable metadata.", + "category": "testing-automation", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "The unique identifier for the variable to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "variableType", + "type": "string", + "description": "Data type of the variable, e.g., string, number, boolean, array, object.", + "required": true, + "defaultValue": "" + }, + { + "name": "initialValue", + "type": "string", + "description": "The initial value assigned to the variable, as a string representation.", + "required": false, + "defaultValue": "" + }, + { + "name": "scope", + "type": "string", + "description": "Defines the variable scope, e.g., global, local, or testCase.", + "required": false, + "defaultValue": "local" + }, + { + "name": "description", + "type": "string", + "description": "Optional human-readable description explaining the purpose of the variable.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created variable with name, type, value, scope, and description properties, ready for integration into test scripts." + }, + "aiAgent": { + "useCase": "Use this tool when generating or modifying automated test scripts to programmatically define new variables with specified attributes ensuring consistency and correctness in test automation codebases. It is particularly useful for AI agents assembling or updating complex test configurations.", + "limitations": "This tool does not execute code or validate variable usage context within specific test frameworks; it only generates variable definitions. It does not manage variable lifecycle or runtime behavior.", + "examples": [ + "Create a string variable named 'username' with initial value 'testUser' in the global scope.", + "Define a boolean variable 'isLoggedIn' initialized to false, local to the current test case.", + "Add a numeric variable 'retryCount' without initial value in default scope with a description explaining its role in retry logic." + ] + }, + "tags": [ + "testing", + "automation", + "variable", + "code-generation", + "test-scripting" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"username\",\"variableType\":\"string\",\"initialValue\":\"testUser\",\"scope\":\"global\",\"description\":\"Stores the username for login tests.\"}", + "description": "Create a global string variable 'username' initialized to 'testUser' with a descriptive note." + }, + { + "inputJson": "{\"variableName\":\"isLoggedIn\",\"variableType\":\"boolean\",\"initialValue\":\"false\",\"scope\":\"local\",\"description\":\"Indicates login state during tests.\"}", + "description": "Define a local boolean variable 'isLoggedIn' with initial value false." + }, + { + "inputJson": "{\"variableName\":\"retryCount\",\"variableType\":\"number\",\"initialValue\":\"\",\"scope\":\"local\",\"description\":\"Counts number of retries on failed requests.\"}", + "description": "Create a local numeric variable 'retryCount' without initial value and add a description." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Variable", + "context": null + } + }, + { + "name": "devops.analyzeHeading", + "description": "Analyzes a given heading string found in documentation files or code comments within a DevOps context to determine its clarity, relevance, and formatting quality. Accepts the heading text and optional context like heading level and surrounding text, then returns an evaluation score and improvement suggestions to help standardize documentation and improve readibility in deployment or infrastructure projects.", + "category": "devops", + "parameters": [ + { + "name": "headingText", + "type": "string", + "description": "The exact text content of the heading to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "headingLevel", + "type": "number", + "description": "The heading level (e.g., 1 for H1, 2 for H2) to understand its importance and formatting context. Optional but recommended.", + "required": false, + "defaultValue": "" + }, + { + "name": "contextText", + "type": "string", + "description": "Optional surrounding text or description that provides additional context for the heading to improve analysis accuracy.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing a clarity score (0-100), relevance rating (string), a list of suggestions for improvement, and a boolean indicating if the heading complies with specified style guidelines." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to assess the quality and compliance of headings in deployment or infrastructure documentation, such as README files or internal wikis, to ensure consistent and clear documentation practices across projects.", + "limitations": "Cannot fully understand domain-specific meaning or deep semantic relevance beyond format and general clarity; suggestions are stylistic and may need human review.", + "examples": [ + "Analyze the heading 'Continuous Deployment Pipeline' at level 2 for style compliance.", + "Evaluate the heading 'Step 1: Setup Infrastructure' with surrounding context about deployment steps.", + "Check if 'Env Var Config' heading is clear and relevant in the deployment docs." + ] + }, + "tags": [ + "analysis", + "documentation", + "heading", + "devops", + "formatting", + "style", + "readability" + ], + "examples": [ + { + "inputJson": "{\"headingText\":\"Continuous Integration Overview\",\"headingLevel\":1,\"contextText\":\"This section introduces the CI process used in our codebase.\"}", + "description": "Analyzing a level 1 heading for a CI overview section in documentation." + }, + { + "inputJson": "{\"headingText\":\"Step 3: Deploy\",\"headingLevel\":2,\"contextText\":\"Details about deployment stages in the release pipeline.\"}", + "description": "Examining a step heading in deployment pipeline documentation for clarity and formatting." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Heading", + "context": null + } + }, + { + "name": "devops.analyzeThread", + "description": "Analyzes communication threads from project management or continuous integration tools to identify bottlenecks, sentiment trends, and key discussion topics. Accepts thread data in JSON format including messages, timestamps, and participants. Outputs a detailed report summarizing interaction patterns, response times, sentiment scores, and topic clusters.", + "category": "devops", + "parameters": [ + { + "name": "threadData", + "type": "object", + "description": "JSON object representing the communication thread, including messages, sender info, and timestamps.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeSentimentAnalysis", + "type": "boolean", + "description": "Whether to perform sentiment analysis on messages to assess tone and emotion.", + "required": false, + "defaultValue": "true" + }, + { + "name": "timeZone", + "type": "string", + "description": "Time zone identifier to normalize timestamps for accurate timing analysis.", + "required": false, + "defaultValue": "UTC" + }, + { + "name": "maxTopicClusters", + "type": "number", + "description": "Maximum number of discussion topic clusters to extract from the thread.", + "required": false, + "defaultValue": "5" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the thread messages to optimize analysis accuracy.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "Report object containing summary metrics such as average response times, sentiment distribution, identified key topics, participant engagement stats, and interaction bottlenecks." + }, + "aiAgent": { + "useCase": "Use this tool when needing to understand communication efficiency and dynamics within technical or development-related conversation threads, such as in Slack, Jira, or GitHub discussions. Ideal for identifying delays, sentiment shifts, and main discussion points to improve team collaboration and project flow.", + "limitations": "Cannot interpret non-textual content like images or videos embedded in threads. May have reduced accuracy for languages or dialects not supported. Does not provide real-time monitoring; works on provided thread snapshots.", + "examples": [ + "Analyze a conversation thread from a Jira issue discussion to identify why resolution slowed down.", + "Summarize and assess sentiment of recent CI/CD pipeline notifications and developer comments.", + "Extract main topics and participation stats from Slack messages related to deployment planning." + ] + }, + "tags": [ + "communication", + "analysis", + "devops", + "thread", + "sentiment", + "topic modeling", + "collaboration" + ], + "examples": [ + { + "inputJson": "{\"threadData\":{\"messages\":[{\"id\":\"m1\",\"sender\":\"user1\",\"timestamp\":\"2024-05-01T10:00:00Z\",\"text\":\"We need to fix the deployment script errors ASAP.\"},{\"id\":\"m2\",\"sender\":\"user2\",\"timestamp\":\"2024-05-01T10:15:00Z\",\"text\":\"I believe a syntax error is causing the failure.\"},{\"id\":\"m3\",\"sender\":\"user1\",\"timestamp\":\"2024-05-01T10:45:00Z\",\"text\":\"I pushed a fix, please test.\"}]},\"includeSentimentAnalysis\":true,\"timeZone\":\"UTC\",\"maxTopicClusters\":3,\"language\":\"en\"}", + "description": "Analyze a short thread from a deployment issue discussion including messages, timestamps, and participants, with sentiment analysis enabled." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Thread", + "context": null + } + }, + { + "name": "devops.analyzeDeal", + "description": "Analyzes a software deployment deal by examining contract terms, infrastructure requirements, and service level agreements (SLAs) to assess risk, compatibility with existing DevOps processes, and cost implications. Takes deal details as input and outputs a structured analysis report highlighting potential integration risks and optimization suggestions.", + "category": "devops", + "parameters": [ + { + "name": "dealDetails", + "type": "object", + "description": "Structured object containing the terms, technical requirements, and SLAs of the deployment deal to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "currentInfrastructure", + "type": "object", + "description": "Details about the current infrastructure and deployment environment to check compatibility with the deal requirements.", + "required": false, + "defaultValue": "" + }, + { + "name": "riskThreshold", + "type": "number", + "description": "A value between 0 and 1 specifying the risk tolerance level; higher values tolerate more risk.", + "required": false, + "defaultValue": "0.5" + }, + { + "name": "optimizeForCost", + "type": "boolean", + "description": "Flag indicating whether to prioritize cost optimization suggestions in the analysis.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object including risk assessment, compatibility status, cost impact estimation, and recommended next steps for the deployment deal." + }, + "aiAgent": { + "useCase": "Use this tool when evaluating new or existing software deployment agreements to automatically analyze deal terms in the context of current DevOps capabilities, identify risks or integration challenges, and generate actionable recommendations. It helps automate decision-making for deal acceptance, renegotiation, or infrastructure adjustment.", + "limitations": "This tool cannot replace detailed legal or financial advice; it focuses on technical and operational aspects of deployment deals and provides estimates rather than final decisions.", + "examples": [ + "Analyze the terms of a new cloud hosting deal against my current Kubernetes infrastructure.", + "Evaluate the SLA and technical compatibility of a proposed continuous integration service contract.", + "Provide risk and cost analysis for a software deployment agreement considering our existing DevOps pipeline." + ] + }, + "tags": [ + "analysis", + "deal", + "devops", + "risk assessment", + "infrastructure", + "sla", + "cost optimization" + ], + "examples": [ + { + "inputJson": "{\"dealDetails\":{\"contractLengthMonths\":12,\"slaUptimePercentage\":99.9,\"infrastructureRequirements\":{\"cpuCores\":8,\"memoryGb\":32}},\"currentInfrastructure\":{\"cpuCores\":16,\"memoryGb\":64,\"platform\":\"Kubernetes\"},\"riskThreshold\":0.3,\"optimizeForCost\":true}", + "description": "Analyze a 12-month contract deal with specific SLA and infrastructure requirements against a Kubernetes cluster with given resources, assessing risk under a moderate risk threshold, prioritizing cost optimization." + }, + { + "inputJson": "{\"dealDetails\":{\"contractLengthMonths\":24,\"slaUptimePercentage\":99.99,\"infrastructureRequirements\":{\"cpuCores\":32,\"memoryGb\":128}},\"currentInfrastructure\":{\"cpuCores\":16,\"memoryGb\":64,\"platform\":\"AWS EC2\"},\"riskThreshold\":0.7,\"optimizeForCost\":false}", + "description": "Evaluate a 2-year deal with high SLA and large resource requirements against smaller existing AWS EC2 infrastructure, with higher risk tolerance, focusing on compatibility and risk but not cost optimization." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Deal", + "context": null + } + }, + { + "name": "devops.analyzeHTML", + "description": "Analyzes HTML code provided as a string or file to extract key metrics such as element counts, potential accessibility issues, inline styles, script tags, and unused CSS classes. Outputs a structured report to aid DevOps and frontend teams in optimizing and validating HTML before deployment.", + "category": "devops", + "parameters": [ + { + "name": "htmlContent", + "type": "string", + "description": "Raw HTML content as a string to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "checkAccessibility", + "type": "boolean", + "description": "Flag to enable accessibility checks on the HTML content.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxElementCount", + "type": "number", + "description": "Threshold for total HTML element count to flag as potentially excessive complexity.", + "required": false, + "defaultValue": "5000" + }, + { + "name": "includeInlineStyles", + "type": "boolean", + "description": "Flag to report occurrences of inline CSS styles within HTML elements.", + "required": false, + "defaultValue": "true" + }, + { + "name": "reportUnusedCssClasses", + "type": "boolean", + "description": "Flag to identify CSS classes declared but unused in the HTML content.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Structured report including total elements, list of element types and counts, accessible issue summaries, inline styles count, script tag count, and unused CSS classes." + }, + "aiAgent": { + "useCase": "Use this tool when needing to assess the quality and complexity of HTML code for deployment pipelines or during continuous integration. It helps identify potential issues such as accessibility problems, excessive DOM complexity, or anti-patterns like inline styling that could impact performance and maintainability.", + "limitations": "This tool analyzes only HTML content statically; it does not execute JavaScript or handle dynamically generated content. It does not fully validate HTML for correctness or run a full accessibility compliance audit.", + "examples": [ + "Analyze provided HTML string for accessibility issues and inline styles.", + "Check an HTML file for excessive number of elements and unused CSS classes.", + "Generate a report summarizing element counts and script usage from raw HTML code." + ] + }, + "tags": [ + "analysis", + "html", + "devops", + "accessibility", + "frontend", + "optimization" + ], + "examples": [ + { + "inputJson": "{\"htmlContent\":\"

Title

This is a paragraph.

\",\"checkAccessibility\":true,\"includeInlineStyles\":true,\"reportUnusedCssClasses\":true}", + "description": "Analyze an HTML snippet containing a style block with unused CSS, inline styles, and a script tag." + }, + { + "inputJson": "{\"htmlContent\":\"
TextMore Text
\",\"checkAccessibility\":false,\"includeInlineStyles\":false,\"reportUnusedCssClasses\":false}", + "description": "Analyze minimal HTML content without accessibility or style reports." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "HTML", + "context": null + } + }, + { + "name": "devops.uploadCSV", + "description": "Uploads a CSV file to a specified remote server or cloud storage within a DevOps pipeline. It accepts CSV data as a string or file path, validates the CSV format optionally, and uploads it using protocols like SFTP or HTTP to a given destination. Returns a status report including success or error details.", + "category": "devops", + "parameters": [ + { + "name": "csvData", + "type": "string", + "description": "CSV content as a string; mutually exclusive with csvFilePath. Required if csvFilePath is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "csvFilePath", + "type": "string", + "description": "Local path to a CSV file to be uploaded; mutually exclusive with csvData. Required if csvData is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "destinationUrl", + "type": "string", + "description": "URL or path of the remote server or cloud storage location to upload the CSV file to (e.g., sftp://host/path or https://bucket-name.s3.amazonaws.com).", + "required": true, + "defaultValue": "" + }, + { + "name": "authentication", + "type": "object", + "description": "Authentication credentials needed to access the destination server, such as username, password, privateKey, or token.", + "required": true, + "defaultValue": "" + }, + { + "name": "validateCSV", + "type": "boolean", + "description": "If true, performs basic CSV validation (checks for consistent columns and format) before uploading.", + "required": false, + "defaultValue": "true" + }, + { + "name": "overwrite", + "type": "boolean", + "description": "If true, overwrite existing file at the destination if it exists; otherwise, fail if file exists.", + "required": false, + "defaultValue": "false" + }, + { + "name": "uploadMethod", + "type": "string", + "description": "Protocol to use for uploading: e.g., 'sftp', 'httpPut', 'awsS3'. Determines upload implementation.", + "required": true, + "defaultValue": "sftp" + } + ], + "returns": { + "type": "object", + "description": "An object reporting the status of the upload operation including success boolean, message string, and optionally an error code." + }, + "aiAgent": { + "useCase": "Use this tool when you need to automate uploading CSV files as part of a deployment or data integration workflow in DevOps pipelines. Suitable for pushing config files, data snapshots, or reports to servers or cloud storage with authentication and optional validation to ensure data integrity before upload.", + "limitations": "Does not parse or transform CSV content beyond basic validation; does not handle large stream uploads or multipart uploads natively; upload methods must support provided authentication schemes; error handling depends on destination server responses.", + "examples": [ + "Upload a CSV config file stored locally to a secured SFTP server with overwrite enabled.", + "Upload a CSV content string to an AWS S3 bucket using an access token.", + "Validate and upload a CSV report to an HTTP endpoint with basic auth." + ] + }, + "tags": [ + "upload", + "csv", + "devops", + "automation", + "sftp", + "http", + "aws", + "file-transfer" + ], + "examples": [ + { + "inputJson": "{\"csvFilePath\":\"./reports/metrics.csv\",\"destinationUrl\":\"sftp://deploy.example.com/configs/metrics.csv\",\"authentication\":{\"username\":\"deployuser\",\"password\":\"securePass123\"},\"validateCSV\":true,\"overwrite\":true,\"uploadMethod\":\"sftp\"}", + "description": "Upload local CSV file './reports/metrics.csv' to an SFTP server path with overwrite enabled." + }, + { + "inputJson": "{\"csvData\":\"id,name,score\\n1,Alice,85\\n2,Bob,90\",\"destinationUrl\":\"https://mybucket.s3.amazonaws.com/data/stats.csv\",\"authentication\":{\"token\":\"AWS_TOKEN_ABC123\"},\"validateCSV\":true,\"overwrite\":false,\"uploadMethod\":\"awsS3\"}", + "description": "Upload CSV data from string to AWS S3 bucket without overwriting existing file." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "CSV", + "context": null + } + }, + { + "name": "devops.downloadCSV", + "description": "Downloads a CSV file from a specified remote HTTP/HTTPS URL and optionally saves it to a local file path. Validates the URL format and provides the CSV content as a string or writes it directly to disk. Useful for automating retrieval of CSV data for deployment or CI/CD pipelines.", + "category": "devops", + "parameters": [ + { + "name": "url", + "type": "string", + "description": "The HTTP or HTTPS URL from which to download the CSV file.", + "required": true, + "defaultValue": "" + }, + { + "name": "saveToPath", + "type": "string", + "description": "Optional local file path to save the downloaded CSV content. If omitted, the CSV content is returned as a string.", + "required": false, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Timeout in seconds for the HTTP request. Defaults to 30 seconds.", + "required": false, + "defaultValue": "30" + }, + { + "name": "headers", + "type": "object", + "description": "Optional HTTP headers to include in the request as key-value pairs.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "verifySSL", + "type": "boolean", + "description": "Whether to verify SSL certificates for HTTPS requests. Defaults to true.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing 'content' (the CSV data as string if not saved to file), 'savedFilePath' (path if saved), and 'status' (HTTP status code)." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically retrieve CSV files from web URLs during deployment or automation tasks, such as importing configuration data, environment variables, or deployment manifests. It enables agents to fetch fresh data from remote sources efficiently.", + "limitations": "Does not parse or validate CSV content beyond basic download. Does not support FTP or other protocols besides HTTP/HTTPS. The caller must handle large files appropriately to avoid memory issues.", + "examples": [ + "Download CSV from a public URL and return content as string.", + "Download CSV and save it to a specific local path for later processing.", + "Download CSV with custom HTTP headers and SSL verification disabled." + ] + }, + "tags": [ + "download", + "CSV", + "HTTP", + "devops", + "automation", + "file", + "network", + "fetch" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://example.com/data/config.csv\"}", + "description": "Download CSV from a public URL and return its content as string." + }, + { + "inputJson": "{\"url\":\"https://example.com/data/state.csv\",\"saveToPath\":\"/tmp/state.csv\"}", + "description": "Download CSV and save it locally at /tmp/state.csv." + }, + { + "inputJson": "{\"url\":\"https://secure.example.com/data/metrics.csv\",\"headers\":{\"Authorization\":\"Bearer token123\"},\"verifySSL\":false}", + "description": "Download CSV with authorization header and without verifying SSL certificates." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "CSV", + "context": null + } + }, + { + "name": "devops.formatSentence", + "description": "This tool accepts a raw sentence string and formats it according to specified style rules commonly used in DevOps documentation and commit messages. It processes input text by adjusting capitalization, punctuation, and optionally adds a prefix or suffix. The output is a formatted sentence string suitable for logs, documentation, or commit descriptions.", + "category": "devops", + "parameters": [ + { + "name": "sentence", + "type": "string", + "description": "The raw input sentence that needs formatting.", + "required": true, + "defaultValue": "" + }, + { + "name": "capitalize", + "type": "boolean", + "description": "If true, capitalizes the first character of the sentence.", + "required": false, + "defaultValue": "true" + }, + { + "name": "ensurePeriod", + "type": "boolean", + "description": "If true, ensures the sentence ends with a period.", + "required": false, + "defaultValue": "true" + }, + { + "name": "toLowerRest", + "type": "boolean", + "description": "If true, converts the rest of the sentence (excluding first character) to lowercase.", + "required": false, + "defaultValue": "false" + }, + { + "name": "prefix", + "type": "string", + "description": "Optional string to prepend before the sentence.", + "required": false, + "defaultValue": "" + }, + { + "name": "suffix", + "type": "string", + "description": "Optional string to append after the sentence.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "string", + "description": "Formatted sentence string adjusted for capitalization, punctuation, and optional prefix/suffix." + }, + "aiAgent": { + "useCase": "Use this tool when you need consistent formatting of textual sentences in DevOps contexts such as commit messages, deployment logs, or documentation snippets. It helps enforce style conventions like capitalization and punctuation automatically, enhancing readability and standardization of text used in automation pipelines or version control.", + "limitations": "This tool does not perform advanced grammar corrections, language translations, or semantic analysis. It only adjusts simple typographic and stylistic sentence formatting based on provided parameters.", + "examples": [ + "Format a raw commit message to start with a capital letter and end with a period.", + "Add a specific prefix tag before a debug message sentence while standardizing punctuation.", + "Convert all but the first letter in a deployment log sentence to lowercase and append a suffix string." + ] + }, + "tags": [ + "formatting", + "devops", + "sentences", + "documentation", + "commit", + "logging" + ], + "examples": [ + { + "inputJson": "{\"sentence\":\"deploy service to production environment\", \"capitalize\":true, \"ensurePeriod\":true}", + "description": "Capitalizes the first letter and adds a period if missing." + }, + { + "inputJson": "{\"sentence\":\"FIX the broken pipeline\", \"toLowerRest\":true, \"ensurePeriod\":false}", + "description": "Capitalizes first letter only, converts rest to lowercase, does not add period." + }, + { + "inputJson": "{\"sentence\":\"restart completed\", \"prefix\":\"[INFO] \", \"suffix\":\" [OK]\", \"capitalize\":true}", + "description": "Adds prefix and suffix, ensures capitalization." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Sentence", + "context": null + } + }, + { + "name": "devops.formatCSV", + "description": "Formats CSV content according to specified options such as delimiter, quote character, line ending, and header inclusion. Accepts raw CSV string input, processes it to standardize or customize CSV format, and outputs the transformed CSV string ready for deployment pipelines or configuration files.", + "category": "devops", + "parameters": [ + { + "name": "csvContent", + "type": "string", + "description": "Raw CSV data as a string to be formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "delimiter", + "type": "string", + "description": "Character used to separate CSV fields. Default is comma ','.", + "required": false, + "defaultValue": "," + }, + { + "name": "quoteChar", + "type": "string", + "description": "Character used to quote fields containing special characters. Default is double quote '\"'.", + "required": false, + "defaultValue": "\"" + }, + { + "name": "lineEnding", + "type": "string", + "description": "Line ending style, e.g., '\\n' for Unix, '\\r\\n' for Windows. Default is '\\n'.", + "required": false, + "defaultValue": "\\n" + }, + { + "name": "includeHeaders", + "type": "boolean", + "description": "Whether to include header row in output CSV. Default is true.", + "required": false, + "defaultValue": "true" + }, + { + "name": "trimFields", + "type": "boolean", + "description": "Whether to trim whitespace from each field. Default is true.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the formatted CSV string under the key 'formattedCSV'." + }, + "aiAgent": { + "useCase": "Use this tool when you need to standardize CSV format from raw input or customize CSV output to match target system requirements in DevOps pipelines, such as adjusting delimiters, line endings, quoting behavior, or header inclusion before deployment or processing.", + "limitations": "This tool does not perform CSV parsing validations or handle malformed CSV inputs beyond basic formatting. It does not transform CSV data content, only formatting aspects.", + "examples": [ + "Format raw CSV string to use semicolon delimiter and Windows line endings for deployment.", + "Convert CSV to exclude headers and trim all fields for input to a config file.", + "Change quote character to single quote and ensure Unix line endings for CI pipeline compatibility." + ] + }, + "tags": [ + "devops", + "csv", + "formatting", + "data-processing", + "automation" + ], + "examples": [ + { + "inputJson": "{\"csvContent\":\"name, age, city\\nAlice, 30, New York\\nBob,25,Los Angeles\",\"delimiter\":\";\",\"quoteChar\":\"'\",\"lineEnding\":\"\\r\\n\",\"includeHeaders\":true,\"trimFields\":true}", + "description": "Format CSV to use semicolon delimiter, single quote characters, Windows line endings, keep headers, and trim fields." + }, + { + "inputJson": "{\"csvContent\":\"host,port\\nlocalhost,8080\\n192.168.0.1,443\",\"delimiter\":\",\",\"quoteChar\":\"\\\"\",\"lineEnding\":\"\\n\",\"includeHeaders\":false,\"trimFields\":false}", + "description": "Output CSV without headers and keep original whitespace with default comma delimiter and quote character." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "CSV", + "context": null + } + }, + { + "name": "devops.composeSentence", + "description": "This tool accepts an array of keywords or phrases related to devops topics and constructs a coherent, professional sentence suitable for documentation, commit messages, or deployment logs. It processes the input phrases to generate a fluent sentence summarizing DevOps actions or statuses.", + "category": "devops", + "parameters": [ + { + "name": "phrases", + "type": "array", + "description": "Array of strings containing keywords or short phrases to be included in the sentence.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "tone", + "type": "string", + "description": "Tone of the sentence to be composed. Options could include 'formal', 'informal', or 'neutral'.", + "required": false, + "defaultValue": "neutral" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum length of the composed sentence in characters.", + "required": false, + "defaultValue": "120" + } + ], + "returns": { + "type": "object", + "description": "An object containing the composed sentence as a string under the property 'sentence'." + }, + "aiAgent": { + "useCase": "Use this tool when needing to generate clear, concise sentences from fragmented DevOps-related input phrases, for example composing commit descriptions, deployment notes, or status updates that synthesize multiple inputs into readable English sentences.", + "limitations": "This tool cannot generate highly technical or domain-specific sentences without sufficient context and may produce generic sentences if input phrases lack detail.", + "examples": [ + "Compose a formal sentence summarizing deployment success and rollback procedures.", + "Create a neutral tone sentence from given keywords: CI pipeline, tests passed, deploy scheduled.", + "Generate a short commit message sentence including bug fix and version number." + ] + }, + "tags": [ + "devops", + "sentence", + "compose", + "automation", + "documentation", + "commit message" + ], + "examples": [ + { + "inputJson": "{\"phrases\":[\"deployment\", \"successful\", \"no errors\", \"duration 5 minutes\"], \"tone\":\"formal\", \"maxLength\":100}", + "description": "Compose a formal sentence reporting a successful deployment with no errors." + }, + { + "inputJson": "{\"phrases\":[\"CI pipeline\", \"tests passed\", \"ready for production\"], \"tone\":\"neutral\"}", + "description": "Create a neutral sentence summarizing the CI pipeline status and readiness for production." + }, + { + "inputJson": "{\"phrases\":[\"fix bug\", \"memory leak\", \"version 1.4.2\"], \"tone\":\"informal\", \"maxLength\":80}", + "description": "Generate an informal short commit message sentence about a bug fix and version update." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "compose", + "object": "Sentence", + "context": null + } + }, + { + "name": "devops.buildQuery", + "description": "Constructs dynamic SQL or NoSQL queries based on provided parameters such as filters, selection fields, sorting options, and pagination controls. Accepts query components as input and outputs a syntactically correct query string ready for executing against a data source, facilitating automated database interaction within CI/CD workflows and infrastructure scripts.", + "category": "devops", + "parameters": [ + { + "name": "databaseType", + "type": "string", + "description": "Specifies the target database type, e.g., 'sql' or 'nosql', to tailor query syntax accordingly.", + "required": true, + "defaultValue": "" + }, + { + "name": "tableOrCollection", + "type": "string", + "description": "Name of the SQL table or NoSQL collection on which the query is built.", + "required": true, + "defaultValue": "" + }, + { + "name": "selectFields", + "type": "array", + "description": "Array of strings defining which fields or columns to select; an empty array means all fields.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "filters", + "type": "object", + "description": "Key-value map of filter conditions that are combined using AND logic, e.g., { 'status': 'active', 'age': { '$gt': 18 } }.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "sortOptions", + "type": "object", + "description": "Defines sorting as field-direction pairs, e.g., { 'createdAt': 'desc' }. Supports ascending or descending order.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "limit", + "type": "number", + "description": "Limits number of results returned by the query. Zero or less means no limit.", + "required": false, + "defaultValue": "0" + }, + { + "name": "offset", + "type": "number", + "description": "Number of records to skip for pagination purposes. Zero means start from the beginning.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An object containing the constructed query string formatted for the specified database type and an optional parameters array/object if parameterized queries are used." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent or automated system needs to generate valid database queries dynamically based on user input or system parameters during deployment pipelines or infrastructure automation. It helps abstract query construction, ensuring the outputs are ready to execute without manual coding.", + "limitations": "This tool builds basic to moderately complex queries but does not optimize query execution plans or support advanced database-specific features such as triggers, stored procedures, or complex joins beyond simple table selections.", + "examples": [ + "Create a SQL query to select active users with pagination for reporting.", + "Generate a NoSQL query filtering documents by timestamp and sort descending.", + "Build a query selecting specific fields from a table with sorting and limit for API data fetching." + ] + }, + "tags": [ + "devops", + "query builder", + "database", + "automation", + "CI/CD", + "infrastructure" + ], + "examples": [ + { + "inputJson": "{\"databaseType\":\"sql\",\"tableOrCollection\":\"users\",\"selectFields\":[\"id\",\"name\",\"email\"],\"filters\":{\"status\":\"active\"},\"sortOptions\":{\"createdAt\":\"desc\"},\"limit\":10,\"offset\":0}", + "description": "Build SQL query selecting id, name, and email from users table filtered by active status, sorted by creation date descending, limited to 10 results." + }, + { + "inputJson": "{\"databaseType\":\"nosql\",\"tableOrCollection\":\"orders\",\"filters\":{\"status\":\"pending\",\"amount\":{\"$gt\":100}},\"sortOptions\":{\"orderDate\":\"asc\"},\"limit\":5}", + "description": "Generate NoSQL query for orders collection filtering pending status and amount greater than 100, sorted by order date ascending with a limit of 5." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Query", + "context": null + } + }, + { + "name": "devops.buildVariable", + "description": "Generates environment or configuration variables dynamically for deployment scripts or CI/CD pipelines. Accepts variable name, type, and optional value templates or sources, and outputs a structured variable object ready for injection into build or deployment stages.", + "category": "devops", + "parameters": [ + { + "name": "variableName", + "type": "string", + "description": "Name identifier for the variable to be built (e.g., 'API_URL').", + "required": true, + "defaultValue": "" + }, + { + "name": "variableType", + "type": "string", + "description": "Type of the variable, such as 'string', 'number', 'boolean', or 'json'.", + "required": true, + "defaultValue": "" + }, + { + "name": "valueSource", + "type": "string", + "description": "Source for the variable value, e.g., literal value, environment variable name, or file path.", + "required": false, + "defaultValue": "" + }, + { + "name": "defaultValue", + "type": "string", + "description": "Default fallback value if the source does not provide one.", + "required": false, + "defaultValue": "" + }, + { + "name": "isSecret", + "type": "boolean", + "description": "Flag indicating if the variable contains sensitive data requiring masking or encryption.", + "required": false, + "defaultValue": "false" + }, + { + "name": "description", + "type": "string", + "description": "Optional human-readable description of the variable’s purpose.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "Structured object with variableName, variableType, value, isSecret flag, and description fields representing the constructed variable." + }, + "aiAgent": { + "useCase": "Use this tool when dynamically creating or managing environment or configuration variables during automated build or deployment orchestration. It helps standardize variable creation from various input sources (literal, environment, files), including handling secret flags, so the variables can be consumed consistently during continuous integration/continuous deployment (CI/CD) processes.", + "limitations": "This tool does not fetch or retrieve external secrets securely; it only builds variable metadata and value placeholders. It also does not perform runtime injection into build systems, which must be handled separately.", + "examples": [ + "Create a string variable named 'DATABASE_URL' with a default connection string.", + "Build a boolean variable 'ENABLE_FEATURE_X' from an environment variable with a fallback to 'false'.", + "Construct a secret variable 'API_KEY' without exposing its value in logs." + ] + }, + "tags": [ + "devops", + "configuration", + "environment", + "variable", + "build", + "CI/CD", + "automation" + ], + "examples": [ + { + "inputJson": "{\"variableName\":\"DATABASE_URL\",\"variableType\":\"string\",\"valueSource\":\"env:DB_URL\",\"defaultValue\":\"postgres://localhost:5432/mydb\",\"isSecret\":false,\"description\":\"Connection string for the main database.\"}", + "description": "Builds a string variable for database URL with environment variable source and default fallback." + }, + { + "inputJson": "{\"variableName\":\"ENABLE_FEATURE_X\",\"variableType\":\"boolean\",\"valueSource\":\"env:FEATURE_X_ENABLED\",\"defaultValue\":\"false\",\"isSecret\":false,\"description\":\"Toggle for enabling feature X in deployment.\"}", + "description": "Builds a boolean configuration flag from environment source with a fallback." + }, + { + "inputJson": "{\"variableName\":\"API_KEY\",\"variableType\":\"string\",\"valueSource\":\"secret-store:apiKey\",\"defaultValue\":\"\",\"isSecret\":true,\"description\":\"Secret API key for external service authentication.\"}", + "description": "Builds a secret variable representing an API key, flagged for secure handling." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "build", + "object": "Variable", + "context": null + } + }, + { + "name": "devops.generateHTML", + "description": "Generates customizable HTML pages based on structured input parameters specifying layout, content sections, styles, and optional metadata. Accepts JSON describing the page structure and style preferences, processes this to create clean, responsive HTML markup suitable for deployment as static files or embedding in web projects.", + "category": "devops", + "parameters": [ + { + "name": "pageTitle", + "type": "string", + "description": "The title of the HTML page, used in the tag and optionally as a header in the body.", + "required": true, + "defaultValue": "" + }, + { + "name": "contentSections", + "type": "array", + "description": "An array of objects defining sections of the page. Each section object includes type (e.g., header, paragraph, image), content, and optional styling info.", + "required": true, + "defaultValue": "" + }, + { + "name": "styles", + "type": "object", + "description": "An object specifying CSS styles or theme preferences that will be embedded or linked in the HTML to style elements consistently.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeMeta", + "type": "boolean", + "description": "Flag indicating whether to include standard meta tags in the head section like charset and viewport (true by default).", + "required": false, + "defaultValue": "true" + }, + { + "name": "language", + "type": "string", + "description": "HTML document language attribute value, e.g., 'en' for English. Defaults to 'en'.", + "required": false, + "defaultValue": "en" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated HTML as a string under the key 'htmlContent', ready for writing to a file or serving via HTTP." + }, + "aiAgent": { + "useCase": "Use this tool when needing to programmatically create HTML pages for deployment pipelines, preview environments, documentation sites, or simple UI prototypes based on structured content and style inputs. It automates static HTML generation from configuration data without requiring manual coding.", + "limitations": "Does not generate dynamic or client-side interactive scripts beyond static HTML and embedded styles. Complex JavaScript-driven UI components are out of scope. Not suitable for full web app scaffolding or server-side rendering.", + "examples": [ + "Generate a landing page HTML with header, paragraphs, images, and custom color scheme.", + "Create a documentation page by passing sections as structured content and including metadata tags.", + "Produce a minimal HTML page with specified language and no additional meta tags." + ] + }, + "tags": [ + "html", + "generation", + "static-site", + "devops", + "automation", + "templating" + ], + "examples": [ + { + "inputJson": "{\"pageTitle\":\"Welcome to DevOps Portal\",\"contentSections\":[{\"type\":\"header\",\"content\":\"Hello, DevOps Team!\",\"style\":{\"color\":\"#2c3e50\",\"fontSize\":\"24px\"}},{\"type\":\"paragraph\",\"content\":\"This page summarizes the deployment status and important links.\",\"style\":{\"fontSize\":\"16px\"}},{\"type\":\"image\",\"content\":\"https://example.com/logo.png\",\"style\":{\"width\":\"200px\"}}],\"styles\":{\"body\":{\"fontFamily\":\"Arial, sans-serif\",\"margin\":\"20px\"}},\"includeMeta\":true,\"language\":\"en\"}", + "description": "Generate a styled DevOps dashboard landing page HTML from structured sections including header, paragraph, and an image with custom styles." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "HTML", + "context": null + } + }, + { + "name": "devops.generateXML", + "description": "Generates a well-formed XML document from a provided JSON object representing hierarchical data and attributes. It accepts configuration options for the root element name, indentation style, and whether to include an XML declaration. Outputs a serialized XML string ready for use in deployment scripts or configuration files.", + "category": "devops", + "parameters": [ + { + "name": "jsonData", + "type": "object", + "description": "JSON object representing the content and structure to serialize into XML, including tag names, attributes, and nested elements.", + "required": true, + "defaultValue": "" + }, + { + "name": "rootElementName", + "type": "string", + "description": "Name of the root element to use in the generated XML document (overrides root in jsonData if present).", + "required": false, + "defaultValue": "root" + }, + { + "name": "includeDeclaration", + "type": "boolean", + "description": "Whether to include the XML declaration (e.g., <?xml version=\"1.0\" encoding=\"UTF-8\"?>) at the top of the document.", + "required": false, + "defaultValue": "true" + }, + { + "name": "indentation", + "type": "string", + "description": "Characters to use for indentation (e.g., '\\t' or ' ') for pretty-printing the XML output.", + "required": false, + "defaultValue": " " + } + ], + "returns": { + "type": "object", + "description": "An object containing a single property 'xmlString' which holds the generated XML document as a string." + }, + "aiAgent": { + "useCase": "Use this tool when needing to convert configuration data or deployment instructions from JSON format to XML format, especially for DevOps pipelines or infrastructure definitions requiring XML configuration files. It is helpful when scripting or automating deployment processes needing XML output from structured data.", + "limitations": "This tool converts JSON objects to XML but does not validate domain-specific XML schemas. It does not support complex XML constructs like DTDs, namespaces beyond basic attributes, or mixed content beyond simple text nodes.", + "examples": [ + "Generate XML from a JSON object describing a server configuration with attributes and nested elements.", + "Produce XML configuration file with a custom root element and pretty indentation for easier human readability.", + "Convert JSON deployment metadata into a standard XML format including the XML declaration." + ] + }, + "tags": [ + "devops", + "xml", + "generate", + "serialization", + "configuration", + "automation" + ], + "examples": [ + { + "inputJson": "{\"jsonData\":{\"server\":{\"@ip\":\"192.168.1.1\",\"port\":8080,\"description\":\"Test server\"}},\"rootElementName\":\"deployment\",\"includeDeclaration\":true,\"indentation\":\" \"}", + "description": "Generate an XML deployment file from JSON describing a server with IP attribute and nested elements, using 'deployment' as root and 2-space indentation." + }, + { + "inputJson": "{\"jsonData\":{\"app\":{\"name\":\"MyApp\",\"version\":\"1.2.3\",\"features\":{\"feature\":[{\"@enabled\":\"true\",\"#text\":\"Logging\"},{\"@enabled\":\"false\",\"#text\":\"Debug\"}]}}},\"rootElementName\":\"\",\"includeDeclaration\":false,\"indentation\":\"\\t\"}", + "description": "Convert JSON app info to XML without declaration, using tab indentation and JSON root element as root XML element." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "XML", + "context": null + } + }, + { + "name": "devops.createSession", + "description": "Creates a new user session record for analytics during deployment or monitoring processes. Accepts session metadata such as user ID, start time, environment tags, and optional custom attributes. Processes and validates input, then generates a unique session ID and returns session details for tracking and analysis integration.", + "category": "devops", + "parameters": [ + { + "name": "userId", + "type": "string", + "description": "Identifier of the user starting the session, supports UUID or string user names.", + "required": true, + "defaultValue": "" + }, + { + "name": "startTime", + "type": "string", + "description": "ISO 8601 timestamp indicating when the session started.", + "required": true, + "defaultValue": "" + }, + { + "name": "environment", + "type": "string", + "description": "Deployment environment name such as 'production', 'staging', or 'development'.", + "required": true, + "defaultValue": "" + }, + { + "name": "customAttributes", + "type": "object", + "description": "Optional key-value pairs to attach custom metadata to the session, such as features enabled or experiment flags.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "durationSeconds", + "type": "number", + "description": "Expected or initial session duration in seconds; can be updated later.", + "required": false, + "defaultValue": "0" + }, + { + "name": "isActive", + "type": "boolean", + "description": "Indicates if the session is active upon creation. Defaults to true.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated sessionId, all input parameters echoed back, plus server timestamp confirming session creation." + }, + "aiAgent": { + "useCase": "Use this tool when tracking user or service sessions in deployment environments to monitor activity periods, gather analytics, and correlate sessions with deployments or infrastructure events. Ideal for continuous integration systems that want to analyze usage or runtime sessions reliably.", + "limitations": "This tool does not itself analyze session data trends or perform further analytics; it is only for creating and initializing session records.", + "examples": [ + "Create a new session for user 'user123' starting now in production environment.", + "Initialize a session with custom attributes including featureFlag and userRole.", + "Create a session marked inactive for scheduled batch jobs in staging." + ] + }, + "tags": [ + "devops", + "analytics", + "session", + "monitoring", + "deployment", + "tracking", + "automation" + ], + "examples": [ + { + "inputJson": "{\"userId\":\"user123\",\"startTime\":\"2024-06-22T14:30:00Z\",\"environment\":\"production\",\"customAttributes\":{\"featureFlag\":\"betaFeature\",\"userRole\":\"admin\"},\"durationSeconds\":3600,\"isActive\":true}", + "description": "Create a session with user identifier 'user123' starting at a given time in the production environment including custom attributes indicating beta feature usage and admin role." + }, + { + "inputJson": "{\"userId\":\"serviceAccount42\",\"startTime\":\"2024-06-22T18:00:00Z\",\"environment\":\"staging\",\"isActive\":false}", + "description": "Create an inactive session for a service account in the staging environment representing a batch or scripted process." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Session", + "context": null + } + }, + { + "name": "devops.createHeading", + "description": "Generates formatted heading strings for configuration files, deployment scripts, or documentation. Accepts heading text, level, and optional style, then outputs a string formatted accordingly for use in code comments or markdown files to improve readability and organization in infrastructure automation and DevOps scripts.", + "category": "devops", + "parameters": [ + { + "name": "text", + "type": "string", + "description": "The heading text to be formatted as a heading", + "required": true, + "defaultValue": "" + }, + { + "name": "level", + "type": "number", + "description": "Heading level to determine formatting style or number of prefix characters (e.g., 1-6 for markdown or indentation)", + "required": true, + "defaultValue": "1" + }, + { + "name": "style", + "type": "string", + "description": "Formatting style to apply: for example, 'markdown', 'hashComment', or 'underline' for different output formats", + "required": false, + "defaultValue": "markdown" + } + ], + "returns": { + "type": "string", + "description": "A formatted heading string suitable for insertion into code comments, configuration files, or documentation scripts." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to generate clear, properly formatted section headings within deployment scripts, infrastructure-as-code files, or documentation to improve clarity and structure. This helps in auto-generating or annotating DevOps related files with consistent heading styles.", + "limitations": "Does not generate complex documentation sections or content beyond single-line headings. Formatting options are limited to predefined styles and do not support custom templates or rich formatting beyond plain text styles.", + "examples": [ + "Create a level 2 markdown heading with the text 'Deployment Steps'.", + "Generate a hash-comment style level 3 heading 'Environment Variables' for a shell script.", + "Produce an underline style level 1 heading 'Configuration' for a config file comment block." + ] + }, + "tags": [ + "devops", + "heading", + "formatting", + "documentation", + "scripts" + ], + "examples": [ + { + "inputJson": "{\"text\":\"Deployment Steps\",\"level\":2,\"style\":\"markdown\"}", + "description": "Generate a markdown level 2 heading for deployment steps section." + }, + { + "inputJson": "{\"text\":\"Environment Variables\",\"level\":3,\"style\":\"hashComment\"}", + "description": "Create a level 3 heading using hash-style comments for a shell script section." + }, + { + "inputJson": "{\"text\":\"Configuration\",\"level\":1,\"style\":\"underline\"}", + "description": "Produce an underline style heading for configuration section in a config file." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Heading", + "context": null + } + }, + { + "name": "devops.createDeal", + "description": "Creates a structured deal record for DevOps-related business transactions, such as contracts for infrastructure projects or software deployment agreements. Accepts deal metadata including parties involved, deal terms, deadlines, and budget. Validates and formats inputs, then outputs a unique deal ID and full deal summary for integration with project management systems.", + "category": "devops", + "parameters": [ + { + "name": "dealName", + "type": "string", + "description": "The official name or title of the deal to be created.", + "required": true, + "defaultValue": "" + }, + { + "name": "partiesInvolved", + "type": "array", + "description": "An array of strings listing all companies or individuals participating in the deal.", + "required": true, + "defaultValue": "" + }, + { + "name": "startDate", + "type": "string", + "description": "The start date of the deal in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "endDate", + "type": "string", + "description": "The end date or expected completion date of the deal in ISO 8601 format (YYYY-MM-DD).", + "required": true, + "defaultValue": "" + }, + { + "name": "dealValue", + "type": "number", + "description": "The total monetary value of the deal, in the specified currency.", + "required": true, + "defaultValue": "" + }, + { + "name": "currency", + "type": "string", + "description": "The currency code (ISO 4217) used for the deal value, e.g., USD, EUR.", + "required": true, + "defaultValue": "USD" + }, + { + "name": "termsAndConditions", + "type": "string", + "description": "Text describing the key terms, responsibilities, and conditions for this deal.", + "required": false, + "defaultValue": "" + }, + { + "name": "isConfidential", + "type": "boolean", + "description": "Indicates whether the deal details should be marked as confidential.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the unique deal identifier, creation timestamp, and a detailed summary of the deal including all input fields and the calculated duration in days." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to formalize and log business agreements specifically related to DevOps projects, such as contracts for cloud infrastructure deployments, consulting services, or software implementation deals. It standardizes deal creation for automation and tracking.", + "limitations": "This tool does not negotiate terms or validate legal compliance; it only structures and records provided deal information. Does not handle payment processing or contract signing workflows.", + "examples": [ + "Create a new deal for a cloud migration project between two companies with a six-month duration and specified budget.", + "Record a confidential consulting contract with specified terms and parties involved.", + "Generate a deal summary for software deployment agreement with start and end dates, and deal value." + ] + }, + "tags": [ + "devops", + "deal", + "business", + "contract", + "automation", + "project-management" + ], + "examples": [ + { + "inputJson": "{\"dealName\":\"Cloud Infrastructure Migration\",\"partiesInvolved\":[\"TechCorp\",\"CloudServe\"],\"startDate\":\"2024-07-01\",\"endDate\":\"2024-12-31\",\"dealValue\":250000,\"currency\":\"USD\",\"termsAndConditions\":\"Standard SLA applies.\",\"isConfidential\":false}", + "description": "Create a deal for a cloud infrastructure migration project between TechCorp and CloudServe spanning six months with a $250,000 budget." + }, + { + "inputJson": "{\"dealName\":\"DevOps Consulting Contract\",\"partiesInvolved\":[\"InnovateX\",\"ConsultPlus\"],\"startDate\":\"2024-08-15\",\"endDate\":\"2025-02-15\",\"dealValue\":150000,\"currency\":\"EUR\",\"termsAndConditions\":\"Consulting services with monthly progress reports.\",\"isConfidential\":true}", + "description": "Record a confidential consulting contract deal involving InnovateX and ConsultPlus." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Deal", + "context": null + } + }, + { + "name": "devops.createReply", + "description": "Creates a templated reply message for communications in DevOps workflows, such as responding to deployment status updates, incident reports, or change requests. Accepts input including recipient, message context, and tone, then generates a customized reply text ready for posting or sending.", + "category": "devops", + "parameters": [ + { + "name": "recipient", + "type": "string", + "description": "The target recipient of the reply message, typically a username or email, to personalize the reply.", + "required": true, + "defaultValue": "" + }, + { + "name": "context", + "type": "string", + "description": "Brief description or identifier of the message context, e.g., 'deployment failure', 'incident update', to tailor the reply content appropriately.", + "required": true, + "defaultValue": "" + }, + { + "name": "tone", + "type": "string", + "description": "Desired tone of the reply message, such as 'formal', 'informal', or 'concise' to adjust style and wording.", + "required": false, + "defaultValue": "formal" + }, + { + "name": "includeNextSteps", + "type": "boolean", + "description": "Flag indicating whether to append suggested next steps or actions in the reply message.", + "required": false, + "defaultValue": "true" + }, + { + "name": "additionalNotes", + "type": "string", + "description": "Optional field for any extra notes or details to include in the reply message for clarity or context.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated reply text content ready for use in communication." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to automatically generate clear, context-aware replies in DevOps communication threads such as deployment notifications, incident reports, or change requests. It helps maintain consistent, professional responses and reduces manual message crafting.", + "limitations": "The tool cannot autonomously verify factual accuracy or retrieve real-time status; it relies on provided context and does not replace human judgment on sensitive communications.", + "examples": [ + "Generate a formal reply to a deployment failure notification including next steps.", + "Create a concise incident update reply without additional notes.", + "Respond informally to a change request confirmation with extra clarifications." + ] + }, + "tags": [ + "devops", + "communication", + "reply", + "automation", + "deployment", + "incident", + "templating" + ], + "examples": [ + { + "inputJson": "{\"recipient\":\"alice@example.com\",\"context\":\"deployment failure\",\"tone\":\"formal\",\"includeNextSteps\":true,\"additionalNotes\":\"Investigating root cause.\"}", + "description": "Generate a formal reply to report a deployment failure and outline next steps including investigation note." + }, + { + "inputJson": "{\"recipient\":\"bob@company.com\",\"context\":\"incident update\",\"tone\":\"concise\",\"includeNextSteps\":false,\"additionalNotes\":\"\"}", + "description": "Create a concise reply to provide an incident update without next steps or extra notes." + }, + { + "inputJson": "{\"recipient\":\"carol@devteam.io\",\"context\":\"change request confirmation\",\"tone\":\"informal\",\"includeNextSteps\":true,\"additionalNotes\":\"Please confirm if downtime is acceptable.\"}", + "description": "Generate an informal reply confirming a change request and ask for downtime confirmation as extra note." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Reply", + "context": null + } + }, + { + "name": "devops.createThread", + "description": "Creates a new communication thread within a DevOps collaboration platform or issue tracking system. Accepts parameters specifying thread title, participants, initial message content, and optional tags. Processes inputs to initialize a thread for team discussions or issue tracking, returning thread ID and metadata.", + "category": "devops", + "parameters": [ + { + "name": "title", + "type": "string", + "description": "The title or subject of the thread to create.", + "required": true, + "defaultValue": "" + }, + { + "name": "participants", + "type": "array", + "description": "List of participant usernames or IDs to include in the thread.", + "required": true, + "defaultValue": "[]" + }, + { + "name": "initialMessage", + "type": "string", + "description": "The initial message content to start the thread with.", + "required": true, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Optional tags or labels to categorize the thread.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "priority", + "type": "string", + "description": "Optional priority level of the thread (e.g., 'low', 'medium', 'high').", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the created thread's unique identifier, creation timestamp, participant list, and status." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to initiate a structured team discussion or issue tracking thread in a DevOps environment, such as after detecting an incident or deployment event. It enables automated creation of threads for collaboration and follow-up.", + "limitations": "This tool does not send notifications by itself or integrate with external messaging platforms beyond the configured DevOps system. It requires valid participant identifiers and cannot update threads after creation.", + "examples": [ + "Create a thread titled 'Deployment Issue on Backend' with dev team members and an initial alert message.", + "Start a high priority thread for urgent bug tracking including QA and Engineering.", + "Create a general discussion thread tagged 'weekly sync' inviting the project managers." + ] + }, + "tags": [ + "devops", + "communication", + "thread", + "collaboration", + "issue-tracking", + "automation" + ], + "examples": [ + { + "inputJson": "{\"title\":\"Deployment Issue on Backend\",\"participants\":[\"dev1\",\"dev2\",\"qa1\"],\"initialMessage\":\"We encountered a failure during the latest deployment. Please investigate.\",\"tags\":[\"incident\",\"backend\"]}", + "description": "Create a thread about a backend deployment issue including developers and QA." + }, + { + "inputJson": "{\"title\":\"Weekly Standup Sync\",\"participants\":[\"pm1\",\"pm2\",\"teamlead\"],\"initialMessage\":\"Agenda items for weekly sync meeting.\",\"tags\":[\"meeting\"],\"priority\":\"medium\"}", + "description": "Start a team meeting thread for project managers and leads." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Thread", + "context": null + } + }, + { + "name": "devops.createResume", + "description": "Generates a professional resume document optimized for DevOps roles. Accepts structured input including personal details, skills, certifications, work experience, and education, then formats and compiles this data into a polished resume in PDF or plain text format.", + "category": "devops", + "parameters": [ + { + "name": "fullName", + "type": "string", + "description": "Applicant's full name to display on the resume", + "required": true, + "defaultValue": "" + }, + { + "name": "contactInfo", + "type": "object", + "description": "Contact details including email, phone, and LinkedIn URL", + "required": true, + "defaultValue": "" + }, + { + "name": "summary", + "type": "string", + "description": "Brief professional summary or objective section", + "required": false, + "defaultValue": "" + }, + { + "name": "skills", + "type": "array", + "description": "List of technical and soft skills relevant to DevOps", + "required": true, + "defaultValue": "[]" + }, + { + "name": "certifications", + "type": "array", + "description": "List of certifications with name and date", + "required": false, + "defaultValue": "[]" + }, + { + "name": "workExperience", + "type": "array", + "description": "Chronological list of job roles with company, dates, and responsibilities", + "required": true, + "defaultValue": "[]" + }, + { + "name": "education", + "type": "array", + "description": "Educational background including degrees, schools, and dates", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format: 'pdf' or 'txt'", + "required": true, + "defaultValue": "pdf" + } + ], + "returns": { + "type": "object", + "description": "An object containing the resume document as base64-encoded string and metadata such as format and a filename" + }, + "aiAgent": { + "useCase": "Use this tool when you need to automatically generate a professional resume tailored for DevOps roles from structured user input. It helps create consistent, well-formatted resumes for deployment or application workflows, such as automated job application pipelines.", + "limitations": "This tool does not perform natural language enhancement or optimization of resume text; it formats provided data but does not create content beyond summarizing input. It also cannot customize design elements beyond basic formatting.", + "examples": [ + "Create a resume PDF for a DevOps engineer with specified skills and experience.", + "Generate a plain text resume document focusing on certifications and education.", + "Produce a resume file that an automated system can attach to job applications." + ] + }, + "tags": [ + "devops", + "resume", + "document", + "generation", + "automation", + "pdf", + "txt" + ], + "examples": [ + { + "inputJson": "{\"fullName\":\"Jane Smith\",\"contactInfo\":{\"email\":\"jane.smith@example.com\",\"phone\":\"555-6789\",\"linkedin\":\"https://linkedin.com/in/janesmith\"},\"summary\":\"Experienced DevOps engineer with 5+ years in cloud infrastructure and automation.\",\"skills\":[\"AWS\",\"Docker\",\"Kubernetes\",\"Terraform\"],\"certifications\":[{\"name\":\"AWS Certified Solutions Architect\",\"date\":\"2022-05\"}],\"workExperience\":[{\"company\":\"Tech Solutions\",\"role\":\"Senior DevOps Engineer\",\"startDate\":\"2019-06\",\"endDate\":\"Present\",\"responsibilities\":\"Managed Kubernetes clusters and automated CI/CD pipelines.\"}],\"education\":[{\"degree\":\"B.Sc. Computer Science\",\"school\":\"State University\",\"startDate\":\"2012\",\"endDate\":\"2016\"}],\"outputFormat\":\"pdf\"}", + "description": "Generate a PDF resume for a senior DevOps engineer including certifications and relevant skills." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Resume", + "context": null + } + }, + { + "name": "frontend-development.analyzeConversion", + "description": "Analyzes frontend user interaction data to calculate conversion rates and identify key factors influencing user behavior. Accepts event logs or user session data with conversion definitions, processes to compute conversion metrics and funnel drop-offs, and outputs detailed conversion analytics and insights to optimize client-side user flows.", + "category": "frontend-development", + "parameters": [ + { + "name": "eventData", + "type": "array", + "description": "Array of user events or interactions captured from the frontend, including timestamps and event types.", + "required": true, + "defaultValue": "" + }, + { + "name": "conversionEvent", + "type": "string", + "description": "The event name or criterion that defines a successful conversion (e.g., 'purchaseCompleted').", + "required": true, + "defaultValue": "" + }, + { + "name": "funnelSteps", + "type": "array", + "description": "Ordered list of event names representing intermediate funnel steps leading up to the conversion event.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "timeWindowMinutes", + "type": "number", + "description": "Optional time window in minutes to consider user events as part of the same session for conversion analysis.", + "required": false, + "defaultValue": "30" + }, + { + "name": "groupByProperty", + "type": "string", + "description": "Optional user property or attribute (e.g., 'deviceType' or 'referrer') to segment conversion analysis by.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing overall conversion rate, funnel step conversion rates, drop-off analysis, and segmented statistics if requested." + }, + "aiAgent": { + "useCase": "Use this tool when you have frontend user interaction data and need to understand how effectively users are converting through defined funnels, identify bottlenecks, and segment conversions by user properties for optimizing UI/UX and marketing strategies.", + "limitations": "Does not collect user data directly; requires pre-collected and cleaned event logs. Cannot infer causation or perform predictive modeling. Funnel steps must be defined explicitly.", + "examples": [ + "Calculate conversion rate for purchase completion from session event logs.", + "Analyze funnel drop-offs between 'viewProduct', 'addToCart', and 'purchaseCompleted' events.", + "Segment conversion rates by device type to optimize mobile experience." + ] + }, + "tags": [ + "frontend", + "analytics", + "conversion", + "user-behavior", + "funnel-analysis", + "optimization" + ], + "examples": [ + { + "inputJson": "{\"eventData\":[{\"userId\":\"u1\",\"event\":\"viewProduct\",\"timestamp\":1686000000000},{\"userId\":\"u1\",\"event\":\"addToCart\",\"timestamp\":1686000050000},{\"userId\":\"u1\",\"event\":\"purchaseCompleted\",\"timestamp\":1686000100000},{\"userId\":\"u2\",\"event\":\"viewProduct\",\"timestamp\":1686000200000},{\"userId\":\"u2\",\"event\":\"addToCart\",\"timestamp\":1686000250000}],\"conversionEvent\":\"purchaseCompleted\",\"funnelSteps\":[\"viewProduct\",\"addToCart\",\"purchaseCompleted\"],\"timeWindowMinutes\":30,\"groupByProperty\":\"\"}", + "description": "Analyze purchase funnel conversion and drop-offs within a 30-minute session window from raw frontend event data." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Conversion", + "context": null + } + }, + { + "name": "frontend-development.uploadTable", + "description": "Uploads tabular data to a frontend application component for display and interaction. Accepts data in CSV, JSON array of objects, or Excel file formats, processes and validates the input, and outputs a standardized JSON array representing the table rows for rendering in UI table components.", + "category": "frontend-development", + "parameters": [ + { + "name": "data", + "type": "string", + "description": "The raw table data to upload, either as CSV text, JSON stringified array of objects, or base64 Excel file content.", + "required": true, + "defaultValue": "" + }, + { + "name": "format", + "type": "string", + "description": "The format of the input data: 'csv', 'json', or 'excel'.", + "required": true, + "defaultValue": "" + }, + { + "name": "hasHeader", + "type": "boolean", + "description": "Indicates if the input data includes a header row/keys for columns (applies to CSV and Excel).", + "required": false, + "defaultValue": "true" + }, + { + "name": "validateSchema", + "type": "object", + "description": "Optional JSON schema object to validate each table row against before uploading.", + "required": false, + "defaultValue": "" + }, + { + "name": "maxRows", + "type": "number", + "description": "Maximum number of rows to process from input data (to limit large uploads).", + "required": false, + "defaultValue": "1000" + } + ], + "returns": { + "type": "object", + "description": "Returns an object containing a standardized JSON array of row objects representing the table data, plus metadata including number of rows processed and any validation errors." + }, + "aiAgent": { + "useCase": "Use this tool when an AI needs to upload or ingest tabular data into a frontend user interface from various common formats (CSV, JSON, Excel) to enable rendering, editing, or further processing in client-side applications. Appropriate when transforming raw table data into a structure suitable for frontend table components.", + "limitations": "Cannot perform complex data transformation beyond basic format parsing and optional schema validation; does not handle asynchronous uploading or storage persistence; expects input data size within limits specified; does not render UI, only prepares data structure.", + "examples": [ + "Upload CSV data representing user records to display in a dashboard table.", + "Ingest JSON stringified array of product info objects for rendering in a frontend grid.", + "Parse an Excel file base64 string with sales data and validate against a given schema for consistency before display." + ] + }, + "tags": [ + "frontend", + "upload", + "table", + "data-import", + "csv", + "json", + "excel", + "validation" + ], + "examples": [ + { + "inputJson": "{\"data\":\"id,name,age\\n1,Alice,30\\n2,Bob,25\",\"format\":\"csv\",\"hasHeader\":true}", + "description": "Upload a simple CSV string with headers representing user IDs, names, and ages." + }, + { + "inputJson": "{\"data\":\"[{\\\"id\\\":1,\\\"name\\\":\\\"Widget\\\",\\\"price\\\":19.99},{\\\"id\\\":2,\\\"name\\\":\\\"Gadget\\\",\\\"price\\\":29.99}]\",\"format\":\"json\"}", + "description": "Upload JSON array of objects representing product items with id, name, price." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Table", + "context": null + } + }, + { + "name": "frontend-development.analyzeMarkdown", + "description": "Analyzes Markdown-formatted text input to extract a detailed structural overview including headings, lists, links, images, code blocks, and inline styles. Outputs a comprehensive summary of Markdown elements and statistics for front-end processing or content validation.", + "category": "frontend-development", + "parameters": [ + { + "name": "markdownText", + "type": "string", + "description": "The raw Markdown text content to analyze.", + "required": true, + "defaultValue": "" + }, + { + "name": "extractHeadings", + "type": "boolean", + "description": "Whether to identify and return all heading elements with their levels.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractLinks", + "type": "boolean", + "description": "Whether to extract all hyperlinks and their associated text from the Markdown.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractLists", + "type": "boolean", + "description": "Whether to extract all list structures (ordered and unordered) from the Markdown.", + "required": false, + "defaultValue": "true" + }, + { + "name": "extractImages", + "type": "boolean", + "description": "Whether to extract all image elements along with alt text and source URLs.", + "required": false, + "defaultValue": "true" + }, + { + "name": "includeStatistics", + "type": "boolean", + "description": "Whether to include counts for each Markdown element type in the output summary.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing arrays of extracted Markdown elements (headings, links, lists, images, code blocks) and aggregate statistics summarizing their counts." + }, + "aiAgent": { + "useCase": "This tool is intended for AI agents that need to understand or transform Markdown content in frontend contexts, such as preview rendering, content validation, or automated report generation. Agents can use it to parse and summarize Markdown structure before further processing or UI display.", + "limitations": "This tool does not convert Markdown to HTML or other formats; it only analyzes and extracts structural information. It may not handle malformed Markdown perfectly or custom extensions beyond standard Markdown syntax.", + "examples": [ + "Analyze the headings and links in this blog post markdown for generating a table of contents.", + "Provide a summary of images and code blocks used in the README markdown to check content completeness.", + "Extract lists and statistics from markdown notes before converting them into frontend components." + ] + }, + "tags": [ + "frontend", + "markdown", + "analysis", + "content-processing", + "text-parsing", + "ui-development" + ], + "examples": [ + { + "inputJson": "{\"markdownText\":\"# Title\\nSome introductory text.\\n\\n## Subtitle\\n- item 1\\n- item 2\\n\\n[OpenAI](https://openai.com) provides AI tools.\\n\\n![Logo](https://openai.com/logo.png)\",\"extractHeadings\":true,\"extractLinks\":true,\"extractLists\":true,\"extractImages\":true,\"includeStatistics\":true}", + "description": "Analyze a markdown string containing headings, lists, a link, and an image to extract all respective elements and counts." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Markdown", + "context": null + } + }, + { + "name": "frontend-development.uploadVideo", + "description": "Uploads a video file from the client-side to a specified remote server endpoint. Accepts video files in common formats, supports optional metadata like title and description, and returns the upload status and URL to the stored video.", + "category": "frontend-development", + "parameters": [ + { + "name": "filePath", + "type": "string", + "description": "Local path or URL of the video file to upload.", + "required": true, + "defaultValue": "" + }, + { + "name": "serverEndpoint", + "type": "string", + "description": "URL of the server API endpoint to which the video will be uploaded.", + "required": true, + "defaultValue": "" + }, + { + "name": "title", + "type": "string", + "description": "Optional title for the video to accompany the upload.", + "required": false, + "defaultValue": "" + }, + { + "name": "description", + "type": "string", + "description": "Optional textual description for the video metadata.", + "required": false, + "defaultValue": "" + }, + { + "name": "tags", + "type": "array", + "description": "Optional array of tags or keywords describing the video content.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "authToken", + "type": "string", + "description": "Optional authentication token for server authorization.", + "required": false, + "defaultValue": "" + }, + { + "name": "chunkSizeMB", + "type": "number", + "description": "Optional size in megabytes for dividing uploads into chunks (for large files).", + "required": false, + "defaultValue": "5" + }, + { + "name": "retryCount", + "type": "number", + "description": "Number of retry attempts in case of upload failures.", + "required": false, + "defaultValue": "3" + } + ], + "returns": { + "type": "object", + "description": "An object containing 'success' (boolean), 'videoUrl' (string URL of the uploaded video if successful), and 'message' (any error or success text)." + }, + "aiAgent": { + "useCase": "Use this tool to upload video files from client applications to a backend server, especially when automating video content management, user-generated content upload, or media sharing features. It is ideal when metadata and upload progress control are needed.", + "limitations": "This tool doesn't perform video encoding/transcoding or validation beyond file presence and basic format checks. It requires a reachable server endpoint accepting video uploads. It does not provide playback or storage management beyond upload.", + "examples": [ + "Upload a user profile introduction video to the content server with title and tags.", + "Send a large training webinar video in chunks and retry on failure to ensure upload completes.", + "Upload a demonstration clip using authentication token for authorization." + ] + }, + "tags": [ + "frontend", + "video", + "upload", + "media", + "client-side", + "file-upload", + "chunked-upload" + ], + "examples": [ + { + "inputJson": "{\"filePath\":\"/videos/intro.mp4\",\"serverEndpoint\":\"https://api.mymediaapp.com/upload\",\"title\":\"Intro Video\",\"description\":\"User introduction video.\",\"tags\":[\"intro\",\"profile\"],\"authToken\":\"abc123token\"}", + "description": "Upload a local intro video to the media server with metadata and authentication." + }, + { + "inputJson": "{\"filePath\":\"/videos/webinar.mov\",\"serverEndpoint\":\"https://media.example.com/api/upload\",\"chunkSizeMB\":10,\"retryCount\":5}", + "description": "Upload a large webinar video in 10MB chunks with retries on failures." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "upload", + "object": "Video", + "context": null + } + }, + { + "name": "frontend-development.analyzeYAML", + "description": "Analyzes a YAML string representing frontend configuration or interface data, validating syntax, extracting structural information such as keys and nesting levels, and identifying potential issues like duplicates or schema mismatches. Returns a detailed analysis report useful for debugging and optimizing frontend YAML configurations.", + "category": "frontend-development", + "parameters": [ + { + "name": "yamlContent", + "type": "string", + "description": "The YAML content string to be analyzed for correctness and structure.", + "required": true, + "defaultValue": "" + }, + { + "name": "validateSchema", + "type": "boolean", + "description": "Flag indicating whether to validate against a provided JSON schema if available.", + "required": false, + "defaultValue": "false" + }, + { + "name": "schema", + "type": "object", + "description": "An optional JSON schema object to validate the YAML content against (if validateSchema is true).", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An analysis report containing syntax validity, list of top-level keys, nesting depth, duplicates found, schema validation results, and any warnings or errors detected." + }, + "aiAgent": { + "useCase": "This tool is ideal when an AI agent needs to understand and validate YAML files used for frontend configurations, component definitions, or CI/CD settings, ensuring correctness and exposing structural insights before further processing or code generation.", + "limitations": "Cannot fix errors automatically or fully interpret user intent behind YAML contents; limited to syntactic and schema-level analysis.", + "examples": [ + "Analyze the YAML configuration for a React component to ensure it meets the schema.", + "Check for duplicates and nesting depth in the frontend settings YAML.", + "Validate the provided YAML against a given JSON schema to find any mismatches." + ] + }, + "tags": [ + "frontend", + "YAML", + "analysis", + "validation", + "configuration", + "schema" + ], + "examples": [ + { + "inputJson": "{\"yamlContent\":\"components:\\n header:\\n type: Header\\n props:\\n title: Welcome\\n footer:\\n type: Footer\\n props:\\n text: '© 2024'\\n\",\"validateSchema\":false}", + "description": "Analyze a simple YAML frontend components config without schema validation to check keys and structure." + }, + { + "inputJson": "{\"yamlContent\":\"settings:\\n theme: dark\\n layout: grid\\n theme: light\\n\",\"validateSchema\":false}", + "description": "Analyze YAML with duplicate keys to find and report duplicates in frontend settings." + }, + { + "inputJson": "{\"yamlContent\":\"app:\\n name: SampleApp\\n version: 1.0.0\\n\",\"validateSchema\":true,\"schema\":{\"type\":\"object\",\"properties\":{\"app\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}},\"required\":[\"name\",\"version\"]}},\"required\":[\"app\"]}}", + "description": "Validate frontend app config YAML against a JSON schema to confirm required fields and types." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "YAML", + "context": null + } + }, + { + "name": "frontend-development.downloadVideo", + "description": "This tool enables downloading a video file from a specified URL in a frontend web application context. It accepts the video source URL and optional parameters like filename and mime type. It processes the URL to initiate a client-side download and returns a status indicating success or failure of the operation.", + "category": "frontend-development", + "parameters": [ + { + "name": "videoUrl", + "type": "string", + "description": "The direct URL of the video file to download.", + "required": true, + "defaultValue": "" + }, + { + "name": "fileName", + "type": "string", + "description": "The desired filename for the downloaded video. If omitted, the name is derived from the URL.", + "required": false, + "defaultValue": "" + }, + { + "name": "mimeType", + "type": "string", + "description": "The MIME type of the video file (e.g., 'video/mp4'). Used to specify the content type if needed.", + "required": false, + "defaultValue": "" + }, + { + "name": "useCorsProxy", + "type": "boolean", + "description": "Whether to route the download request via a CORS proxy to bypass cross-origin restrictions. Defaults to false.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object with status (success or error) and an optional message providing details about the download result." + }, + "aiAgent": { + "useCase": "Use this tool when a web frontend interface needs to provide users with the ability to download videos directly from provided URLs, for example in video gallery applications, e-learning platforms, or multimedia portals. It handles browser-compatible client-side download initiation, including optional filename settings.", + "limitations": "This tool cannot download videos that are protected by DRM or require authentication tokens not provided in URL. Cross-origin restrictions may prevent successful downloads unless a CORS proxy is enabled and allowed. It does not perform video format conversions or streaming processing.", + "examples": [ + "Download a video from a public MP4 URL to the user's device with a custom filename.", + "Download a video ensuring the MIME type is specified for correct handling by the browser.", + "Download a video URL which has CORS restrictions requiring use of a proxy." + ] + }, + "tags": [ + "frontend", + "video", + "download", + "media", + "client-side", + "browser" + ], + "examples": [ + { + "inputJson": "{\"videoUrl\":\"https://example.com/videos/sample.mp4\",\"fileName\":\"lesson1.mp4\",\"mimeType\":\"video/mp4\",\"useCorsProxy\":false}", + "description": "Download a publicly accessible MP4 video with a specified filename." + }, + { + "inputJson": "{\"videoUrl\":\"https://media-host.com/content/video.webm\"}", + "description": "Download a WebM video using the URL with default filename derived from URL." + }, + { + "inputJson": "{\"videoUrl\":\"https://restricted-site.com/protectedvideo.mp4\",\"useCorsProxy\":true}", + "description": "Download a video from a site with CORS restrictions using a proxy." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Video", + "context": null + } + }, + { + "name": "frontend-development.draftSummary", + "description": "Generates a concise textual summary of frontend component code or user interface descriptions provided as input. Accepts component source code or structured UI metadata, analyzes structure and key functions, and outputs a human-readable summary highlighting main purposes, features, and usage notes.", + "category": "frontend-development", + "parameters": [ + { + "name": "inputCode", + "type": "string", + "description": "Source code or structured description of the frontend component or UI to summarize.", + "required": true, + "defaultValue": "" + }, + { + "name": "inputType", + "type": "string", + "description": "Type of input provided: 'code' for raw source code, 'metadata' for structured UI info.", + "required": true, + "defaultValue": "code" + }, + { + "name": "language", + "type": "string", + "description": "Programming language of the inputCode, e.g., 'JavaScript', 'TypeScript', 'JSX'.", + "required": false, + "defaultValue": "JavaScript" + }, + { + "name": "maxSummaryLength", + "type": "number", + "description": "Maximum length of the generated summary in characters.", + "required": false, + "defaultValue": "500" + }, + { + "name": "includeUsageExamples", + "type": "boolean", + "description": "Whether to include usage examples in the summary if detected.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing the summarized text of the frontend component or UI description, including main features and key notes." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to understand or explain existing frontend components by generating concise summaries for documentation, onboarding, or reviews. It helps convert source or metadata inputs into readable overviews without requiring manual interpretation.", + "limitations": "Cannot execute or render the code; summaries depend on code quality and clarity; may miss dynamic behaviors not evident from static code or metadata.", + "examples": [ + "Summarize a React component source code to document its props and main functionality.", + "Generate a brief summary from UI metadata describing form fields and validation rules.", + "Create a usage and feature overview from a TypeScript widget source snippet." + ] + }, + "tags": [ + "frontend", + "summary", + "documentation", + "code-analysis", + "UI", + "component" + ], + "examples": [ + { + "inputJson": "{\"inputCode\":\"function Button(props) { return <button onClick={props.onClick}>{props.label}</button>; }\",\"inputType\":\"code\",\"language\":\"JSX\",\"maxSummaryLength\":300,\"includeUsageExamples\":true}", + "description": "Summarize a simple React Button component code with usage example included." + }, + { + "inputJson": "{\"inputCode\":\"{\\\"componentName\\\":\\\"LoginForm\\\", \\\"fields\\\":[{\\\"name\\\":\\\"username\\\",\\\"type\\\":\\\"text\\\"}, {\\\"name\\\":\\\"password\\\",\\\"type\\\":\\\"password\\\"}], \\\"validation\\\":{\\\"username\\\":\\\"required\\\", \\\"password\\\":\\\"required\\\"}}\",\"inputType\":\"metadata\",\"maxSummaryLength\":400,\"includeUsageExamples\":false}", + "description": "Generate a summary of a LoginForm UI described via JSON metadata without usage examples." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "draft", + "object": "Summary", + "context": null + } + }, + { + "name": "frontend-development.generateQuote", + "description": "Generates a dynamic inspirational quote component for frontend applications. Accepts optional parameters including author name, quote text, style options, and animation preferences, then produces a JSON representation of the quote component ready for rendering or further customization.", + "category": "frontend-development", + "parameters": [ + { + "name": "quoteText", + "type": "string", + "description": "The main text of the quote to display.", + "required": true, + "defaultValue": "" + }, + { + "name": "authorName", + "type": "string", + "description": "The name of the person who authored the quote. Optional, defaults to empty if not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "textStyle", + "type": "object", + "description": "Styling options for the quote text such as font size, color, and weight (e.g., {\"fontSize\":\"16px\",\"color\":\"#333\"}).", + "required": false, + "defaultValue": "{}" + }, + { + "name": "authorStyle", + "type": "object", + "description": "Styling options for the author text such as font style, color, and size.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "animate", + "type": "boolean", + "description": "If true, include animation effects like fade-in or slide for the quote component.", + "required": false, + "defaultValue": "false" + }, + { + "name": "animationType", + "type": "string", + "description": "Type of animation to apply when animate is true (e.g., 'fade', 'slide', 'zoom').", + "required": false, + "defaultValue": "fade" + } + ], + "returns": { + "type": "object", + "description": "A JSON object representing the quote component, including text, author, styling, and animation properties, suitable for rendering in a frontend environment." + }, + "aiAgent": { + "useCase": "Use this tool when you need to dynamically generate styled quote components for web or mobile frontend interfaces, enabling customizable text, author attribution, and user experience animations without manually crafting each component.", + "limitations": "This tool does not fetch quotes from external databases or APIs; it requires the quote text and author to be provided explicitly. It also does not generate graphical images, only structured JSON representation of the quote component.", + "examples": [ + "Generate a quote component showing \"The only limit to our realization of tomorrow is our doubts of today.\" by Franklin D. Roosevelt with a blue text color and fade animation.", + "Create a minimalistic quote component with no author displayed, styled with a serif font and no animation.", + "Produce a quote component with custom author styling and slide animation for enhanced user interaction." + ] + }, + "tags": [ + "frontend", + "quote", + "UI", + "component", + "generate", + "animation", + "styling" + ], + "examples": [ + { + "inputJson": "{\"quoteText\":\"The only limit to our realization of tomorrow is our doubts of today.\",\"authorName\":\"Franklin D. Roosevelt\",\"textStyle\":{\"color\":\"#007BFF\",\"fontSize\":\"18px\"},\"animate\":true,\"animationType\":\"fade\"}", + "description": "Generate a blue styled quote with author name and fade-in animation." + }, + { + "inputJson": "{\"quoteText\":\"Carpe diem. Seize the day.\",\"animate\":false}", + "description": "Generate a simple quote with no author and no animation." + }, + { + "inputJson": "{\"quoteText\":\"Innovation distinguishes between a leader and a follower.\",\"authorName\":\"Steve Jobs\",\"authorStyle\":{\"fontStyle\":\"italic\",\"color\":\"#555\"},\"animate\":true,\"animationType\":\"slide\"}", + "description": "Create a quote with italic author styling and slide animation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Quote", + "context": null + } + }, + { + "name": "backend-development.analyzeCitation", + "description": "Analyzes a citation string or structured citation data to extract key components such as authors, title, publication year, source, and DOI. It validates format compliance with common citation styles (APA, MLA, Chicago), identifies missing or malformed elements, and provides a structured citation object suitable for backend referencing and further processing.", + "category": "backend-development", + "parameters": [ + { + "name": "citationInput", + "type": "string", + "description": "The raw citation text or string to be analyzed.", + "required": true, + "defaultValue": "" + }, + { + "name": "citationStyle", + "type": "string", + "description": "The citation style format to validate against (e.g., 'APA', 'MLA', 'Chicago').", + "required": false, + "defaultValue": "APA" + }, + { + "name": "returnFormat", + "type": "string", + "description": "The desired output format for the structured citation (e.g., 'JSON', 'XML').", + "required": false, + "defaultValue": "JSON" + }, + { + "name": "strictValidation", + "type": "boolean", + "description": "Whether to enforce strict adherence to the citation style rules during analysis.", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "An object containing extracted citation fields (author(s), title, year, source, DOI, etc.), validation status, detected citation style, and any warnings or errors related to parsing or format compliance." + }, + "aiAgent": { + "useCase": "Use this tool to process raw or formatted citation strings from research papers, articles, or bibliographies to extract structured citation data for backend storage, validation, or further metadata enrichment in academic, publishing, or content management systems.", + "limitations": "Cannot perfectly parse highly ambiguous, incomplete, or non-standard citation strings. May misinterpret citations outside the supported styles or those with significant formatting errors.", + "examples": [ + "Analyze a raw APA style citation string to extract metadata and verify compliance.", + "Parse a citation in MLA style and return structured JSON fields for backend indexing.", + "Identify missing components in a Chicago style citation and provide validation warnings." + ] + }, + "tags": [ + "citation", + "bibliography", + "parsing", + "validation", + "metadata", + "backend", + "academic" + ], + "examples": [ + { + "inputJson": "{\"citationInput\":\"Smith, J. (2020). Understanding AI. Journal of AI Research, 15(3), 45-67.\", \"citationStyle\":\"APA\", \"returnFormat\":\"JSON\", \"strictValidation\":true}", + "description": "Analyzing a well-formed APA citation string to extract structured fields and validate format." + }, + { + "inputJson": "{\"citationInput\":\"Doe, Jane. 'Exploring Machine Learning' 2018, Tech Press.\", \"citationStyle\":\"MLA\", \"returnFormat\":\"JSON\", \"strictValidation\":false}", + "description": "Parsing an MLA formatted citation with minor formatting inconsistencies, returning structured data." + }, + { + "inputJson": "{\"citationInput\":\"Green, T. The future of computing, 2019.\", \"citationStyle\":\"Chicago\", \"returnFormat\":\"JSON\", \"strictValidation\":true}", + "description": "Analyzing a potentially incomplete Chicago citation highlighting missing publisher/source info." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Citation", + "context": null + } + }, + { + "name": "frontend-development.generateTemplate", + "description": "Generates customizable frontend HTML templates based on specified layout, style preferences, and component requirements. Accepts parameters defining template type (e.g., landing page, dashboard), color schemes, component list, and additional meta information, producing ready-to-use HTML and CSS code snippets.", + "category": "frontend-development", + "parameters": [ + { + "name": "templateType", + "type": "string", + "description": "Specifies the type of frontend template to generate such as 'landingPage', 'dashboard', 'profile', or custom.", + "required": true, + "defaultValue": "" + }, + { + "name": "colorScheme", + "type": "string", + "description": "Defines the primary color scheme for the template in CSS-compatible format (e.g., hex code or predefined schemes like 'light' or 'dark').", + "required": false, + "defaultValue": "light" + }, + { + "name": "components", + "type": "array", + "description": "List of UI components to include in the template, such as ['navbar','footer','card','button','form'].", + "required": false, + "defaultValue": "[]" + }, + { + "name": "responsive", + "type": "boolean", + "description": "Indicates whether the generated template should be responsive and adapt to different screen sizes.", + "required": false, + "defaultValue": "true" + }, + { + "name": "customCSS", + "type": "string", + "description": "Additional user-provided CSS styles to include or override in the generated template.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the generated HTML and CSS code strings, ready for integration into frontend projects." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to quickly generate base frontend templates adjusted to specific types and styling parameters, streamlining UI prototyping or initial project setup without manual coding from scratch.", + "limitations": "This tool does not generate backend code, handle dynamic data binding, or create complex interactive logic beyond static template generation.", + "examples": [ + "Generate a landing page template with dark color scheme including navbar, footer, and sign-up form.", + "Create a responsive dashboard template with cards and buttons using a light theme.", + "Produce a profile page template that includes custom CSS overrides for branding." + ] + }, + "tags": [ + "frontend", + "template", + "UI", + "HTML", + "CSS", + "generator", + "responsive" + ], + "examples": [ + { + "inputJson": "{\"templateType\":\"landingPage\",\"colorScheme\":\"dark\",\"components\":[\"navbar\",\"footer\",\"form\"],\"responsive\":true,\"customCSS\":\"body { font-family: Arial, sans-serif; }\"}", + "description": "Generate a responsive dark-themed landing page template with navbar, footer, and a form, including custom font styling." + }, + { + "inputJson": "{\"templateType\":\"dashboard\",\"colorScheme\":\"light\",\"components\":[\"navbar\",\"card\",\"button\"],\"responsive\":true,\"customCSS\":\"\"}", + "description": "Create a light-themed dashboard template with navigation bar, cards, and buttons, supporting responsive design." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Template", + "context": null + } + }, + { + "name": "backend-development.analyzeMention", + "description": "Analyzes a mention text extracted from communication platforms to identify key attributes such as sentiment, intent, named entities, and relevance within a conversation context. Accepts raw mention text and optional context metadata; outputs structured analysis including sentiment score, detected intent, entities, and recommendation tags.", + "category": "backend-development", + "parameters": [ + { + "name": "mentionText", + "type": "string", + "description": "The text content of the mention to be analyzed for intent, sentiment, and entities.", + "required": true, + "defaultValue": "" + }, + { + "name": "contextMetadata", + "type": "object", + "description": "Optional object containing metadata about the conversation context (e.g., conversationId, userRole) to improve analysis accuracy.", + "required": false, + "defaultValue": "" + }, + { + "name": "language", + "type": "string", + "description": "Language code of the mention text (e.g., 'en', 'es') to improve language-specific processing.", + "required": false, + "defaultValue": "en" + }, + { + "name": "includeRecommendations", + "type": "boolean", + "description": "Whether to include recommendation tags based on the analysis (e.g., escalation needed).", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An analysis report including sentiment score (-1 to 1), identified intent label, extracted named entities with types, and optional recommendation tags." + }, + "aiAgent": { + "useCase": "Use this tool when processing mentions from communication platforms (e.g., chat messages, comments) to understand user sentiment, identify intent for routing or automated responses, extract relevant entities for context enrichment, and generate actionable recommendations. It helps in enhancing backend services dealing with communication analysis and improving responsiveness.", + "limitations": "This tool cannot fully understand complex sarcasm or nuanced humor and may require complementary context data for improved accuracy. It does not perform user identification or privacy filtering.", + "examples": [ + "Analyze a customer support mention to detect negative sentiment and whether escalation is required.", + "Extract entities and intent from a chat mention to route the message to the appropriate department.", + "Determine the sentiment and provide recommendations for a social media comment mention." + ] + }, + "tags": [ + "analysis", + "backend", + "communication", + "sentiment-analysis", + "intent-detection", + "entity-extraction", + "recommendation" + ], + "examples": [ + { + "inputJson": "{\"mentionText\":\"I'm really unhappy with the service I received today.\",\"language\":\"en\",\"includeRecommendations\":true}", + "description": "Analyze a negative customer support mention with sentiment and recommendation." + }, + { + "inputJson": "{\"mentionText\":\"Can you help me reset my password?\",\"language\":\"en\"}", + "description": "Detect intent and entities in a user query mention for backend processing." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Mention", + "context": null + } + }, + { + "name": "backend-development.analyzeForecast", + "description": "This tool analyzes business forecast data to identify trends, assess accuracy, and provide insights. It accepts time series forecast objects or arrays of predicted values with optional actual results for comparison. The tool processes data to evaluate forecast performance, detect anomalies, and output summary statistics and actionable recommendations.", + "category": "backend-development", + "parameters": [ + { + "name": "forecastData", + "type": "array", + "description": "An array of forecast points where each point includes a timestamp and a predicted value, optionally with actual observed value for accuracy assessment.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeUnit", + "type": "string", + "description": "The unit of time for the forecast intervals (e.g., 'day', 'week', 'month'). Helps in trend analysis and aggregation.", + "required": false, + "defaultValue": "day" + }, + { + "name": "includeAnomalyDetection", + "type": "boolean", + "description": "Whether to perform anomaly detection on forecast errors to highlight unusual deviations.", + "required": false, + "defaultValue": "true" + }, + { + "name": "historicalData", + "type": "array", + "description": "Optional historical observed data for building baselines or validating forecast trends. Array of objects with timestamp and actual value.", + "required": false, + "defaultValue": "" + }, + { + "name": "confidenceThreshold", + "type": "number", + "description": "The minimum confidence level (0-1) for identifying reliable forecast trends and anomalies.", + "required": false, + "defaultValue": "0.95" + } + ], + "returns": { + "type": "object", + "description": "Returns an analysis report including trend summary, accuracy metrics (like MAPE, RMSE), anomaly flags, and practical recommendations to improve forecasting or detect issues." + }, + "aiAgent": { + "useCase": "Use this tool when you need to evaluate the quality and characteristics of business forecast data to support decision making. It helps identify inaccuracies, detect unusual patterns, and improve confidence in forecasting models.", + "limitations": "The tool assumes time series forecast data with defined time intervals and numeric values; it does not generate forecasts or handle qualitative predictions. Anomaly detection may produce false positives depending on data noise.", + "examples": [ + "Analyze forecast accuracy for monthly sales projections for next quarter.", + "Identify anomalies in daily web traffic forecasts compared to actual counts.", + "Summarize trends and potential issues in a weekly demand forecast with historical sales." + ] + }, + "tags": [ + "analysis", + "forecast", + "business", + "time-series", + "accuracy", + "anomaly-detection" + ], + "examples": [ + { + "inputJson": "{\"forecastData\":[{\"timestamp\":\"2024-01-01\",\"predicted\":150,\"actual\":145},{\"timestamp\":\"2024-01-02\",\"predicted\":160,\"actual\":null},{\"timestamp\":\"2024-01-03\",\"predicted\":155,\"actual\":158}],\"timeUnit\":\"day\",\"includeAnomalyDetection\":true}", + "description": "Analyze daily sales forecast for three days with partial actuals to assess accuracy and detect anomalies." + }, + { + "inputJson": "{\"forecastData\":[{\"timestamp\":\"2024-04\",\"predicted\":1000,\"actual\":980},{\"timestamp\":\"2024-05\",\"predicted\":1100,\"actual\":1150},{\"timestamp\":\"2024-06\",\"predicted\":1050,\"actual\":null}],\"timeUnit\":\"month\",\"includeAnomalyDetection\":false,\"confidenceThreshold\":0.9}", + "description": "Evaluate monthly sales projections with actuals and custom confidence for trend reliability without anomaly detection." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Forecast", + "context": null + } + }, + { + "name": "backend-development.analyzeBudget", + "description": "Analyzes a project or department budget by processing detailed income and expense data to produce a comprehensive financial summary including total allocation, spending distribution, remaining funds, and variance from planned budget. Accepts raw budget data objects or arrays, performs aggregation and classification, and outputs structured analysis results.", + "category": "backend-development", + "parameters": [ + { + "name": "budgetData", + "type": "object", + "description": "Detailed budget data including income, expenses, allocations, and categories for analysis.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeVarianceAnalysis", + "type": "boolean", + "description": "Flag to include variance between planned and actual spending in the analysis report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "reportFormat", + "type": "string", + "description": "Output format of the report, e.g., 'summary' for brief or 'detailed' for granular analysis.", + "required": false, + "defaultValue": "summary" + }, + { + "name": "currency", + "type": "string", + "description": "Currency code (ISO 4217) used to format financial values in the report.", + "required": false, + "defaultValue": "USD" + } + ], + "returns": { + "type": "object", + "description": "An analysis report object containing total budget, total spent, remaining funds, categorized spend breakdown, and optionally variance details and recommendations." + }, + "aiAgent": { + "useCase": "Use this tool when needing to evaluate financial health of a backend project or department by aggregating complex budget data into actionable insights and summaries. Useful to detect overspending, underutilization, and improve future budget planning.", + "limitations": "Does not predict future budget trends or handle forecasting beyond given data. Assumes accurate and complete input budget data.", + "examples": [ + "Analyze this backend services budget data and output a detailed spending summary.", + "Provide a budget variance report comparing planned vs actual expenses for Q1.", + "Summarize total income and expenses of the finance department budget with a high-level overview." + ] + }, + "tags": [ + "backend", + "budget", + "financial-analysis", + "reporting", + "project-management", + "expenses" + ], + "examples": [ + { + "inputJson": "{\"budgetData\":{\"plannedIncome\":500000,\"plannedExpenses\":{\"salaries\":300000,\"infrastructure\":100000,\"tools\":50000,\"marketing\":20000},\"actualExpenses\":{\"salaries\":320000,\"infrastructure\":90000,\"tools\":45000,\"marketing\":25000}},\"includeVarianceAnalysis\":true,\"reportFormat\":\"detailed\",\"currency\":\"USD\"}", + "description": "Analyze detailed planned and actual expense data including variance for a backend project budget." + }, + { + "inputJson": "{\"budgetData\":{\"income\":120000,\"expenses\":[{\"category\":\"hosting\",\"amount\":30000},{\"category\":\"development\",\"amount\":70000},{\"category\":\"consulting\",\"amount\":15000}]},\"includeVarianceAnalysis\":false,\"reportFormat\":\"summary\",\"currency\":\"EUR\"}", + "description": "Summarize total income and categorized expenses of a department budget without variance analysis." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "analyze", + "object": "Budget", + "context": null + } + }, + { + "name": "backend-development.downloadHTML", + "description": "This tool accepts a URL or raw HTML content as input, optionally allows setting HTTP headers and saves the fetched or provided HTML content to a specified file path on the server. It performs downloading of HTML pages or saving raw HTML strings, enabling backend systems to store webpage snapshots or HTML content for further processing or archiving.", + "category": "backend-development", + "parameters": [ + { + "name": "url", + "type": "string", + "description": "The web URL to download HTML content from. If empty, rawHtml must be provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "rawHtml", + "type": "string", + "description": "Raw HTML content to save directly to a file, used if URL is not provided.", + "required": false, + "defaultValue": "" + }, + { + "name": "filePath", + "type": "string", + "description": "The server file path where the HTML content will be saved.", + "required": true, + "defaultValue": "" + }, + { + "name": "headers", + "type": "object", + "description": "Optional HTTP headers to send when downloading HTML from URL.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "timeout", + "type": "number", + "description": "Timeout in seconds for the HTTP request when downloading from URL.", + "required": false, + "defaultValue": "30" + } + ], + "returns": { + "type": "object", + "description": "Result object containing success status, saved file path, and any error messages." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically download and save HTML pages from the internet or save provided raw HTML content to a file on the backend. This is useful for archiving web content, caching snapshots for offline processing, or storing generated HTML for later retrieval.", + "limitations": "Cannot execute JavaScript on the page; it only fetches raw HTML content. Requires proper server file system permissions for saving files. Does not parse or modify HTML content; only downloads or saves as-is.", + "examples": [ + "Download the HTML of https://example.com with custom headers and save it to /tmp/example.html.", + "Save provided raw HTML string to /var/www/html/snapshot.html.", + "Download HTML from a URL with a 10-second timeout and save to a specific path." + ] + }, + "tags": [ + "backend", + "html", + "download", + "web", + "file-saving", + "http" + ], + "examples": [ + { + "inputJson": "{\"url\":\"https://example.com\",\"filePath\":\"/tmp/example.html\",\"headers\":{\"User-Agent\":\"MyAgent\"},\"timeout\":20}", + "description": "Download HTML content from https://example.com with a custom User-Agent header and save to /tmp/example.html." + }, + { + "inputJson": "{\"rawHtml\":\"<html><body><h1>Hello</h1></body></html>\",\"filePath\":\"/tmp/hello.html\"}", + "description": "Save raw HTML string to /tmp/hello.html on the server." + }, + { + "inputJson": "{\"url\":\"https://jsonplaceholder.typicode.com/posts/1\",\"filePath\":\"/tmp/post1.html\",\"timeout\":10}", + "description": "Download the HTML content of a JSONPlaceholder post URL and save it with a 10-second timeout." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "HTML", + "context": null + } + }, + { + "name": "backend-development.downloadAttachment", + "description": "Downloads an attachment file from a backend server by specifying the resource endpoint and attachment identifier. Accepts parameters such as the API endpoint URL, authentication token, attachment ID, and optional timeout settings. Processes the request by contacting the server API and retrieves the attachment, returning the binary data along with metadata like filename and content type.", + "category": "backend-development", + "parameters": [ + { + "name": "apiEndpoint", + "type": "string", + "description": "The full URL of the backend server API endpoint to download the attachment from (e.g., https://api.example.com/attachments).", + "required": true, + "defaultValue": "" + }, + { + "name": "attachmentId", + "type": "string", + "description": "Unique identifier of the attachment to download.", + "required": true, + "defaultValue": "" + }, + { + "name": "authToken", + "type": "string", + "description": "Bearer token or API key used for authentication with the backend server.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeoutSeconds", + "type": "number", + "description": "Maximum time in seconds to wait for the download request before timing out.", + "required": false, + "defaultValue": "30" + }, + { + "name": "includeMetadata", + "type": "boolean", + "description": "Whether to include metadata such as filename and content-type in the output.", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "An object containing the attachment binary data (as base64 string) and optional metadata (filename, contentType)." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to retrieve and process attachment files stored on a backend server, requiring an authenticated API call to fetch the binary content for further processing or delivery. It is especially useful when attachments are accessible only via authenticated endpoints.", + "limitations": "Cannot handle attachments from unauthenticated or unsupported APIs. Does not perform file type conversion or scanning; only downloads raw data.", + "examples": [ + "Download the PDF attachment with ID 'abc123' from 'https://api.example.com/attachments' using a given auth token.", + "Fetch an image attachment from a secured backend endpoint and include metadata for file handling.", + "Retrieve a document attachment with a custom timeout setting for slow server response." + ] + }, + "tags": [ + "backend", + "attachment", + "download", + "API", + "file", + "binary", + "authentication" + ], + "examples": [ + { + "inputJson": "{\"apiEndpoint\":\"https://api.example.com/attachments\",\"attachmentId\":\"file_789\",\"authToken\":\"Bearer abcdef123456\",\"timeoutSeconds\":20,\"includeMetadata\":true}", + "description": "Download attachment with ID 'file_789' from specified API with auth and a 20-second timeout, including metadata." + }, + { + "inputJson": "{\"apiEndpoint\":\"https://myserver.com/api/v1/files\",\"attachmentId\":\"img_456\",\"authToken\":\"Token xyz987\",\"includeMetadata\":false}", + "description": "Fetch image attachment 'img_456' without metadata from another backend API using Token-based auth." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "download", + "object": "Attachment", + "context": null + } + }, + { + "name": "backend-development.renderVideo", + "description": "Renders a video file by combining input media assets and applying optional effects, resizing, and encoding parameters. Accepts source video or image files, configuration for transitions, overlay texts, and output format to produce a fully processed video file ready for delivery or storage.", + "category": "backend-development", + "parameters": [ + { + "name": "inputMedia", + "type": "array", + "description": "Array of input media objects specifying type (video/image), source URL or base64, and optional start/end times for clipping.", + "required": true, + "defaultValue": "" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output video format (e.g., mp4, webm, avi).", + "required": true, + "defaultValue": "mp4" + }, + { + "name": "resolution", + "type": "object", + "description": "Output resolution object with width and height in pixels.", + "required": false, + "defaultValue": "{\"width\":1920,\"height\":1080}" + }, + { + "name": "frameRate", + "type": "number", + "description": "Target frames per second for the output video.", + "required": false, + "defaultValue": "30" + }, + { + "name": "transitionEffect", + "type": "string", + "description": "Name of transition effect to apply between media assets (e.g., fade, slide).", + "required": false, + "defaultValue": "" + }, + { + "name": "overlayText", + "type": "array", + "description": "Optional array of text overlays, with content, position, start time, and duration.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "bitrate", + "type": "number", + "description": "Target video bitrate in kbps for output file compression.", + "required": false, + "defaultValue": "2500" + } + ], + "returns": { + "type": "object", + "description": "Object containing output video URL, format, resolution, duration, and size in bytes." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically generate or transform videos on the backend by combining multimedia inputs, applying effects or overlays, and exporting a configured video file. Ideal for automated video production pipelines, content personalization, or media workflows.", + "limitations": "This tool does not perform advanced video editing like motion tracking or 3D effects. It does not support live streaming generation or real-time rendering. Input media compatibility depends on underlying codecs.", + "examples": [ + "Create a promotional video by merging intro clip and product images with fade transitions, output as mp4 at 1080p.", + "Render a video slideshow from a list of images with overlay text captions and export at 30fps.", + "Combine multiple video snippets, resize output to 720p, and set bitrate for mobile device optimization." + ] + }, + "tags": [ + "video", + "rendering", + "backend", + "media-processing", + "encoding", + "automation" + ], + "examples": [ + { + "inputJson": "{\"inputMedia\":[{\"type\":\"video\",\"source\":\"https://example.com/intro.mp4\"},{\"type\":\"image\",\"source\":\"https://example.com/product1.jpg\",\"start\":0,\"end\":5}],\"outputFormat\":\"mp4\",\"resolution\":{\"width\":1920,\"height\":1080},\"frameRate\":30,\"transitionEffect\":\"fade\",\"overlayText\":[{\"content\":\"Welcome to Product\",\"position\":{\"x\":100,\"y\":50},\"start\":1,\"duration\":4}],\"bitrate\":3000}", + "description": "Render a mp4 video combining an intro video and a product image with fade transitions and overlay text." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "render", + "object": "Video", + "context": null + } + }, + { + "name": "backend-development.formatSchema", + "description": "Formats given JSON schema definitions into consistently styled, human-readable code strings. Accepts schema objects or strings, applies indentation, property ordering, and optional output format (JSON or YAML). Returns the formatted schema as a string to improve readability and maintainability in backend development.", + "category": "backend-development", + "parameters": [ + { + "name": "schema", + "type": "object", + "description": "JSON schema object defining data structure to format (required).", + "required": true, + "defaultValue": "" + }, + { + "name": "indentation", + "type": "number", + "description": "Number of spaces to use for indentation in formatted output.", + "required": false, + "defaultValue": "2" + }, + { + "name": "propertyOrder", + "type": "string", + "description": "Defines the order of properties: 'alphabetical', 'asIs', or 'custom'.", + "required": false, + "defaultValue": "alphabetical" + }, + { + "name": "customOrder", + "type": "array", + "description": "Array of property names specifying a custom ordering if propertyOrder is 'custom'.", + "required": false, + "defaultValue": "[]" + }, + { + "name": "outputFormat", + "type": "string", + "description": "Desired output format: 'json' or 'yaml'.", + "required": false, + "defaultValue": "json" + }, + { + "name": "includeComments", + "type": "boolean", + "description": "Whether to include schema descriptions as comments in the output if supported (only YAML).", + "required": false, + "defaultValue": "false" + } + ], + "returns": { + "type": "object", + "description": "Returns an object with a single string property 'formattedSchema' containing the schema code string formatted as requested." + }, + "aiAgent": { + "useCase": "This tool is used when an AI agent needs to format or beautify a backend JSON schema definition to standardize style, improve readability, or convert schema formats for configuration or documentation purposes. It helps generate clean schema files in JSON or YAML with consistent indentation and property ordering.", + "limitations": "The tool cannot validate schema correctness, resolve schema references ($ref), or transform schema version dialects. It formats only and assumes input schemas are valid JSON objects.", + "examples": [ + "Format a JSON schema object with 4-space indentation and alphabetical property ordering in JSON output.", + "Generate a YAML formatted schema with property descriptions included as comments.", + "Apply a custom property order in the output for improved readability." + ] + }, + "tags": [ + "backend", + "schema", + "formatting", + "json", + "yaml", + "code-style" + ], + "examples": [ + { + "inputJson": "{\"schema\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"number\"}},\"required\":[\"id\",\"name\"]},\"indentation\":4,\"propertyOrder\":\"alphabetical\",\"outputFormat\":\"json\",\"includeComments\":false}", + "description": "Format a simple JSON schema with 4 spaces indentation and alphabetical ordering in JSON." + }, + { + "inputJson": "{\"schema\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"The title of the book\"},\"author\":{\"type\":\"string\"},\"year\":{\"type\":\"integer\",\"description\":\"Year of publication\"}},\"required\":[\"title\",\"author\"]},\"indentation\":2,\"propertyOrder\":\"asIs\",\"outputFormat\":\"yaml\",\"includeComments\":true}", + "description": "Format schema to YAML with comments and as-is property order with 2 spaces indentation." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "format", + "object": "Schema", + "context": null + } + }, + { + "name": "backend-development.generateForecast", + "description": "Generates business forecasts by analyzing historical data and applying statistical or machine learning models. Accepts time-series data, forecasting horizon, and algorithm selection as inputs; produces projected future values with confidence intervals.", + "category": "backend-development", + "parameters": [ + { + "name": "historicalData", + "type": "array", + "description": "An array of historical data points, each with timestamp and value fields, representing past business metrics.", + "required": true, + "defaultValue": "" + }, + { + "name": "forecastHorizon", + "type": "number", + "description": "Number of future time periods to generate forecasts for.", + "required": true, + "defaultValue": "" + }, + { + "name": "timeUnit", + "type": "string", + "description": "Granularity of time intervals in the historical data and forecast (e.g., 'day', 'week', 'month').", + "required": true, + "defaultValue": "day" + }, + { + "name": "algorithm", + "type": "string", + "description": "Forecasting algorithm to use, such as 'ARIMA', 'ExponentialSmoothing', or 'Prophet'.", + "required": false, + "defaultValue": "Prophet" + }, + { + "name": "includeConfidenceInterval", + "type": "boolean", + "description": "Whether to include confidence intervals in the forecast output.", + "required": false, + "defaultValue": "true" + }, + { + "name": "seasonalityFrequency", + "type": "number", + "description": "Seasonality period length, e.g., 7 for weekly seasonality on daily data; 0 means no seasonality.", + "required": false, + "defaultValue": "0" + } + ], + "returns": { + "type": "object", + "description": "An object containing forecasted values for each future time period with timestamps, predicted values, and optionally confidence intervals (lower and upper bounds)." + }, + "aiAgent": { + "useCase": "Use this tool when needing to predict future business metrics (like sales, revenue, or user activity) based on historical trends. It helps in planning, inventory management, budgeting, and strategic decision-making by generating data-driven forecasts.", + "limitations": "This tool requires sufficient quality historical data and may not capture sudden unexpected events or complex external factors affecting the business. It assumes time series continuity and may produce unreliable results with highly sparse or irregular data.", + "examples": [ + "Generate a 30-day sales forecast using historical daily sales data.", + "Forecast revenue for the next 12 months using monthly aggregated data with seasonal patterns.", + "Produce weekly active user projections for the next 8 weeks using ARIMA algorithm." + ] + }, + "tags": [ + "forecasting", + "business-intelligence", + "time-series", + "backend-development", + "machine-learning", + "prediction" + ], + "examples": [ + { + "inputJson": "{\"historicalData\":[{\"timestamp\":\"2023-01-01\",\"value\":100},{\"timestamp\":\"2023-01-02\",\"value\":120},{\"timestamp\":\"2023-01-03\",\"value\":130}],\"forecastHorizon\":7,\"timeUnit\":\"day\",\"algorithm\":\"Prophet\",\"includeConfidenceInterval\":true,\"seasonalityFrequency\":7}", + "description": "Forecast the next 7 days of daily sales using Prophet with weekly seasonality." + }, + { + "inputJson": "{\"historicalData\":[{\"timestamp\":\"2022-01\",\"value\":5000},{\"timestamp\":\"2022-02\",\"value\":5100},{\"timestamp\":\"2022-03\",\"value\":5300}],\"forecastHorizon\":6,\"timeUnit\":\"month\",\"algorithm\":\"ExponentialSmoothing\",\"includeConfidenceInterval\":false,\"seasonalityFrequency\":12}", + "description": "Generate a 6-month revenue forecast from monthly historical data without confidence intervals." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Forecast", + "context": null + } + }, + { + "name": "backend-development.generateChecklist", + "description": "Generates a structured checklist document for backend development tasks based on provided project requirements and checklist categories. Accepts project details, target checklist categories, and optional priorities, then creates an itemized checklist output to guide development and quality assurance.", + "category": "backend-development", + "parameters": [ + { + "name": "projectName", + "type": "string", + "description": "Name of the backend project for which the checklist is generated.", + "required": true, + "defaultValue": "" + }, + { + "name": "categories", + "type": "array", + "description": "Array of checklist category names to include (e.g., ['API Design','Security','Testing']).", + "required": true, + "defaultValue": "" + }, + { + "name": "priorityLevel", + "type": "string", + "description": "Optional priority level for tasks (e.g., 'high', 'medium', 'low'), which influences checklist item emphasis.", + "required": false, + "defaultValue": "" + }, + { + "name": "includeDescriptions", + "type": "boolean", + "description": "Flag indicating whether to include detailed descriptions for each checklist item.", + "required": false, + "defaultValue": "true" + }, + { + "name": "customTasks", + "type": "array", + "description": "Optional array of custom checklist items to add in addition to standard categories.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object containing the checklist with categories as keys and arrays of tasks (with optional descriptions and priorities) as values." + }, + "aiAgent": { + "useCase": "Use this tool when generating comprehensive and organized backend development checklists tailored to specific project needs and focus areas, helping teams track essential tasks for architecture, security, testing, and deployment stages. It supports project scoping and quality assurance planning.", + "limitations": "This tool generates general checklist items based on categories and does not replace expert planning or adapt dynamically to very specific or evolving project requirements.", + "examples": [ + "Generate a checklist for a backend API project focusing on security and testing categories with high priority level.", + "Create a checklist for 'Order Management' backend including API Design, Database, and Deployment categories without descriptions.", + "Add custom tasks to a backend development checklist for a microservices project focused on scalability and monitoring." + ] + }, + "tags": [ + "backend", + "checklist", + "project-management", + "development", + "quality-assurance", + "task-tracking" + ], + "examples": [ + { + "inputJson": "{\"projectName\":\"User Authentication Service\",\"categories\":[\"API Design\",\"Security\",\"Testing\"],\"priorityLevel\":\"high\",\"includeDescriptions\":true}", + "description": "Generate a detailed checklist for a user authentication backend service focusing on API design, security, and testing with high priority tasks." + }, + { + "inputJson": "{\"projectName\":\"Order Processing System\",\"categories\":[\"Database\",\"Deployment\"],\"includeDescriptions\":false}", + "description": "Generate a checklist for order processing backend focusing on database and deployment tasks without detailed descriptions." + }, + { + "inputJson": "{\"projectName\":\"Microservices Platform\",\"categories\":[\"Monitoring\"],\"customTasks\":[{\"task\":\"Implement circuit breaker pattern\",\"description\":\"Add fault tolerance to services\",\"priority\":\"medium\"}],\"includeDescriptions\":true}", + "description": "Generate a checklist for microservices monitoring including a custom task to implement circuit breaker pattern." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "generate", + "object": "Checklist", + "context": null + } + }, + { + "name": "backend-development.createMention", + "description": "Creates a user mention entity within a backend system, accepting information about the mention type, the target user ID, and optional contextual metadata. Processes these inputs to generate a structured mention object that can be stored or sent via APIs for notifications or referencing users in messages.", + "category": "backend-development", + "parameters": [ + { + "name": "mentionType", + "type": "string", + "description": "The type of mention, such as 'user', 'group', or 'role'. Determines how the mention should be processed and formatted.", + "required": true, + "defaultValue": "" + }, + { + "name": "targetId", + "type": "string", + "description": "The unique identifier of the entity (user, group, or role) to mention.", + "required": true, + "defaultValue": "" + }, + { + "name": "context", + "type": "object", + "description": "Optional contextual information related to the mention, such as messageId, channelId, or additional tags.", + "required": false, + "defaultValue": "{}" + }, + { + "name": "includeNotification", + "type": "boolean", + "description": "Whether to trigger a notification to the mentioned entity if supported by the system.", + "required": false, + "defaultValue": "true" + }, + { + "name": "displayName", + "type": "string", + "description": "Optional display name to override the default user or entity name in the mention output.", + "required": false, + "defaultValue": "" + } + ], + "returns": { + "type": "object", + "description": "An object representing the created mention entity, including the mention type, target ID, formatted mention string, and notification flag." + }, + "aiAgent": { + "useCase": "Use this tool when you need to programmatically create mention entities to reference users, groups, or roles within backend communications or notifications, enabling consistent formatting and optional notification triggers within messaging or collaborative applications.", + "limitations": "Does not handle the actual delivery of notifications or validation of target ID existence; those are handled by other system components or services.", + "examples": [ + "Create a mention for a user ID '12345' to include in a message with notification enabled.", + "Create a mention for a group ID 'dev-team' without triggering notifications, including contextual metadata about the related channel.", + "Create a mention with a custom display name overriding the default user name." + ] + }, + "tags": [ + "backend", + "communication", + "mention", + "notification", + "user-reference" + ], + "examples": [ + { + "inputJson": "{\"mentionType\":\"user\",\"targetId\":\"u12345\",\"includeNotification\":true}", + "description": "Create a user mention with notification enabled." + }, + { + "inputJson": "{\"mentionType\":\"group\",\"targetId\":\"g9876\",\"includeNotification\":false,\"context\":{\"channelId\":\"ch456\"}}", + "description": "Create a group mention without notification, including context info." + }, + { + "inputJson": "{\"mentionType\":\"user\",\"targetId\":\"u12345\",\"displayName\":\"Alice\",\"includeNotification\":true}", + "description": "Create a user mention with a custom display name and notification." + } + ], + "qualityScore": 0.88, + "skeleton": { + "verb": "create", + "object": "Mention", + "context": null + } + }, + { + "name": "infrastructure-management.analyzeWord", + "description": "This tool accepts a single word related to infrastructure management, analyzes its relevance and context within infrastructure domains, and provides insights such as common usage, related technical terms, and potential implications for system design or operation. Input is a string word, output includes analysis report with semantic context and usage examples.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "word", + "type": "string", + "description": "The infrastructure-related word to analyze for context and relevance.", + "required": true, + "defaultValue": "" + }, + { + "name": "includeRelatedTerms", + "type": "boolean", + "description": "Whether to include related technical terms and synonyms in the analysis report.", + "required": false, + "defaultValue": "true" + }, + { + "name": "maxExamples", + "type": "number", + "description": "Maximum number of usage examples to include in analysis output.", + "required": false, + "defaultValue": "3" + } + ], + "returns": { + "type": "object", + "description": "An object containing the analyzed word, its domain relevance score, related terms list, usage examples array, and a brief semantic analysis summary." + }, + "aiAgent": { + "useCase": "Use this tool when you need to understand how a specific word relates to infrastructure management contexts, such as when interpreting documentation, clarifying terminology, or exploring potential impacts of technical concepts represented by that word. It helps in knowledge extraction and domain-specific linguistic analysis.", + "limitations": "Does not provide real-time monitoring data or configurations. It only analyzes the semantic and contextual aspects of a single word and does not handle phrases or sentences.", + "examples": [ + "Analyze the word 'scalability' in an infrastructure context.", + "Find related terms and usage examples for 'load balancer'.", + "Provide semantic insights for the term 'containerization' with up to 5 usage examples." + ] + }, + "tags": [ + "analysis", + "infrastructure", + "terminology", + "semantic", + "word", + "context" + ], + "examples": [ + { + "inputJson": "{\"word\":\"scalability\",\"includeRelatedTerms\":true,\"maxExamples\":3}", + "description": "Analyze the word 'scalability' with related terms and 3 usage examples." + }, + { + "inputJson": "{\"word\":\"load balancer\",\"includeRelatedTerms\":false,\"maxExamples\":2}", + "description": "Analyze 'load balancer' without related terms and limit to 2 usage examples." + } + ], + "qualityScore": 0.85, + "skeleton": { + "verb": "analyze", + "object": "Word", + "context": null + } + }, + { + "name": "infrastructure-management.createWord", + "description": "Generates a domain-specific technical term or word relevant to infrastructure management based on context keywords provided. Accepts input keywords describing infrastructure components or concepts, then uses a predefined lexicon and linguistic rules to create a plausible new word. Outputs the generated word as a string to assist with naming or documentation tasks.", + "category": "infrastructure-management", + "parameters": [ + { + "name": "contextKeywords", + "type": "array", + "description": "List of keywords describing infrastructure components, systems, or concepts to guide word creation.", + "required": true, + "defaultValue": "" + }, + { + "name": "wordType", + "type": "string", + "description": "Type of word to generate, such as 'noun', 'verb', or 'adjective'.", + "required": false, + "defaultValue": "noun" + }, + { + "name": "maxLength", + "type": "number", + "description": "Maximum allowed length of the generated word.", + "required": false, + "defaultValue": "15" + }, + { + "name": "includeSuffix", + "type": "boolean", + "description": "Whether to append common technical suffixes to the generated word (e.g., '-node', '-net').", + "required": false, + "defaultValue": "true" + } + ], + "returns": { + "type": "object", + "description": "Object containing the generated word string and metadata about its origin and type. Includes 'word' (string) and 'wordType' (string) fields." + }, + "aiAgent": { + "useCase": "Use this tool when an AI agent needs to create a novel, context-appropriate technical term related to infrastructure management, such as for naming new components, concepts, or features in documentation or product design.", + "limitations": "Cannot guarantee that the generated word is officially recognized or free from existing trademarks. Not suitable for generating general dictionary words unrelated to infrastructure contexts.", + "examples": [ + "Generate a new noun word related to cloud computing nodes.", + "Create a technical adjective describing network security features.", + "Suggest a verb word for automated infrastructure orchestration." + ] + }, + "tags": [ + "word-generation", + "infrastructure", + "naming", + "technical-terms", + "content-creation" + ], + "examples": [ + { + "inputJson": "{\"contextKeywords\":[\"cloud\",\"storage\",\"virtual\"],\"wordType\":\"noun\",\"maxLength\":12,\"includeSuffix\":true}", + "description": "Generate a noun word related to cloud storage virtualization with suffixes." + }, + { + "inputJson": "{\"contextKeywords\":[\"deploy\",\"automation\"],\"wordType\":\"verb\",\"maxLength\":10,\"includeSuffix\":false}", + "description": "Generate a verb word related to deployment automation without suffixes." + } + ], + "qualityScore": 0.85, + "skeleton": { + "verb": "create", + "object": "Word", + "context": null + } + } + ] +} \ No newline at end of file diff --git a/apps/web/scripts/generate-og-images.ts b/apps/web/scripts/generate-og-images.ts new file mode 100644 index 0000000..6674587 --- /dev/null +++ b/apps/web/scripts/generate-og-images.ts @@ -0,0 +1,330 @@ +#!/usr/bin/env npx tsx +/** + * Generate OG images for all pages + * Run with: npx tsx scripts/generate-og-images.ts + */ + +import { mkdir, stat, writeFile } from 'node:fs/promises'; +import path from 'node:path'; +import OpenAI from 'openai'; +import { buildOGPrompt } from '../src/lib/og/prompt-builder'; +import type { PageContent } from '../src/lib/og/types'; + +const OUTPUT_DIR = path.join(process.cwd(), 'public', 'og'); +const MAX_AGE_DAYS = 30; + +// Static pages to generate +const STATIC_PAGES: Array<{ slug: string; content: PageContent }> = [ + { + slug: 'home', + content: { + pageType: 'home', + title: 'TPMJS', + description: 'Tool Package Manager for AI Agents', + keywords: ['AI', 'tools', 'npm', 'registry'], + }, + }, + { + slug: 'docs', + content: { + pageType: 'docs', + title: 'Documentation', + description: 'Complete guide to using TPMJS', + keywords: ['documentation', 'guide', 'tutorial'], + }, + }, + { + slug: 'stats', + content: { + pageType: 'stats', + title: 'Registry Statistics', + description: 'Real-time metrics for TPMJS registry', + keywords: ['statistics', 'metrics', 'analytics'], + }, + }, + { + slug: 'publish', + content: { + pageType: 'publish', + title: 'Publish Your Tool', + description: 'Share your AI tool with the community', + keywords: ['publish', 'create', 'npm'], + }, + }, + { + slug: 'playground', + content: { + pageType: 'playground', + title: 'Playground', + description: 'Test and experiment with AI tools', + keywords: ['playground', 'test', 'experiment'], + }, + }, + { + slug: 'tool-search', + content: { + pageType: 'search', + title: 'Tool Search', + description: 'Search and discover AI tools', + keywords: ['search', 'browse', 'discover'], + }, + }, + { + slug: 'faq', + content: { + pageType: 'faq', + title: 'FAQ', + description: 'Frequently asked questions about TPMJS', + keywords: ['faq', 'questions', 'help'], + }, + }, + { + slug: 'sdk', + content: { + pageType: 'sdk', + title: 'SDK', + description: 'TPMJS SDK for integrating tools', + keywords: ['sdk', 'integration', 'api'], + }, + }, + { + slug: 'spec', + content: { + pageType: 'spec', + title: 'Specification', + description: 'TPMJS tool specification and schema', + keywords: ['spec', 'specification', 'schema'], + }, + }, + { + slug: 'changelog', + content: { + pageType: 'changelog', + title: 'Changelog', + description: 'TPMJS release history and updates', + keywords: ['changelog', 'releases', 'updates'], + }, + }, + { + slug: 'how-it-works', + content: { + pageType: 'how-it-works', + title: 'How It Works', + description: 'Learn how TPMJS works under the hood', + keywords: ['how', 'works', 'architecture'], + }, + }, + { + slug: 'privacy', + content: { + pageType: 'privacy', + title: 'Privacy Policy', + description: 'TPMJS privacy policy', + keywords: ['privacy', 'policy', 'data'], + }, + }, + { + slug: 'terms', + content: { + pageType: 'terms', + title: 'Terms of Service', + description: 'TPMJS terms and conditions', + keywords: ['terms', 'service', 'legal'], + }, + }, +]; + +let openai: OpenAI | null = null; + +function getOpenAIClient(): OpenAI { + if (!openai) { + if (!process.env.OPENAI_API_KEY) { + throw new Error('OPENAI_API_KEY environment variable is required'); + } + openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); + } + return openai; +} + +async function generateImage(prompt: string): Promise<Buffer> { + const client = getOpenAIClient(); + + const response = await client.images.generate({ + model: 'gpt-image-1-mini', + prompt, + n: 1, + size: '1536x1024', + quality: 'medium', + }); + + if (!response.data || response.data.length === 0) { + throw new Error('No data returned from OpenAI'); + } + + const b64 = response.data[0]?.b64_json; + if (!b64) { + throw new Error('No base64 image data returned'); + } + + return Buffer.from(b64, 'base64'); +} + +async function shouldRegenerate(filePath: string): Promise<boolean> { + try { + const stats = await stat(filePath); + const ageMs = Date.now() - stats.mtime.getTime(); + const ageDays = ageMs / (1000 * 60 * 60 * 24); + return ageDays > MAX_AGE_DAYS; + } catch { + // File doesn't exist + return true; + } +} + +async function generateStaticPages(): Promise<void> { + console.log('\n📄 Generating static page images...\n'); + + for (const page of STATIC_PAGES) { + const filePath = path.join(OUTPUT_DIR, `${page.slug}.png`); + + if (!(await shouldRegenerate(filePath))) { + console.log(` ⏭️ ${page.slug} - skipped (fresh)`); + continue; + } + + console.log(` 🎨 ${page.slug} - generating...`); + + try { + const prompt = buildOGPrompt(page.content); + const buffer = await generateImage(prompt); + await writeFile(filePath, buffer); + console.log(` ✅ ${page.slug} - saved`); + } catch (error) { + console.error(` ❌ ${page.slug} - failed:`, error); + } + } +} + +async function fetchTools(): Promise< + Array<{ + id: string; + name: string; + packageName: string; + description: string; + category: string; + }> +> { + // Fetch tools from production API + const baseUrl = process.env.NEXT_PUBLIC_APP_URL || 'https://tpmjs.com'; + + try { + const response = await fetch(`${baseUrl}/api/tools?limit=100`); + if (!response.ok) { + console.warn('Failed to fetch tools from API, skipping tool images'); + return []; + } + + const json = await response.json(); + // API returns { data: [...tools] } where each tool has package.npmPackageName + const tools = json.data || []; + return tools.map( + (tool: { + name: string; + description: string; + package: { npmPackageName: string; category: string }; + }) => ({ + id: tool.name, + name: tool.name, + packageName: tool.package.npmPackageName, + description: tool.description || '', + category: tool.package.category || 'other', + }) + ); + } catch (error) { + console.warn('Could not fetch tools:', error); + return []; + } +} + +function slugifyToolPath(packageName: string, toolName: string): string { + // Convert @scope/package/toolName to scope-package-toolName + return `${packageName}/${toolName}` + .replace(/^@/, '') + .replace(/\//g, '-') + .replace(/[^a-zA-Z0-9-]/g, '-') + .replace(/-+/g, '-') + .toLowerCase(); +} + +async function generateToolPages(): Promise<void> { + console.log('\n🔧 Generating tool page images...\n'); + + const tools = await fetchTools(); + + if (tools.length === 0) { + console.log(' ⚠️ No tools found, skipping tool images'); + return; + } + + console.log(` Found ${tools.length} tools\n`); + + // Create tools subdirectory + const toolsDir = path.join(OUTPUT_DIR, 'tool'); + await mkdir(toolsDir, { recursive: true }); + + for (const tool of tools) { + const slug = slugifyToolPath(tool.packageName, tool.name); + const filePath = path.join(toolsDir, `${slug}.png`); + + if (!(await shouldRegenerate(filePath))) { + console.log(` ⏭️ ${tool.name} - skipped (fresh)`); + continue; + } + + console.log(` 🎨 ${tool.name} - generating...`); + + try { + const content: PageContent = { + pageType: 'tool', + title: tool.name, + description: tool.description || `AI tool from ${tool.packageName}`, + keywords: [tool.category, 'AI', 'tool'], + tool: { + name: tool.name, + packageName: tool.packageName, + category: tool.category || 'other', + description: tool.description || '', + }, + }; + + const prompt = buildOGPrompt(content); + const buffer = await generateImage(prompt); + await writeFile(filePath, buffer); + console.log(` ✅ ${tool.name} - saved`); + } catch (error) { + console.error(` ❌ ${tool.name} - failed:`, error); + } + + // Rate limit - wait 500ms between requests + await new Promise((resolve) => setTimeout(resolve, 500)); + } +} + +async function main(): Promise<void> { + console.log('🖼️ TPMJS OG Image Generator\n'); + console.log(`Output directory: ${OUTPUT_DIR}`); + console.log(`Max age: ${MAX_AGE_DAYS} days`); + + // Ensure output directory exists + await mkdir(OUTPUT_DIR, { recursive: true }); + + // Generate static pages + await generateStaticPages(); + + // Generate tool pages + await generateToolPages(); + + console.log('\n✨ Done!\n'); +} + +main().catch(console.error); diff --git a/apps/web/src/app/api/bundlephobia/route.ts b/apps/web/src/app/api/bundlephobia/route.ts new file mode 100644 index 0000000..672f17e --- /dev/null +++ b/apps/web/src/app/api/bundlephobia/route.ts @@ -0,0 +1,60 @@ +import { NextResponse } from 'next/server'; + +export const runtime = 'edge'; + +interface BundlephobiaResponse { + name: string; + version: string; + size: number; + gzip: number; + dependencyCount: number; +} + +/** + * GET /api/bundlephobia?package=@scope/name&version=1.0.0 + * Proxies bundlephobia API to avoid CORS issues + */ +export async function GET(request: Request) { + const { searchParams } = new URL(request.url); + const packageName = searchParams.get('package'); + const version = searchParams.get('version'); + + if (!packageName) { + return NextResponse.json({ error: 'Package name required' }, { status: 400 }); + } + + const packageWithVersion = version ? `${packageName}@${version}` : packageName; + + try { + const response = await fetch( + `https://bundlephobia.com/api/size?package=${encodeURIComponent(packageWithVersion)}`, + { + headers: { + 'User-Agent': 'TPMJS/1.0', + }, + } + ); + + if (!response.ok) { + if (response.status === 404) { + return NextResponse.json({ error: 'Package not found on bundlephobia' }, { status: 404 }); + } + return NextResponse.json( + { error: 'Failed to fetch bundle size' }, + { status: response.status } + ); + } + + const data: BundlephobiaResponse = await response.json(); + + return NextResponse.json({ + name: data.name, + version: data.version, + size: data.size, + gzip: data.gzip, + dependencyCount: data.dependencyCount, + }); + } catch { + return NextResponse.json({ error: 'Failed to fetch bundle size' }, { status: 500 }); + } +} diff --git a/apps/web/src/app/api/health/route.ts b/apps/web/src/app/api/health/route.ts index 09fefc6..7c57a1f 100644 --- a/apps/web/src/app/api/health/route.ts +++ b/apps/web/src/app/api/health/route.ts @@ -1,4 +1,5 @@ -import { NextResponse } from 'next/server'; +import { type NextRequest, NextResponse } from 'next/server'; +import { checkRateLimit } from '~/lib/rate-limit'; export const runtime = 'nodejs'; export const dynamic = 'force-dynamic'; @@ -8,7 +9,12 @@ export const maxDuration = 60; * GET /api/health * Simple health check endpoint that doesn't touch the database */ -export async function GET() { +export async function GET(request: NextRequest) { + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } return NextResponse.json({ status: 'ok', timestamp: new Date().toISOString(), diff --git a/apps/web/src/app/api/og/[...path]/route.ts b/apps/web/src/app/api/og/[...path]/route.ts new file mode 100644 index 0000000..371a606 --- /dev/null +++ b/apps/web/src/app/api/og/[...path]/route.ts @@ -0,0 +1,99 @@ +/** + * OG Image API Route + * + * GET /api/og/[...path] + * + * Serves pre-generated OG images from public/og/ directory. + * Images are generated at build time using: pnpm --filter=@tpmjs/web generate-og + * + * Examples: + * /api/og/home -> public/og/home.png + * /api/og/docs -> public/og/docs.png + * /api/og/tool/@tpmjs/hello/helloWorld -> public/og/tool/tpmjs-hello-helloworld.png + */ + +import { readFile, stat } from 'node:fs/promises'; +import path from 'node:path'; +import { type NextRequest, NextResponse } from 'next/server'; + +export const runtime = 'nodejs'; + +/** + * Convert a path to the corresponding OG image filename + * /home -> home.png + * /tool/@tpmjs/hello/helloWorld -> tool/tpmjs-hello-helloworld.png + */ +function pathToFilename(pagePath: string): string { + // Remove leading slash + const cleanPath = pagePath.replace(/^\//, ''); + + // Handle tool pages specially + if (cleanPath.startsWith('tool/')) { + // Extract package and tool name from path like tool/@scope/package/toolName + const toolPath = cleanPath.replace('tool/', ''); + const slug = toolPath + .replace(/^@/, '') + .replace(/\//g, '-') + .replace(/[^a-zA-Z0-9-]/g, '-') + .replace(/-+/g, '-') + .toLowerCase(); + return `tool/${slug}.png`; + } + + return `${cleanPath}.png`; +} + +/** + * Serve an image file with proper headers + */ +function serveImage(buffer: Buffer): NextResponse { + return new NextResponse(new Uint8Array(buffer), { + headers: { + 'Content-Type': 'image/png', + 'Cache-Control': 'public, max-age=2592000, stale-while-revalidate=86400', // 30 days + }, + }); +} + +/** + * Serve the static fallback OG image + */ +async function serveFallbackImage(): Promise<NextResponse> { + try { + const fallbackPath = path.join(process.cwd(), 'public', 'og-image.png'); + const buffer = await readFile(fallbackPath); + return serveImage(buffer); + } catch { + return new NextResponse('Fallback image not found', { status: 500 }); + } +} + +export async function GET( + _request: NextRequest, + { params }: { params: Promise<{ path: string[] }> } +): Promise<NextResponse> { + const { path: pathSegments } = await params; + const pagePath = `/${pathSegments.join('/')}`; + + try { + // Convert path to filename + const filename = pathToFilename(pagePath); + const imagePath = path.join(process.cwd(), 'public', 'og', filename); + + // Check if file exists + try { + await stat(imagePath); + } catch { + // File doesn't exist, serve fallback + console.log(`[OG] Image not found: ${imagePath}, serving fallback`); + return serveFallbackImage(); + } + + // Read and serve the image + const buffer = await readFile(imagePath); + return serveImage(buffer); + } catch (error) { + console.error(`[OG] Error serving image for ${pagePath}:`, error); + return serveFallbackImage(); + } +} diff --git a/apps/web/src/app/api/stats/executions/route.ts b/apps/web/src/app/api/stats/executions/route.ts new file mode 100644 index 0000000..cd2e0a4 --- /dev/null +++ b/apps/web/src/app/api/stats/executions/route.ts @@ -0,0 +1,442 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { checkRateLimit } from '~/lib/rate-limit'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; +export const maxDuration = 30; + +/** + * GET /api/stats/executions + * Detailed execution (simulation) statistics and analytics + * + * Returns: + * - Execution counts and success rates + * - Performance timing metrics + * - Token usage analytics + * - Most executed tools + * - Execution trends over time + * - Error analysis + */ +export async function GET(request: NextRequest) { + const startTime = Date.now(); + + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + + try { + const now = new Date(); + const last1h = new Date(now.getTime() - 60 * 60 * 1000); + const last24h = new Date(now.getTime() - 24 * 60 * 60 * 1000); + const last7d = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000); + const last30d = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000); + + const [ + // Total counts + totalExecutions, + successCount, + errorCount, + timeoutCount, + pendingCount, + runningCount, + + // Time-based counts + execLast1h, + execLast24h, + execLast7d, + execLast30d, + + // Timing statistics + timingStats, + + // Token usage aggregates + tokenStats, + + // Most executed tools + mostExecutedTools, + + // Recent executions + recentExecutions, + + // Execution by status (last 24h) + statusBreakdown24h, + + // Hourly trends (last 24h) + hourlyTrends, + + // Daily trends (last 7 days) + dailyTrends, + + // Top errors + topErrors, + + // Model usage breakdown + modelUsage, + ] = await Promise.all([ + // Total counts + prisma.simulation.count(), + prisma.simulation.count({ where: { status: 'success' } }), + prisma.simulation.count({ where: { status: 'error' } }), + prisma.simulation.count({ where: { status: 'timeout' } }), + prisma.simulation.count({ where: { status: 'pending' } }), + prisma.simulation.count({ where: { status: 'running' } }), + + // Time-based counts + prisma.simulation.count({ where: { createdAt: { gte: last1h } } }), + prisma.simulation.count({ where: { createdAt: { gte: last24h } } }), + prisma.simulation.count({ where: { createdAt: { gte: last7d } } }), + prisma.simulation.count({ where: { createdAt: { gte: last30d } } }), + + // Timing stats for successful executions + prisma.simulation.aggregate({ + where: { + status: 'success', + executionTimeMs: { not: null }, + }, + _avg: { executionTimeMs: true, agentSteps: true }, + _min: { executionTimeMs: true }, + _max: { executionTimeMs: true }, + _count: true, + }), + + // Token usage stats + prisma.tokenUsage.aggregate({ + _sum: { + inputTokens: true, + outputTokens: true, + totalTokens: true, + estimatedCost: true, + }, + _avg: { + inputTokens: true, + outputTokens: true, + totalTokens: true, + estimatedCost: true, + }, + _min: { totalTokens: true }, + _max: { totalTokens: true }, + _count: true, + }), + + // Most executed tools (top 20) + prisma.simulation.groupBy({ + by: ['toolId'], + _count: { id: true }, + orderBy: { _count: { id: 'desc' } }, + take: 20, + }), + + // Recent executions (last 20) + prisma.simulation.findMany({ + orderBy: { createdAt: 'desc' }, + take: 20, + select: { + id: true, + status: true, + executionTimeMs: true, + agentSteps: true, + model: true, + createdAt: true, + completedAt: true, + tool: { + select: { + name: true, + package: { select: { npmPackageName: true } }, + }, + }, + tokenUsage: { + select: { + totalTokens: true, + estimatedCost: true, + }, + }, + }, + }), + + // Status breakdown last 24h + prisma.simulation.groupBy({ + by: ['status'], + where: { createdAt: { gte: last24h } }, + _count: { id: true }, + }), + + // Hourly trends (last 24h) + prisma.$queryRaw< + { + hour: Date; + total: bigint; + success: bigint; + error: bigint; + }[] + >` + SELECT + DATE_TRUNC('hour', created_at) as hour, + COUNT(*) as total, + SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) as success, + SUM(CASE WHEN status IN ('error', 'timeout') THEN 1 ELSE 0 END) as error + FROM simulations + WHERE created_at >= ${last24h} + GROUP BY DATE_TRUNC('hour', created_at) + ORDER BY hour DESC + `, + + // Daily trends (last 7 days) + prisma.$queryRaw< + { + date: Date; + total: bigint; + success: bigint; + error: bigint; + avg_time_ms: number | null; + }[] + >` + SELECT + DATE(created_at) as date, + COUNT(*) as total, + SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) as success, + SUM(CASE WHEN status IN ('error', 'timeout') THEN 1 ELSE 0 END) as error, + AVG(CASE WHEN status = 'success' THEN execution_time_ms END) as avg_time_ms + FROM simulations + WHERE created_at >= ${last7d} + GROUP BY DATE(created_at) + ORDER BY date DESC + `, + + // Top errors (most common error messages) + prisma.$queryRaw<{ error: string; count: bigint }[]>` + SELECT + SUBSTRING(error, 1, 200) as error, + COUNT(*) as count + FROM simulations + WHERE status IN ('error', 'timeout') + AND error IS NOT NULL + AND created_at >= ${last7d} + GROUP BY SUBSTRING(error, 1, 200) + ORDER BY count DESC + LIMIT 10 + `, + + // Model usage breakdown + prisma.simulation.groupBy({ + by: ['model'], + where: { model: { not: null } }, + _count: { id: true }, + orderBy: { _count: { id: 'desc' } }, + }), + ]); + + // Get tool details for most executed + const toolIds = mostExecutedTools.map((t) => t.toolId); + const toolDetails = await prisma.tool.findMany({ + where: { id: { in: toolIds } }, + select: { + id: true, + name: true, + package: { select: { npmPackageName: true } }, + }, + }); + const toolMap = new Map(toolDetails.map((t) => [t.id, t])); + + // Format most executed tools + const formattedMostExecuted = mostExecutedTools.map((item) => { + const tool = toolMap.get(item.toolId); + return { + toolId: item.toolId, + packageName: tool?.package.npmPackageName ?? 'unknown', + toolName: tool?.name ?? 'unknown', + executionCount: item._count.id, + }; + }); + + // Calculate success rate + const completedCount = successCount + errorCount + timeoutCount; + const successRate = + completedCount > 0 ? ((successCount / completedCount) * 100).toFixed(2) : '0.00'; + + // Format status breakdown + const statusBreakdownMap: Record<string, number> = {}; + for (const item of statusBreakdown24h) { + statusBreakdownMap[item.status] = item._count.id; + } + + // Format hourly trends + const formattedHourlyTrends = hourlyTrends.map((h) => ({ + hour: h.hour, + total: Number(h.total), + success: Number(h.success), + error: Number(h.error), + successRate: + Number(h.total) > 0 ? ((Number(h.success) / Number(h.total)) * 100).toFixed(2) : '0.00', + })); + + // Format daily trends + const formattedDailyTrends = dailyTrends.map((d) => ({ + date: d.date, + total: Number(d.total), + success: Number(d.success), + error: Number(d.error), + avgTimeMs: d.avg_time_ms ? Math.round(d.avg_time_ms) : null, + successRate: + Number(d.total) > 0 ? ((Number(d.success) / Number(d.total)) * 100).toFixed(2) : '0.00', + })); + + // Format recent executions + const formattedRecentExecutions = recentExecutions.map((exec) => ({ + id: exec.id, + packageName: exec.tool.package.npmPackageName, + toolName: exec.tool.name, + status: exec.status, + executionTimeMs: exec.executionTimeMs, + agentSteps: exec.agentSteps, + model: exec.model, + tokens: exec.tokenUsage?.totalTokens ?? null, + costUsd: exec.tokenUsage?.estimatedCost + ? Number(exec.tokenUsage.estimatedCost).toFixed(6) + : null, + createdAt: exec.createdAt, + completedAt: exec.completedAt, + })); + + // Format top errors + const formattedErrors = topErrors.map((e) => ({ + error: e.error, + count: Number(e.count), + })); + + // Format model usage + const formattedModelUsage = modelUsage.map((m) => ({ + model: m.model, + count: m._count.id, + })); + + const processingTime = Date.now() - startTime; + + return NextResponse.json( + { + success: true, + meta: { + version: '1.0.0', + timestamp: now.toISOString(), + processingTimeMs: processingTime, + }, + data: { + // Overview + overview: { + totalExecutions, + successRate: `${successRate}%`, + byStatus: { + success: successCount, + error: errorCount, + timeout: timeoutCount, + pending: pendingCount, + running: runningCount, + }, + }, + + // Activity + activity: { + last1h: execLast1h, + last24h: execLast24h, + last7d: execLast7d, + last30d: execLast30d, + statusBreakdown24h: statusBreakdownMap, + }, + + // Performance + performance: { + timing: { + avgMs: timingStats._avg.executionTimeMs + ? Math.round(timingStats._avg.executionTimeMs) + : null, + minMs: timingStats._min.executionTimeMs, + maxMs: timingStats._max.executionTimeMs, + sampleSize: timingStats._count, + }, + avgAgentSteps: timingStats._avg.agentSteps + ? Number(timingStats._avg.agentSteps.toFixed(2)) + : null, + }, + + // Token usage + tokens: { + totalRecorded: tokenStats._count, + totals: { + inputTokens: tokenStats._sum.inputTokens || 0, + outputTokens: tokenStats._sum.outputTokens || 0, + totalTokens: tokenStats._sum.totalTokens || 0, + estimatedCostUsd: tokenStats._sum.estimatedCost + ? Number(tokenStats._sum.estimatedCost).toFixed(4) + : '0.0000', + }, + averages: { + inputTokens: tokenStats._avg.inputTokens + ? Math.round(tokenStats._avg.inputTokens) + : null, + outputTokens: tokenStats._avg.outputTokens + ? Math.round(tokenStats._avg.outputTokens) + : null, + totalTokens: tokenStats._avg.totalTokens + ? Math.round(tokenStats._avg.totalTokens) + : null, + costUsd: tokenStats._avg.estimatedCost + ? Number(tokenStats._avg.estimatedCost).toFixed(6) + : null, + }, + range: { + minTokens: tokenStats._min.totalTokens, + maxTokens: tokenStats._max.totalTokens, + }, + }, + + // Model usage + modelUsage: formattedModelUsage, + + // Trends + trends: { + hourly: formattedHourlyTrends, + daily: formattedDailyTrends, + }, + + // Top tools + topTools: formattedMostExecuted, + + // Recent executions + recentExecutions: formattedRecentExecutions, + + // Error analysis + errors: { + totalErrors: errorCount + timeoutCount, + topErrors: formattedErrors, + }, + }, + }, + { + headers: { + 'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120', + 'X-Processing-Time': `${processingTime}ms`, + }, + } + ); + } catch (error) { + console.error('Error fetching execution stats:', error); + + return NextResponse.json( + { + success: false, + error: { + code: 'EXECUTION_STATS_ERROR', + message: 'Failed to fetch execution statistics', + details: error instanceof Error ? error.message : 'Unknown error', + }, + meta: { + version: '1.0.0', + timestamp: new Date().toISOString(), + }, + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/stats/health/route.ts b/apps/web/src/app/api/stats/health/route.ts new file mode 100644 index 0000000..3143e16 --- /dev/null +++ b/apps/web/src/app/api/stats/health/route.ts @@ -0,0 +1,330 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { checkRateLimit } from '~/lib/rate-limit'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; +export const maxDuration = 30; + +/** + * GET /api/stats/health + * Detailed health check statistics and analytics + * + * Returns: + * - Current health status distribution + * - Health check history and trends + * - Broken tools with error details + * - Health check timing statistics + * - Health check coverage metrics + */ +export async function GET(request: NextRequest) { + const startTime = Date.now(); + + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + + try { + const now = new Date(); + const last24h = new Date(now.getTime() - 24 * 60 * 60 * 1000); + const last7d = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000); + + const [ + // Current status distribution + totalTools, + importHealthy, + importBroken, + importUnknown, + executionHealthy, + executionBroken, + executionUnknown, + + // Tools never checked + neverChecked, + + // Health check history + checksLast24h, + checksLast7d, + totalChecks, + + // Check type breakdown + importChecks, + executionChecks, + fullChecks, + + // Recent health check results + recentChecks, + + // Broken tools with details + brokenTools, + + // Health check timing stats + checkTimingStats, + + // Daily health check trends (last 7 days) + dailyTrends, + ] = await Promise.all([ + // Total tools + prisma.tool.count(), + + // Import health distribution + prisma.tool.count({ where: { importHealth: 'HEALTHY' } }), + prisma.tool.count({ where: { importHealth: 'BROKEN' } }), + prisma.tool.count({ where: { importHealth: 'UNKNOWN' } }), + + // Execution health distribution + prisma.tool.count({ where: { executionHealth: 'HEALTHY' } }), + prisma.tool.count({ where: { executionHealth: 'BROKEN' } }), + prisma.tool.count({ where: { executionHealth: 'UNKNOWN' } }), + + // Never checked tools + prisma.tool.count({ where: { lastHealthCheck: null } }), + + // Health check counts + prisma.healthCheck.count({ where: { createdAt: { gte: last24h } } }), + prisma.healthCheck.count({ where: { createdAt: { gte: last7d } } }), + prisma.healthCheck.count(), + + // Check types + prisma.healthCheck.count({ where: { checkType: 'IMPORT' } }), + prisma.healthCheck.count({ where: { checkType: 'EXECUTION' } }), + prisma.healthCheck.count({ where: { checkType: 'FULL' } }), + + // Recent checks (last 20) + prisma.healthCheck.findMany({ + orderBy: { createdAt: 'desc' }, + take: 20, + select: { + id: true, + checkType: true, + triggerSource: true, + importStatus: true, + executionStatus: true, + overallStatus: true, + importTimeMs: true, + executionTimeMs: true, + createdAt: true, + tool: { + select: { + name: true, + package: { + select: { npmPackageName: true }, + }, + }, + }, + }, + }), + + // Broken tools with error details + prisma.tool.findMany({ + where: { + OR: [{ importHealth: 'BROKEN' }, { executionHealth: 'BROKEN' }], + }, + select: { + id: true, + name: true, + importHealth: true, + executionHealth: true, + healthCheckError: true, + lastHealthCheck: true, + package: { + select: { npmPackageName: true }, + }, + }, + orderBy: { lastHealthCheck: 'desc' }, + take: 50, + }), + + // Timing statistics + prisma.healthCheck.aggregate({ + _avg: { + importTimeMs: true, + executionTimeMs: true, + }, + _min: { + importTimeMs: true, + executionTimeMs: true, + }, + _max: { + importTimeMs: true, + executionTimeMs: true, + }, + }), + + // Daily trends (raw SQL for date grouping) + prisma.$queryRaw< + { + date: Date; + total: bigint; + healthy: bigint; + broken: bigint; + }[] + >` + SELECT + DATE(created_at) as date, + COUNT(*) as total, + SUM(CASE WHEN overall_status = 'HEALTHY' THEN 1 ELSE 0 END) as healthy, + SUM(CASE WHEN overall_status = 'BROKEN' THEN 1 ELSE 0 END) as broken + FROM health_checks + WHERE created_at >= ${last7d} + GROUP BY DATE(created_at) + ORDER BY date DESC + `, + ]); + + // Calculate coverage percentage + const checkedTools = totalTools - neverChecked; + const coveragePercent = + totalTools > 0 ? ((checkedTools / totalTools) * 100).toFixed(2) : '0.00'; + + // Calculate health rates + const importHealthRate = + totalTools > 0 ? ((importHealthy / totalTools) * 100).toFixed(2) : '0.00'; + const executionHealthRate = + totalTools > 0 ? ((executionHealthy / totalTools) * 100).toFixed(2) : '0.00'; + + // Format broken tools + const formattedBrokenTools = brokenTools.map((tool) => ({ + id: tool.id, + packageName: tool.package.npmPackageName, + toolName: tool.name, + importHealth: tool.importHealth, + executionHealth: tool.executionHealth, + error: tool.healthCheckError, + lastChecked: tool.lastHealthCheck, + })); + + // Format recent checks + const formattedRecentChecks = recentChecks.map((check) => ({ + id: check.id, + packageName: check.tool.package.npmPackageName, + toolName: check.tool.name, + checkType: check.checkType, + triggerSource: check.triggerSource, + importStatus: check.importStatus, + executionStatus: check.executionStatus, + overallStatus: check.overallStatus, + importTimeMs: check.importTimeMs, + executionTimeMs: check.executionTimeMs, + timestamp: check.createdAt, + })); + + // Format daily trends + const formattedTrends = dailyTrends.map((day) => ({ + date: day.date, + total: Number(day.total), + healthy: Number(day.healthy), + broken: Number(day.broken), + healthRate: + Number(day.total) > 0 + ? ((Number(day.healthy) / Number(day.total)) * 100).toFixed(2) + : '0.00', + })); + + const processingTime = Date.now() - startTime; + + return NextResponse.json( + { + success: true, + meta: { + version: '1.0.0', + timestamp: now.toISOString(), + processingTimeMs: processingTime, + }, + data: { + // Current status + currentStatus: { + totalTools, + import: { + healthy: importHealthy, + broken: importBroken, + unknown: importUnknown, + healthRate: `${importHealthRate}%`, + }, + execution: { + healthy: executionHealthy, + broken: executionBroken, + unknown: executionUnknown, + healthRate: `${executionHealthRate}%`, + }, + }, + + // Coverage metrics + coverage: { + checkedTools, + neverChecked, + coveragePercent: `${coveragePercent}%`, + }, + + // Check history + checkHistory: { + totalChecks, + last24h: checksLast24h, + last7d: checksLast7d, + byType: { + import: importChecks, + execution: executionChecks, + full: fullChecks, + }, + }, + + // Timing statistics + timing: { + import: { + avgMs: checkTimingStats._avg.importTimeMs + ? Math.round(checkTimingStats._avg.importTimeMs) + : null, + minMs: checkTimingStats._min.importTimeMs, + maxMs: checkTimingStats._max.importTimeMs, + }, + execution: { + avgMs: checkTimingStats._avg.executionTimeMs + ? Math.round(checkTimingStats._avg.executionTimeMs) + : null, + minMs: checkTimingStats._min.executionTimeMs, + maxMs: checkTimingStats._max.executionTimeMs, + }, + }, + + // Daily trends + dailyTrends: formattedTrends, + + // Recent checks + recentChecks: formattedRecentChecks, + + // Broken tools + brokenTools: { + count: brokenTools.length, + tools: formattedBrokenTools, + }, + }, + }, + { + headers: { + 'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120', + 'X-Processing-Time': `${processingTime}ms`, + }, + } + ); + } catch (error) { + console.error('Error fetching health stats:', error); + + return NextResponse.json( + { + success: false, + error: { + code: 'HEALTH_STATS_ERROR', + message: 'Failed to fetch health statistics', + details: error instanceof Error ? error.message : 'Unknown error', + }, + meta: { + version: '1.0.0', + timestamp: new Date().toISOString(), + }, + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/stats/route.ts b/apps/web/src/app/api/stats/route.ts index e2dccc5..4280443 100644 --- a/apps/web/src/app/api/stats/route.ts +++ b/apps/web/src/app/api/stats/route.ts @@ -1,78 +1,394 @@ import { prisma } from '@tpmjs/db'; -import { NextResponse } from 'next/server'; +import { type NextRequest, NextResponse } from 'next/server'; +import { checkRateLimit } from '~/lib/rate-limit'; export const runtime = 'nodejs'; export const dynamic = 'force-dynamic'; +export const maxDuration = 30; /** * GET /api/stats - * Get aggregated statistics about tools in the registry + * Comprehensive statistics about the TPMJS registry * - * Returns: - * - totalTools: Total number of tools - * - officialTools: Number of official tools (with tpmjs-tool keyword) - * - categories: Breakdown by category with counts - * - recentTools: Count of tools added in last 7 days - * - totalDownloads: Sum of all npm downloads + * Returns complete developer-focused metrics including: + * - Registry totals (tools, packages, downloads) + * - Health status distribution + * - Quality score distribution + * - Category breakdown + * - Tier breakdown (minimal vs rich) + * - Recent activity + * - Execution statistics + * - Token usage statistics + * - Sync operation status */ -export async function GET() { +export async function GET(request: NextRequest) { + const startTime = Date.now(); + + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + try { - // Run all aggregations in parallel - const [totalTools, officialTools, categoryStats, recentCount, downloadSum] = await Promise.all([ - // Total tools count + // Time boundaries + const now = new Date(); + const last24h = new Date(now.getTime() - 24 * 60 * 60 * 1000); + const last7d = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000); + const last30d = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000); + + // Run all aggregations in parallel for performance + const [ + // Tool counts + totalTools, + officialToolCount, + toolsWithSchema, + + // Health status counts + healthyImportCount, + brokenImportCount, + unknownImportCount, + healthyExecutionCount, + brokenExecutionCount, + unknownExecutionCount, + + // Package data for aggregations + packages, + + // Recent activity + toolsLast24h, + toolsLast7d, + toolsLast30d, + packagesLast7d, + + // Simulation statistics + totalSimulations, + successfulSimulations, + failedSimulations, + simulationsLast24h, + simulationsLast7d, + + // Execution time stats (successful simulations only) + executionTimeStats, + + // Token usage aggregates + tokenUsageStats, + + // Recent sync logs + recentSyncLogs, + + // Sync checkpoints + syncCheckpoints, + + // Health check history + healthChecksLast24h, + healthChecksLast7d, + + // Quality score distribution + qualityScoreDistribution, + ] = await Promise.all([ + // Total tools prisma.tool.count(), - // Official tools count + // Official tools prisma.tool.count({ - where: { isOfficial: true }, + where: { package: { isOfficial: true } }, }), - // Group by category - prisma.tool.groupBy({ - by: ['category'], - _count: { - id: true, - }, - orderBy: { - _count: { - id: 'desc', - }, - }, - }), - - // Recent tools (last 7 days) + // Tools with extracted schema prisma.tool.count({ - where: { - createdAt: { - gte: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000), - }, - }, + where: { schemaSource: 'extracted' }, }), - // Sum of all downloads - prisma.tool.aggregate({ - _sum: { + // Health status distribution - Import + prisma.tool.count({ where: { importHealth: 'HEALTHY' } }), + prisma.tool.count({ where: { importHealth: 'BROKEN' } }), + prisma.tool.count({ where: { importHealth: 'UNKNOWN' } }), + + // Health status distribution - Execution + prisma.tool.count({ where: { executionHealth: 'HEALTHY' } }), + prisma.tool.count({ where: { executionHealth: 'BROKEN' } }), + prisma.tool.count({ where: { executionHealth: 'UNKNOWN' } }), + + // Package data for category/tier/download aggregations + prisma.package.findMany({ + select: { + category: true, + tier: true, npmDownloadsLastMonth: true, + githubStars: true, + isOfficial: true, + _count: { select: { tools: true } }, }, }), + + // Recent tools + prisma.tool.count({ where: { createdAt: { gte: last24h } } }), + prisma.tool.count({ where: { createdAt: { gte: last7d } } }), + prisma.tool.count({ where: { createdAt: { gte: last30d } } }), + prisma.package.count({ where: { createdAt: { gte: last7d } } }), + + // Simulation counts + prisma.simulation.count(), + prisma.simulation.count({ where: { status: 'success' } }), + prisma.simulation.count({ where: { status: { in: ['error', 'timeout'] } } }), + prisma.simulation.count({ where: { createdAt: { gte: last24h } } }), + prisma.simulation.count({ where: { createdAt: { gte: last7d } } }), + + // Execution time statistics (only for successful simulations with timing data) + prisma.simulation.aggregate({ + where: { + status: 'success', + executionTimeMs: { not: null }, + }, + _avg: { executionTimeMs: true }, + _min: { executionTimeMs: true }, + _max: { executionTimeMs: true }, + }), + + // Token usage aggregates + prisma.tokenUsage.aggregate({ + _sum: { + inputTokens: true, + outputTokens: true, + totalTokens: true, + estimatedCost: true, + }, + _avg: { + totalTokens: true, + estimatedCost: true, + }, + _count: true, + }), + + // Recent sync logs (last 10) + prisma.syncLog.findMany({ + orderBy: { createdAt: 'desc' }, + take: 10, + select: { + source: true, + status: true, + processed: true, + skipped: true, + errors: true, + createdAt: true, + metadata: true, + }, + }), + + // Sync checkpoints + prisma.syncCheckpoint.findMany({ + select: { + source: true, + checkpoint: true, + updatedAt: true, + }, + }), + + // Health checks last 24h + prisma.healthCheck.count({ where: { createdAt: { gte: last24h } } }), + prisma.healthCheck.count({ where: { createdAt: { gte: last7d } } }), + + // Quality score distribution (buckets) + prisma.$queryRaw<{ bucket: string; count: bigint }[]>` + SELECT + CASE + WHEN quality_score IS NULL THEN 'unscored' + WHEN quality_score < 0.3 THEN 'low' + WHEN quality_score < 0.5 THEN 'medium-low' + WHEN quality_score < 0.7 THEN 'medium' + WHEN quality_score < 0.9 THEN 'high' + ELSE 'excellent' + END as bucket, + COUNT(*) as count + FROM tools + GROUP BY + CASE + WHEN quality_score IS NULL THEN 'unscored' + WHEN quality_score < 0.3 THEN 'low' + WHEN quality_score < 0.5 THEN 'medium-low' + WHEN quality_score < 0.7 THEN 'medium' + WHEN quality_score < 0.9 THEN 'high' + ELSE 'excellent' + END + ORDER BY + MIN(CASE + WHEN quality_score IS NULL THEN 0 + WHEN quality_score < 0.3 THEN 1 + WHEN quality_score < 0.5 THEN 2 + WHEN quality_score < 0.7 THEN 3 + WHEN quality_score < 0.9 THEN 4 + ELSE 5 + END) + `, ]); - // Format category stats - const categories = categoryStats.reduce<Record<string, number>>((acc, stat) => { - if (stat.category) { - acc[stat.category] = stat._count.id; - } - return acc; - }, {}); + // Aggregate package data + const categories: Record<string, number> = {}; + const tiers = { minimal: 0, rich: 0 }; + let totalDownloads = 0; + let totalGithubStars = 0; + let totalPackages = 0; + let officialPackages = 0; - return NextResponse.json({ + for (const pkg of packages) { + totalPackages++; + + // Category breakdown (by tool count) + if (pkg.category) { + categories[pkg.category] = (categories[pkg.category] || 0) + pkg._count.tools; + } + + // Tier breakdown (by package count) + if (pkg.tier === 'minimal') { + tiers.minimal++; + } else if (pkg.tier === 'rich') { + tiers.rich++; + } + + // Download totals + totalDownloads += pkg.npmDownloadsLastMonth || 0; + totalGithubStars += pkg.githubStars || 0; + + if (pkg.isOfficial) { + officialPackages++; + } + } + + // Format quality score distribution + const qualityDistribution: Record<string, number> = {}; + for (const row of qualityScoreDistribution) { + qualityDistribution[row.bucket] = Number(row.count); + } + + // Calculate execution success rate + const executionSuccessRate = + totalSimulations > 0 ? ((successfulSimulations / totalSimulations) * 100).toFixed(2) : '0.00'; + + // Format sync checkpoint data + const syncStatus: Record<string, unknown> = {}; + for (const checkpoint of syncCheckpoints) { + syncStatus[checkpoint.source] = { + lastRun: checkpoint.updatedAt, + ...(checkpoint.checkpoint as Record<string, unknown>), + }; + } + + // Build response + const processingTime = Date.now() - startTime; + + const response = { success: true, + meta: { + version: '2.0.0', + timestamp: now.toISOString(), + processingTimeMs: processingTime, + }, data: { - totalTools, - officialTools, + // Overview + overview: { + totalTools, + totalPackages, + officialTools: officialToolCount, + officialPackages, + toolsWithExtractedSchema: toolsWithSchema, + totalNpmDownloads: totalDownloads, + totalGithubStars, + }, + + // Health status + health: { + import: { + healthy: healthyImportCount, + broken: brokenImportCount, + unknown: unknownImportCount, + }, + execution: { + healthy: healthyExecutionCount, + broken: brokenExecutionCount, + unknown: unknownExecutionCount, + }, + healthChecksLast24h, + healthChecksLast7d, + }, + + // Quality distribution + quality: { + distribution: qualityDistribution, + }, + + // Category breakdown categories, - recentTools: recentCount, - totalDownloads: downloadSum._sum.npmDownloadsLastMonth || 0, + + // Tier breakdown + tiers, + + // Recent activity + recentActivity: { + toolsAddedLast24h: toolsLast24h, + toolsAddedLast7d: toolsLast7d, + toolsAddedLast30d: toolsLast30d, + packagesAddedLast7d: packagesLast7d, + }, + + // Execution statistics + executions: { + total: totalSimulations, + successful: successfulSimulations, + failed: failedSimulations, + successRate: `${executionSuccessRate}%`, + last24h: simulationsLast24h, + last7d: simulationsLast7d, + timing: { + avgMs: executionTimeStats._avg.executionTimeMs + ? Math.round(executionTimeStats._avg.executionTimeMs) + : null, + minMs: executionTimeStats._min.executionTimeMs, + maxMs: executionTimeStats._max.executionTimeMs, + }, + }, + + // Token usage + tokens: { + totalRecorded: tokenUsageStats._count, + totals: { + inputTokens: tokenUsageStats._sum.inputTokens || 0, + outputTokens: tokenUsageStats._sum.outputTokens || 0, + totalTokens: tokenUsageStats._sum.totalTokens || 0, + estimatedCostUsd: tokenUsageStats._sum.estimatedCost + ? Number(tokenUsageStats._sum.estimatedCost).toFixed(4) + : '0.0000', + }, + averages: { + tokensPerExecution: tokenUsageStats._avg.totalTokens + ? Math.round(tokenUsageStats._avg.totalTokens) + : null, + costPerExecutionUsd: tokenUsageStats._avg.estimatedCost + ? Number(tokenUsageStats._avg.estimatedCost).toFixed(6) + : null, + }, + }, + + // Sync status + sync: { + status: syncStatus, + recentOperations: recentSyncLogs.map((log) => ({ + source: log.source, + status: log.status, + processed: log.processed, + skipped: log.skipped, + errors: log.errors, + timestamp: log.createdAt, + durationMs: (log.metadata as Record<string, unknown>)?.durationMs ?? null, + })), + }, + }, + }; + + return NextResponse.json(response, { + headers: { + 'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120', + 'X-Processing-Time': `${processingTime}ms`, }, }); } catch (error) { @@ -81,8 +397,15 @@ export async function GET() { return NextResponse.json( { success: false, - error: 'Failed to fetch stats', - message: error instanceof Error ? error.message : 'Unknown error', + error: { + code: 'STATS_ERROR', + message: 'Failed to fetch registry statistics', + details: error instanceof Error ? error.message : 'Unknown error', + }, + meta: { + version: '2.0.0', + timestamp: new Date().toISOString(), + }, }, { status: 500 } ); diff --git a/apps/web/src/app/api/stats/sync/route.ts b/apps/web/src/app/api/stats/sync/route.ts new file mode 100644 index 0000000..15c6f98 --- /dev/null +++ b/apps/web/src/app/api/stats/sync/route.ts @@ -0,0 +1,266 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { checkRateLimit } from '~/lib/rate-limit'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; +export const maxDuration = 30; + +/** + * GET /api/stats/sync + * Sync operation statistics and status + * + * Returns: + * - Current checkpoint status for each sync source + * - Recent sync operations with success/failure rates + * - Sync timing statistics + * - Error analysis for failed syncs + * - NPM changes feed pending count + */ +export async function GET(request: NextRequest) { + const startTime = Date.now(); + + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + + try { + const now = new Date(); + const last24h = new Date(now.getTime() - 24 * 60 * 60 * 1000); + const last7d = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000); + + const [ + // Checkpoints + checkpoints, + + // Recent logs by source + changesFeedLogs, + keywordLogs, + metricsLogs, + + // Total counts + totalSyncs, + successfulSyncs, + failedSyncs, + partialSyncs, + + // Counts by time period + syncsLast24h, + syncsLast7d, + + // Aggregate stats + aggregateStats, + + // Sync logs for error analysis + errorLogs, + ] = await Promise.all([ + // Get all checkpoints + prisma.syncCheckpoint.findMany(), + + // Recent changes-feed logs + prisma.syncLog.findMany({ + where: { source: 'changes-feed' }, + orderBy: { createdAt: 'desc' }, + take: 20, + }), + + // Recent keyword search logs + prisma.syncLog.findMany({ + where: { source: 'keyword-search' }, + orderBy: { createdAt: 'desc' }, + take: 20, + }), + + // Recent metrics logs + prisma.syncLog.findMany({ + where: { source: 'metrics' }, + orderBy: { createdAt: 'desc' }, + take: 20, + }), + + // Total sync counts + prisma.syncLog.count(), + prisma.syncLog.count({ where: { status: 'success' } }), + prisma.syncLog.count({ where: { status: 'error' } }), + prisma.syncLog.count({ where: { status: 'partial' } }), + + // Time-based counts + prisma.syncLog.count({ where: { createdAt: { gte: last24h } } }), + prisma.syncLog.count({ where: { createdAt: { gte: last7d } } }), + + // Aggregate processing stats + prisma.syncLog.aggregate({ + _sum: { + processed: true, + skipped: true, + errors: true, + }, + _avg: { + processed: true, + }, + }), + + // Recent error logs for analysis + prisma.syncLog.findMany({ + where: { + OR: [{ status: 'error' }, { status: 'partial' }], + createdAt: { gte: last7d }, + }, + orderBy: { createdAt: 'desc' }, + take: 20, + select: { + source: true, + status: true, + message: true, + errors: true, + createdAt: true, + metadata: true, + }, + }), + ]); + + // Format checkpoints + const checkpointStatus: Record<string, unknown> = {}; + for (const checkpoint of checkpoints) { + const data = checkpoint.checkpoint as Record<string, unknown>; + checkpointStatus[checkpoint.source] = { + lastUpdated: checkpoint.updatedAt, + ...data, + }; + } + + // Helper to format sync logs + const formatSyncLogs = (logs: typeof changesFeedLogs) => + logs.map((log) => ({ + status: log.status, + processed: log.processed, + skipped: log.skipped, + errors: log.errors, + message: log.message, + timestamp: log.createdAt, + durationMs: (log.metadata as Record<string, unknown>)?.durationMs ?? null, + metadata: log.metadata, + })); + + // Calculate success rate + const completedSyncs = successfulSyncs + failedSyncs + partialSyncs; + const successRate = + completedSyncs > 0 ? ((successfulSyncs / completedSyncs) * 100).toFixed(2) : '0.00'; + + // Calculate average duration from recent logs + const allRecentLogs = [...changesFeedLogs, ...keywordLogs, ...metricsLogs]; + const durations = allRecentLogs + .map((log) => (log.metadata as Record<string, unknown>)?.durationMs) + .filter((d): d is number => typeof d === 'number'); + const avgDuration = + durations.length > 0 + ? Math.round(durations.reduce((a, b) => a + b, 0) / durations.length) + : null; + + // Format error logs + const formattedErrors = errorLogs.map((log) => ({ + source: log.source, + status: log.status, + message: log.message, + errorCount: log.errors, + timestamp: log.createdAt, + })); + + // Sync frequency (operations per day last 7 days) + const syncsPerDay = syncsLast7d > 0 ? (syncsLast7d / 7).toFixed(2) : '0.00'; + + const processingTime = Date.now() - startTime; + + return NextResponse.json( + { + success: true, + meta: { + version: '1.0.0', + timestamp: now.toISOString(), + processingTimeMs: processingTime, + }, + data: { + // Current status + checkpoints: checkpointStatus, + + // Overview + overview: { + totalOperations: totalSyncs, + successRate: `${successRate}%`, + byStatus: { + success: successfulSyncs, + error: failedSyncs, + partial: partialSyncs, + }, + last24h: syncsLast24h, + last7d: syncsLast7d, + avgOperationsPerDay: syncsPerDay, + }, + + // Processing statistics + processing: { + totalProcessed: aggregateStats._sum.processed || 0, + totalSkipped: aggregateStats._sum.skipped || 0, + totalErrors: aggregateStats._sum.errors || 0, + avgProcessedPerOperation: aggregateStats._avg.processed + ? Math.round(aggregateStats._avg.processed) + : null, + }, + + // Timing + timing: { + avgDurationMs: avgDuration, + }, + + // By source + bySource: { + 'changes-feed': { + recentOperations: formatSyncLogs(changesFeedLogs), + lastRun: changesFeedLogs[0]?.createdAt ?? null, + checkpoint: checkpointStatus['changes-feed'] ?? null, + }, + 'keyword-search': { + recentOperations: formatSyncLogs(keywordLogs), + lastRun: keywordLogs[0]?.createdAt ?? null, + checkpoint: checkpointStatus['keyword-search'] ?? null, + }, + metrics: { + recentOperations: formatSyncLogs(metricsLogs), + lastRun: metricsLogs[0]?.createdAt ?? null, + checkpoint: checkpointStatus.metrics ?? null, + }, + }, + + // Recent errors + recentErrors: formattedErrors, + }, + }, + { + headers: { + 'Cache-Control': 'public, s-maxage=60, stale-while-revalidate=120', + 'X-Processing-Time': `${processingTime}ms`, + }, + } + ); + } catch (error) { + console.error('Error fetching sync stats:', error); + + return NextResponse.json( + { + success: false, + error: { + code: 'SYNC_STATS_ERROR', + message: 'Failed to fetch sync statistics', + details: error instanceof Error ? error.message : 'Unknown error', + }, + meta: { + version: '1.0.0', + timestamp: new Date().toISOString(), + }, + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/stats/tools/route.ts b/apps/web/src/app/api/stats/tools/route.ts new file mode 100644 index 0000000..1110aa2 --- /dev/null +++ b/apps/web/src/app/api/stats/tools/route.ts @@ -0,0 +1,238 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { checkRateLimit } from '~/lib/rate-limit'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; +export const maxDuration = 30; + +/** + * GET /api/stats/tools + * Top tools by various metrics + * + * Query params: + * - sortBy: 'quality' | 'downloads' | 'executions' | 'recent' (default: 'quality') + * - limit: number (default: 20, max: 100) + * - category: filter by category + * - health: 'healthy' | 'broken' | 'unknown' - filter by health status + * + * Returns: + * - Top tools by quality score + * - Top tools by npm downloads + * - Most executed tools + * - Recently added tools + * - Tool category distribution + */ +export async function GET(request: NextRequest) { + const startTime = Date.now(); + + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + + try { + const { searchParams } = new URL(request.url); + const sortBy = searchParams.get('sortBy') || 'quality'; + const limit = Math.min(Number.parseInt(searchParams.get('limit') || '20', 10), 100); + const category = searchParams.get('category'); + const healthFilter = searchParams.get('health'); + + const now = new Date(); + + // Build where clause + const whereClause: Record<string, unknown> = {}; + if (category) { + whereClause.package = { category }; + } + if (healthFilter === 'healthy') { + whereClause.importHealth = 'HEALTHY'; + whereClause.executionHealth = 'HEALTHY'; + } else if (healthFilter === 'broken') { + whereClause.OR = [{ importHealth: 'BROKEN' }, { executionHealth: 'BROKEN' }]; + } else if (healthFilter === 'unknown') { + whereClause.OR = [{ importHealth: 'UNKNOWN' }, { executionHealth: 'UNKNOWN' }]; + } + + // Determine sort order + let orderBy: Record<string, unknown>[]; + switch (sortBy) { + case 'downloads': + orderBy = [{ package: { npmDownloadsLastMonth: 'desc' } }, { qualityScore: 'desc' }]; + break; + case 'recent': + orderBy = [{ createdAt: 'desc' }]; + break; + case 'quality': + default: + orderBy = [{ qualityScore: 'desc' }, { package: { npmDownloadsLastMonth: 'desc' } }]; + break; + } + + // For execution sorting, we need a different query + let tools; + let executionCounts: Map<string, number> = new Map(); + + if (sortBy === 'executions') { + // Get execution counts first + const execGroups = await prisma.simulation.groupBy({ + by: ['toolId'], + _count: { id: true }, + orderBy: { _count: { id: 'desc' } }, + take: limit * 2, // Get more to account for filtering + }); + + const toolIds = execGroups.map((g) => g.toolId); + executionCounts = new Map(execGroups.map((g) => [g.toolId, g._count.id])); + + tools = await prisma.tool.findMany({ + where: { + id: { in: toolIds }, + ...whereClause, + }, + take: limit, + include: { + package: { + select: { + npmPackageName: true, + npmVersion: true, + npmDownloadsLastMonth: true, + githubStars: true, + category: true, + tier: true, + isOfficial: true, + npmHomepage: true, + npmRepository: true, + }, + }, + }, + }); + + // Sort by execution count + tools.sort((a, b) => (executionCounts.get(b.id) || 0) - (executionCounts.get(a.id) || 0)); + } else { + tools = await prisma.tool.findMany({ + where: whereClause, + orderBy, + take: limit, + include: { + package: { + select: { + npmPackageName: true, + npmVersion: true, + npmDownloadsLastMonth: true, + githubStars: true, + category: true, + tier: true, + isOfficial: true, + npmHomepage: true, + npmRepository: true, + }, + }, + _count: { + select: { simulations: true }, + }, + }, + }); + } + + // Get execution counts for non-execution sorted queries + if (sortBy !== 'executions') { + const toolIds = tools.map((t) => t.id); + const execGroups = await prisma.simulation.groupBy({ + by: ['toolId'], + where: { toolId: { in: toolIds } }, + _count: { id: true }, + }); + executionCounts = new Map(execGroups.map((g) => [g.toolId, g._count.id])); + } + + // Get category distribution + const categoryDistribution = await prisma.package.groupBy({ + by: ['category'], + _count: true, + orderBy: { _count: { category: 'desc' } }, + }); + + // Format tools response + const formattedTools = tools.map((tool, index) => ({ + rank: index + 1, + id: tool.id, + name: tool.name, + description: tool.description, + qualityScore: tool.qualityScore ? Number(tool.qualityScore) : null, + importHealth: tool.importHealth, + executionHealth: tool.executionHealth, + lastHealthCheck: tool.lastHealthCheck, + hasExtractedSchema: tool.schemaSource === 'extracted', + package: { + name: tool.package.npmPackageName, + version: tool.package.npmVersion, + category: tool.package.category, + tier: tool.package.tier, + isOfficial: tool.package.isOfficial, + npmDownloadsLastMonth: tool.package.npmDownloadsLastMonth, + githubStars: tool.package.githubStars, + homepage: tool.package.npmHomepage, + repository: tool.package.npmRepository, + }, + executionCount: executionCounts.get(tool.id) || 0, + createdAt: tool.createdAt, + })); + + // Format category distribution + const formattedCategories = categoryDistribution.map((cat) => ({ + category: cat.category, + packageCount: cat._count, + })); + + const processingTime = Date.now() - startTime; + + return NextResponse.json( + { + success: true, + meta: { + version: '1.0.0', + timestamp: now.toISOString(), + processingTimeMs: processingTime, + }, + data: { + query: { + sortBy, + limit, + category: category || null, + healthFilter: healthFilter || null, + }, + resultCount: formattedTools.length, + tools: formattedTools, + categoryDistribution: formattedCategories, + }, + }, + { + headers: { + 'Cache-Control': 'public, s-maxage=120, stale-while-revalidate=300', + 'X-Processing-Time': `${processingTime}ms`, + }, + } + ); + } catch (error) { + console.error('Error fetching tool stats:', error); + + return NextResponse.json( + { + success: false, + error: { + code: 'TOOL_STATS_ERROR', + message: 'Failed to fetch tool statistics', + details: error instanceof Error ? error.message : 'Unknown error', + }, + meta: { + version: '1.0.0', + timestamp: new Date().toISOString(), + }, + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/sync/changes/route.ts b/apps/web/src/app/api/sync/changes/route.ts index 77b04c0..89ac2e5 100644 --- a/apps/web/src/app/api/sync/changes/route.ts +++ b/apps/web/src/app/api/sync/changes/route.ts @@ -1,8 +1,15 @@ import { prisma } from '@tpmjs/db'; -import { fetchChanges, fetchLatestPackageVersion } from '@tpmjs/npm-client'; +import { fetchChanges, fetchLatestPackageWithMetadata } from '@tpmjs/npm-client'; import { validateTpmjsField } from '@tpmjs/types/tpmjs'; +import type { TpmjsToolDefinition } from '@tpmjs/types/tpmjs'; import { type NextRequest, NextResponse } from 'next/server'; import { env } from '~/env'; +import { performHealthCheck } from '~/lib/health-check/health-check-service'; +import { + convertJsonSchemaToParameters, + extractToolSchema, + listToolExports, +} from '~/lib/schema-extraction'; export const runtime = 'nodejs'; export const dynamic = 'force-dynamic'; @@ -41,18 +48,18 @@ export async function POST(request: NextRequest) { ? String((checkpoint.checkpoint as { lastSeq?: string })?.lastSeq || '0') : '0'; - // Fetch changes from NPM (limit to 100 per run to avoid timeouts) + // Fetch changes from NPM (limit to 30 per run to allow time for schema extraction) const changesResult = await fetchChanges({ since: lastSeq, - limit: 100, + limit: 30, includeDocs: false, }); // Process each change for (const change of changesResult.results) { try { - // Fetch full package metadata - const pkg = await fetchLatestPackageVersion(change.id); + // Fetch full package metadata with README + const pkg = await fetchLatestPackageWithMetadata(change.id); // Skip if package not found if (!pkg) { @@ -66,70 +73,202 @@ export async function POST(request: NextRequest) { continue; } - // Validate tpmjs field + // Validate tpmjs field (supports both new multi-tool and legacy formats) const validation = validateTpmjsField(pkg.tpmjs); - if (!validation.valid || !validation.data) { + if (!validation.valid || !validation.packageData || !validation.tools) { skipped++; continue; } + // Log auto-migration from legacy format + if (validation.wasLegacyFormat) { + console.log(`Auto-migrated legacy package: ${pkg.name}`); + } + // Extract repository URL and GitHub stars const githubStars: number | null = null; - // Cast to TpmjsRich to access optional fields (they'll be undefined if not present) - const tpmjsData = validation.data as { - category: string; - description: string; - example: string; - parameters?: unknown; - returns?: unknown; - authentication?: unknown; - pricing?: unknown; - frameworks?: string[]; - links?: unknown; - tags?: string[]; - status?: string; - aiAgent?: unknown; - }; - - // Prepare data for upsert - const toolData = { - npmVersion: pkg.version, - npmPublishedAt: pkg.publishedAt ? new Date(pkg.publishedAt) : new Date(), - npmDescription: pkg.description ?? undefined, - npmRepository: pkg.repository ?? undefined, - npmHomepage: pkg.homepage ?? undefined, - npmLicense: pkg.license ?? undefined, - category: tpmjsData.category, - description: tpmjsData.description, - example: tpmjsData.example, - parameters: tpmjsData.parameters ?? undefined, - returns: tpmjsData.returns ?? undefined, - authentication: tpmjsData.authentication ?? undefined, - pricing: tpmjsData.pricing ?? undefined, - frameworks: tpmjsData.frameworks || [], - links: tpmjsData.links ?? undefined, - tags: tpmjsData.tags || [], - status: tpmjsData.status ?? undefined, - aiAgent: tpmjsData.aiAgent ?? undefined, - isOfficial: pkg.keywords?.includes('tpmjs-tool') || false, - tier: validation.tier || 'minimal', - }; - - // Upsert tool to database - await prisma.tool.upsert({ + // Upsert Package record + const packageRecord = await prisma.package.upsert({ where: { npmPackageName: pkg.name }, create: { npmPackageName: pkg.name, - ...toolData, + npmVersion: pkg.version, + npmPublishedAt: pkg.publishedAt ? new Date(pkg.publishedAt) : new Date(), + npmDescription: pkg.description ?? undefined, + npmRepository: pkg.repository ?? undefined, + npmHomepage: pkg.homepage ?? undefined, + npmLicense: pkg.license ?? undefined, + npmKeywords: pkg.topLevelKeywords || pkg.keywords || [], + npmReadme: pkg.readme ?? undefined, + npmAuthor: pkg.author ?? undefined, + npmMaintainers: pkg.maintainers ?? undefined, + category: validation.packageData.category, + env: validation.packageData.env ?? undefined, + frameworks: validation.packageData.frameworks || [], + tier: validation.tier || 'minimal', discoveryMethod: 'changes-feed', + isOfficial: pkg.keywords?.includes('tpmjs') || false, npmDownloadsLastMonth: 0, // Will be updated by metrics sync githubStars: githubStars, - qualityScore: null, // Will be calculated by metrics sync }, - update: toolData, + update: { + npmVersion: pkg.version, + npmPublishedAt: pkg.publishedAt ? new Date(pkg.publishedAt) : new Date(), + npmDescription: pkg.description ?? undefined, + npmRepository: pkg.repository ?? undefined, + npmHomepage: pkg.homepage ?? undefined, + npmLicense: pkg.license ?? undefined, + npmKeywords: pkg.topLevelKeywords || pkg.keywords || [], + npmReadme: pkg.readme ?? undefined, + npmAuthor: pkg.author ?? undefined, + npmMaintainers: pkg.maintainers ?? undefined, + category: validation.packageData.category, + env: validation.packageData.env ?? undefined, + frameworks: validation.packageData.frameworks || [], + tier: validation.tier || 'minimal', + isOfficial: pkg.keywords?.includes('tpmjs') || false, + }, }); + // Get existing tools for this package + const existingTools = await prisma.tool.findMany({ + where: { packageId: packageRecord.id }, + }); + + // Determine the tools to process + let toolsToProcess: TpmjsToolDefinition[] = validation.tools || []; + let toolDiscoverySource: 'auto' | 'manual' = 'manual'; + + // If tools need auto-discovery, call the executor to list exports + if (validation.needsAutoDiscovery) { + console.log(`Auto-discovering tools for ${pkg.name}...`); + const exportsResult = await listToolExports(pkg.name, pkg.version, null); + + if (exportsResult.success) { + // Convert discovered tools to TpmjsToolDefinition format + toolsToProcess = exportsResult.tools + .filter((t) => t.isValidTool) + .map((t) => ({ + name: t.name, + description: t.description, + parameters: undefined, + returns: undefined, + aiAgent: undefined, + })); + toolDiscoverySource = 'auto'; + console.log( + `Auto-discovered ${toolsToProcess.length} tools for ${pkg.name}: ${toolsToProcess.map((t) => t.name).join(', ')}` + ); + } else { + console.log(`Failed to auto-discover tools for ${pkg.name}: ${exportsResult.error}`); + // Skip this package if we can't discover tools + skipped++; + continue; + } + } + + // Upsert each tool + for (const toolDef of toolsToProcess) { + // Get tool name from validated schema + const toolName = toolDef.name; + if (!toolName) { + console.warn(`Skipping tool without name in ${pkg.name}`); + continue; + } + + const upsertedTool = await prisma.tool.upsert({ + where: { + packageId_name: { + packageId: packageRecord.id, + name: toolName, + }, + }, + create: { + packageId: packageRecord.id, + name: toolName, + description: toolDef.description || 'No description provided', + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + parameters: toolDef.parameters ? (toolDef.parameters as any) : undefined, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + returns: toolDef.returns ? (toolDef.returns as any) : undefined, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + aiAgent: toolDef.aiAgent ? (toolDef.aiAgent as any) : undefined, + qualityScore: null, // Will be calculated by metrics sync + // Schema will be extracted below + schemaSource: toolDef.parameters ? 'author' : null, + toolDiscoverySource, + }, + update: { + description: toolDef.description || undefined, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + parameters: toolDef.parameters ? (toolDef.parameters as any) : undefined, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + returns: toolDef.returns ? (toolDef.returns as any) : undefined, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + aiAgent: toolDef.aiAgent ? (toolDef.aiAgent as any) : undefined, + toolDiscoverySource, + }, + }); + + // Extract schema synchronously from executor + const schemaResult = await extractToolSchema(pkg.name, toolName, pkg.version, null); + + if (schemaResult.success) { + // Update tool with extracted schema (and description if not provided) + await prisma.tool.update({ + where: { id: upsertedTool.id }, + data: { + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + inputSchema: schemaResult.inputSchema as any, + // Also update parameters array for backward compatibility + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + parameters: convertJsonSchemaToParameters(schemaResult.inputSchema) as any, + schemaSource: 'extracted', + schemaExtractedAt: new Date(), + // Update description if not provided by author + ...(!toolDef.description && schemaResult.description + ? { description: schemaResult.description } + : {}), + }, + }); + console.log(`Schema extracted for ${pkg.name}/${toolName}`); + } else { + // Extraction failed - mark schema source appropriately + console.log( + `Schema extraction failed for ${pkg.name}/${toolName}: ${schemaResult.error}` + ); + await prisma.tool.update({ + where: { id: upsertedTool.id }, + data: { + schemaSource: toolDef.parameters ? 'author' : null, + }, + }); + } + + // Trigger health check (non-blocking) for execution testing + performHealthCheck(upsertedTool.id, 'sync').catch((err) => { + console.error( + `Health check failed for ${pkg.name}/${toolName} (${upsertedTool.id}):`, + err + ); + }); + } + + // Delete orphaned tools (tools removed from package.json) + const orphanedTools = existingTools.filter( + (existingTool) => !toolsToProcess.some((toolDef) => toolDef.name === existingTool.name) + ); + + if (orphanedTools.length > 0) { + await prisma.tool.deleteMany({ + where: { + id: { in: orphanedTools.map((t) => t.id) }, + }, + }); + console.log(`Deleted ${orphanedTools.length} orphaned tools from package: ${pkg.name}`); + } + processed++; } catch (error) { errors++; diff --git a/apps/web/src/app/api/sync/health-check/route.ts b/apps/web/src/app/api/sync/health-check/route.ts new file mode 100644 index 0000000..7bc86f6 --- /dev/null +++ b/apps/web/src/app/api/sync/health-check/route.ts @@ -0,0 +1,89 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { env } from '~/env'; +import { performBatchHealthCheck } from '~/lib/health-check/health-check-service'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; +export const maxDuration = 300; // 5 minutes + +/** + * POST /api/sync/health-check + * Daily health check for all tools + * + * This endpoint is called by Vercel Cron (daily at 2am UTC) + * Requires Authorization: Bearer <CRON_SECRET> + */ +export async function POST(request: NextRequest) { + // Verify cron secret + const authHeader = request.headers.get('authorization'); + const token = authHeader?.replace('Bearer ', ''); + + if (env.CRON_SECRET && token !== env.CRON_SECRET) { + return NextResponse.json({ success: false, error: 'Unauthorized' }, { status: 401 }); + } + + const startTime = Date.now(); + + try { + console.log('🏥 Daily health check cron job starting...'); + + // Get all tools + const tools = await prisma.tool.findMany({ + select: { id: true }, + }); + + console.log(`📊 Found ${tools.length} tools to check`); + + const toolIds = tools.map((t) => t.id); + + // Perform batch health checks + const result = await performBatchHealthCheck(toolIds, 'daily-cron', 5); + + const durationMs = Date.now() - startTime; + + // Log sync operation + await prisma.syncLog.create({ + data: { + source: 'health-check', + status: result.errors > 0 ? 'partial' : 'success', + processed: result.healthy + result.broken + result.unknown, + skipped: 0, + errors: result.errors, + message: `Checked ${result.total} tools: ${result.healthy} healthy, ${result.broken} broken, ${result.unknown} unknown`, + metadata: { + durationMs, + ...result, + }, + }, + }); + + console.log(`✅ Daily health check complete in ${durationMs}ms`); + + return NextResponse.json({ + success: true, + data: { + ...result, + durationMs, + }, + }); + } catch (error) { + console.error('❌ Health check cron failed:', error); + + const durationMs = Date.now() - startTime; + + await prisma.syncLog.create({ + data: { + source: 'health-check', + status: 'error', + processed: 0, + skipped: 0, + errors: 1, + message: error instanceof Error ? error.message : 'Unknown error', + metadata: { durationMs }, + }, + }); + + return NextResponse.json({ success: false, error: 'Health check failed' }, { status: 500 }); + } +} diff --git a/apps/web/src/app/api/sync/keyword/route.ts b/apps/web/src/app/api/sync/keyword/route.ts index 55f50a5..3f3c7a4 100644 --- a/apps/web/src/app/api/sync/keyword/route.ts +++ b/apps/web/src/app/api/sync/keyword/route.ts @@ -1,8 +1,15 @@ import { prisma } from '@tpmjs/db'; -import { fetchLatestPackageVersion, searchByKeyword } from '@tpmjs/npm-client'; +import { fetchLatestPackageWithMetadata, searchByKeyword } from '@tpmjs/npm-client'; import { validateTpmjsField } from '@tpmjs/types/tpmjs'; +import type { TpmjsToolDefinition } from '@tpmjs/types/tpmjs'; import { type NextRequest, NextResponse } from 'next/server'; import { env } from '~/env'; +import { performHealthCheck } from '~/lib/health-check/health-check-service'; +import { + convertJsonSchemaToParameters, + extractToolSchema, + listToolExports, +} from '~/lib/schema-extraction'; export const runtime = 'nodejs'; export const dynamic = 'force-dynamic'; @@ -10,7 +17,7 @@ export const maxDuration = 300; // 5 minutes max for cron jobs /** * POST /api/sync/keyword - * Sync tools by searching NPM for 'tpmjs-tool' keyword + * Sync tools by searching NPM for 'tpmjs' keyword * * This endpoint is called by Vercel Cron (every 15 minutes) * Requires Authorization: Bearer <CRON_SECRET> @@ -30,96 +37,257 @@ export async function POST(request: NextRequest) { let skipped = 0; let errors = 0; const errorMessages: string[] = []; + const skippedPackages: Array<{ name: string; author: string; reason: string }> = []; try { - // Search for packages with 'tpmjs-tool' keyword + // Search for packages with 'tpmjs' keyword const searchResults = await searchByKeyword({ - keyword: 'tpmjs-tool', + keyword: 'tpmjs', size: 250, // Get up to 250 packages per sync }); // Process each package for (const result of searchResults) { try { - // Fetch full package metadata - const pkg = await fetchLatestPackageVersion(result.package.name); + // Fetch full package metadata with README + const pkg = await fetchLatestPackageWithMetadata(result.package.name); // Skip if package not found if (!pkg) { skipped++; + skippedPackages.push({ + name: result.package.name, + author: 'unknown', + reason: 'package not found', + }); continue; } + // Extract author name + const authorName = + typeof pkg.author === 'string' + ? pkg.author + : typeof pkg.author === 'object' && pkg.author?.name + ? pkg.author.name + : 'unknown'; + // Check if package has tpmjs field if (!pkg.tpmjs) { skipped++; + skippedPackages.push({ + name: pkg.name, + author: authorName, + reason: 'missing tpmjs field', + }); continue; } - // Validate tpmjs field + // Validate tpmjs field (supports both new multi-tool and legacy formats) const validation = validateTpmjsField(pkg.tpmjs); - if (!validation.valid || !validation.data) { + if (!validation.valid || !validation.packageData || !validation.tools) { skipped++; + skippedPackages.push({ + name: pkg.name, + author: authorName, + reason: 'invalid tpmjs field', + }); continue; } + // Log auto-migration from legacy format + if (validation.wasLegacyFormat) { + console.log(`Auto-migrated legacy package: ${pkg.name}`); + } + // Extract repository URL and GitHub stars const githubStars: number | null = null; - // Cast to TpmjsRich to access optional fields (they'll be undefined if not present) - const tpmjsData = validation.data as { - category: string; - description: string; - example: string; - parameters?: unknown; - returns?: unknown; - authentication?: unknown; - pricing?: unknown; - frameworks?: string[]; - links?: unknown; - tags?: string[]; - status?: string; - aiAgent?: unknown; - }; - - // Prepare data for upsert - const toolData = { - npmVersion: pkg.version, - npmPublishedAt: pkg.publishedAt ? new Date(pkg.publishedAt) : new Date(), - npmDescription: pkg.description ?? undefined, - npmRepository: pkg.repository ?? undefined, - npmHomepage: pkg.homepage ?? undefined, - npmLicense: pkg.license ?? undefined, - category: tpmjsData.category, - description: tpmjsData.description, - example: tpmjsData.example, - parameters: tpmjsData.parameters ?? undefined, - returns: tpmjsData.returns ?? undefined, - authentication: tpmjsData.authentication ?? undefined, - pricing: tpmjsData.pricing ?? undefined, - frameworks: tpmjsData.frameworks || [], - links: tpmjsData.links ?? undefined, - tags: tpmjsData.tags || [], - status: tpmjsData.status ?? undefined, - aiAgent: tpmjsData.aiAgent ?? undefined, - isOfficial: pkg.keywords?.includes('tpmjs-tool') || false, - tier: validation.tier || 'minimal', - }; - - // Upsert tool to database - await prisma.tool.upsert({ + // Upsert Package record + const packageRecord = await prisma.package.upsert({ where: { npmPackageName: pkg.name }, create: { npmPackageName: pkg.name, - ...toolData, + npmVersion: pkg.version, + npmPublishedAt: pkg.publishedAt ? new Date(pkg.publishedAt) : new Date(), + npmDescription: pkg.description ?? undefined, + npmRepository: pkg.repository ?? undefined, + npmHomepage: pkg.homepage ?? undefined, + npmLicense: pkg.license ?? undefined, + npmKeywords: pkg.topLevelKeywords || pkg.keywords || [], + npmReadme: pkg.readme ?? undefined, + npmAuthor: pkg.author ?? undefined, + npmMaintainers: pkg.maintainers ?? undefined, + category: validation.packageData.category, + env: validation.packageData.env ?? undefined, + frameworks: validation.packageData.frameworks || [], + tier: validation.tier || 'minimal', discoveryMethod: 'keyword', + isOfficial: pkg.keywords?.includes('tpmjs') || false, npmDownloadsLastMonth: 0, // Will be updated by metrics sync githubStars: githubStars, - qualityScore: null, // Will be calculated by metrics sync }, - update: toolData, + update: { + npmVersion: pkg.version, + npmPublishedAt: pkg.publishedAt ? new Date(pkg.publishedAt) : new Date(), + npmDescription: pkg.description ?? undefined, + npmRepository: pkg.repository ?? undefined, + npmHomepage: pkg.homepage ?? undefined, + npmLicense: pkg.license ?? undefined, + npmKeywords: pkg.topLevelKeywords || pkg.keywords || [], + npmReadme: pkg.readme ?? undefined, + npmAuthor: pkg.author ?? undefined, + npmMaintainers: pkg.maintainers ?? undefined, + category: validation.packageData.category, + env: validation.packageData.env ?? undefined, + frameworks: validation.packageData.frameworks || [], + tier: validation.tier || 'minimal', + isOfficial: pkg.keywords?.includes('tpmjs') || false, + }, }); + // Get existing tools for this package + const existingTools = await prisma.tool.findMany({ + where: { packageId: packageRecord.id }, + }); + + // Determine the tools to process + let toolsToProcess: TpmjsToolDefinition[] = validation.tools || []; + let toolDiscoverySource: 'auto' | 'manual' = 'manual'; + + // If tools need auto-discovery, call the executor to list exports + if (validation.needsAutoDiscovery) { + console.log(`Auto-discovering tools for ${pkg.name}...`); + const exportsResult = await listToolExports(pkg.name, pkg.version, null); + + if (exportsResult.success) { + // Convert discovered tools to TpmjsToolDefinition format + toolsToProcess = exportsResult.tools + .filter((t) => t.isValidTool) + .map((t) => ({ + name: t.name, + description: t.description, + parameters: undefined, + returns: undefined, + aiAgent: undefined, + })); + toolDiscoverySource = 'auto'; + console.log( + `Auto-discovered ${toolsToProcess.length} tools for ${pkg.name}: ${toolsToProcess.map((t) => t.name).join(', ')}` + ); + } else { + console.log(`Failed to auto-discover tools for ${pkg.name}: ${exportsResult.error}`); + // Skip this package if we can't discover tools + skipped++; + skippedPackages.push({ + name: pkg.name, + author: authorName, + reason: `auto-discovery failed: ${exportsResult.error}`, + }); + continue; + } + } + + // Upsert each tool + for (const toolDef of toolsToProcess) { + // Get tool name from validated schema + const toolName = toolDef.name; + if (!toolName) { + console.warn(`Skipping tool without name in ${pkg.name}`); + continue; + } + + const upsertedTool = await prisma.tool.upsert({ + where: { + packageId_name: { + packageId: packageRecord.id, + name: toolName, + }, + }, + create: { + packageId: packageRecord.id, + name: toolName, + description: toolDef.description || 'No description provided', + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + parameters: toolDef.parameters ? (toolDef.parameters as any) : undefined, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + returns: toolDef.returns ? (toolDef.returns as any) : undefined, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + aiAgent: toolDef.aiAgent ? (toolDef.aiAgent as any) : undefined, + qualityScore: null, // Will be calculated by metrics sync + // Schema will be extracted below + schemaSource: toolDef.parameters ? 'author' : null, + toolDiscoverySource, + }, + update: { + description: toolDef.description || undefined, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + parameters: toolDef.parameters ? (toolDef.parameters as any) : undefined, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + returns: toolDef.returns ? (toolDef.returns as any) : undefined, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + aiAgent: toolDef.aiAgent ? (toolDef.aiAgent as any) : undefined, + toolDiscoverySource, + }, + }); + + // Extract schema synchronously from executor + const schemaResult = await extractToolSchema(pkg.name, toolName, pkg.version, null); + + if (schemaResult.success) { + // Update tool with extracted schema (and description if not provided) + await prisma.tool.update({ + where: { id: upsertedTool.id }, + data: { + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + inputSchema: schemaResult.inputSchema as any, + // Also update parameters array for backward compatibility + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + parameters: convertJsonSchemaToParameters(schemaResult.inputSchema) as any, + schemaSource: 'extracted', + schemaExtractedAt: new Date(), + // Update description if not provided by author + ...(!toolDef.description && schemaResult.description + ? { description: schemaResult.description } + : {}), + }, + }); + console.log(`Schema extracted for ${pkg.name}/${toolName}`); + } else { + // Extraction failed - mark schema source appropriately + console.log( + `Schema extraction failed for ${pkg.name}/${toolName}: ${schemaResult.error}` + ); + await prisma.tool.update({ + where: { id: upsertedTool.id }, + data: { + schemaSource: toolDef.parameters ? 'author' : null, + }, + }); + } + + // Trigger health check (non-blocking) for execution testing + performHealthCheck(upsertedTool.id, 'sync').catch((err) => { + console.error( + `Health check failed for ${pkg.name}/${toolName} (${upsertedTool.id}):`, + err + ); + }); + } + + // Delete orphaned tools (tools removed from package.json) + const orphanedTools = existingTools.filter( + (existingTool) => !toolsToProcess.some((toolDef) => toolDef.name === existingTool.name) + ); + + if (orphanedTools.length > 0) { + await prisma.tool.deleteMany({ + where: { + id: { in: orphanedTools.map((t) => t.id) }, + }, + }); + console.log(`Deleted ${orphanedTools.length} orphaned tools from package: ${pkg.name}`); + } + processed++; } catch (error) { errors++; @@ -174,6 +342,8 @@ export async function POST(request: NextRequest) { errors, packagesFound: searchResults.length, durationMs: Date.now() - startTime, + errorMessages: errorMessages.slice(0, 5), // Include first 5 error messages + skippedPackages: skippedPackages, // Include all skipped package names }, }); } catch (error) { diff --git a/apps/web/src/app/api/sync/metrics/route.ts b/apps/web/src/app/api/sync/metrics/route.ts index 0b452b4..39bf41f 100644 --- a/apps/web/src/app/api/sync/metrics/route.ts +++ b/apps/web/src/app/api/sync/metrics/route.ts @@ -9,7 +9,7 @@ export const maxDuration = 300; // 5 minutes max for cron jobs /** * POST /api/sync/metrics - * Update download stats and quality scores for all tools + * Update download stats and quality scores for all packages and tools * * This endpoint is called by Vercel Cron (every hour) * Requires Authorization: Bearer <CRON_SECRET> @@ -31,43 +31,51 @@ export async function POST(request: NextRequest) { const errorMessages: string[] = []; try { - // Get all tools from database - const tools = await prisma.tool.findMany({ - select: { - id: true, - npmPackageName: true, - tier: true, - npmDownloadsLastMonth: true, - githubStars: true, + // Get all packages with their tools from database + const packages = await prisma.package.findMany({ + include: { + tools: true, }, }); - // Process each tool - for (const tool of tools) { + // Process each package + for (const pkg of packages) { try { - // Fetch download stats from NPM - const downloads = await fetchDownloadStats(tool.npmPackageName); + // Fetch download stats from NPM (package-level metric) + const downloads = await fetchDownloadStats(pkg.npmPackageName); - // Calculate quality score (0.00 to 1.00) - const qualityScore = calculateQualityScore({ - tier: tool.tier, - downloads, - githubStars: tool.githubStars || 0, - }); - - // Update tool metrics - await prisma.tool.update({ - where: { id: tool.id }, + // Update package metrics + await prisma.package.update({ + where: { id: pkg.id }, data: { npmDownloadsLastMonth: downloads, - qualityScore, + // githubStars would be updated here if we had GitHub API integration }, }); + // Calculate and update quality score for each tool in this package + for (const tool of pkg.tools) { + const qualityScore = calculateQualityScore({ + tier: pkg.tier, // Tier is at package level + downloads, // Package downloads + githubStars: pkg.githubStars || 0, // Package stars + hasParameters: !!tool.parameters, + hasReturns: !!tool.returns, + hasAiAgent: !!tool.aiAgent, + }); + + await prisma.tool.update({ + where: { id: tool.id }, + data: { + qualityScore, + }, + }); + } + processed++; } catch (error) { errors++; - const errorMsg = `Failed to process ${tool.npmPackageName}: ${error instanceof Error ? error.message : 'Unknown error'}`; + const errorMsg = `Failed to process ${pkg.npmPackageName}: ${error instanceof Error ? error.message : 'Unknown error'}`; errorMessages.push(errorMsg); console.error(errorMsg); } @@ -80,13 +88,15 @@ export async function POST(request: NextRequest) { source: 'metrics', checkpoint: { lastRun: new Date().toISOString(), - totalTools: tools.length, + totalPackages: packages.length, + totalTools: packages.reduce((sum, pkg) => sum + pkg.tools.length, 0), }, }, update: { checkpoint: { lastRun: new Date().toISOString(), - totalTools: tools.length, + totalPackages: packages.length, + totalTools: packages.reduce((sum, pkg) => sum + pkg.tools.length, 0), }, }, }); @@ -102,10 +112,11 @@ export async function POST(request: NextRequest) { message: errors > 0 ? `Processed with errors: ${errorMessages.slice(0, 3).join('; ')}` - : `Successfully updated metrics for ${processed} tools`, + : `Successfully updated metrics for ${processed} packages`, metadata: { durationMs: Date.now() - startTime, - totalTools: tools.length, + totalPackages: packages.length, + totalTools: packages.reduce((sum, pkg) => sum + pkg.tools.length, 0), }, }, }); @@ -116,7 +127,8 @@ export async function POST(request: NextRequest) { processed, skipped, errors, - totalTools: tools.length, + totalPackages: packages.length, + totalTools: packages.reduce((sum, pkg) => sum + pkg.tools.length, 0), durationMs: Date.now() - startTime, }, }); @@ -152,25 +164,40 @@ export async function POST(request: NextRequest) { /** * Calculate quality score based on multiple factors * Returns a value between 0.00 and 1.00 + * + * Score components: + * - Tier (0.4 minimal, 0.6 rich) + * - Downloads (logarithmic, max 0.2) + * - GitHub stars (logarithmic, max 0.1) + * - Tool metadata richness (0.1 for each: parameters, returns, aiAgent) */ function calculateQualityScore(params: { tier: string; downloads: number; githubStars: number; + hasParameters: boolean; + hasReturns: boolean; + hasAiAgent: boolean; }): number { - const { tier, downloads, githubStars } = params; + const { tier, downloads, githubStars, hasParameters, hasReturns, hasAiAgent } = params; // Base score from tier const tierScore = tier === 'rich' ? 0.6 : 0.4; - // Downloads score (logarithmic scale, max 0.3) - const downloadsScore = Math.min(0.3, Math.log10(downloads + 1) / 10); + // Downloads score (logarithmic scale, max 0.2) + const downloadsScore = Math.min(0.2, Math.log10(downloads + 1) / 15); // GitHub stars score (logarithmic scale, max 0.1) const starsScore = Math.min(0.1, Math.log10(githubStars + 1) / 10); + // Tool metadata richness score (max 0.1) + let richnessScore = 0; + if (hasParameters) richnessScore += 0.04; + if (hasReturns) richnessScore += 0.03; + if (hasAiAgent) richnessScore += 0.03; + // Total score (capped at 1.00) - const totalScore = Math.min(1.0, tierScore + downloadsScore + starsScore); + const totalScore = Math.min(1.0, tierScore + downloadsScore + starsScore + richnessScore); // Round to 2 decimal places return Math.round(totalScore * 100) / 100; diff --git a/apps/web/src/app/api/sync/stats-snapshot/route.ts b/apps/web/src/app/api/sync/stats-snapshot/route.ts new file mode 100644 index 0000000..4324107 --- /dev/null +++ b/apps/web/src/app/api/sync/stats-snapshot/route.ts @@ -0,0 +1,322 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; +export const maxDuration = 60; + +/** + * POST /api/sync/stats-snapshot + * Captures a daily snapshot of registry statistics for historical tracking. + * Should be run once per day via cron. + */ +export async function POST(request: NextRequest) { + const startTime = Date.now(); + + // Verify cron secret + const authHeader = request.headers.get('authorization'); + const cronSecret = process.env.CRON_SECRET; + + if (cronSecret && authHeader !== `Bearer ${cronSecret}`) { + return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); + } + + try { + // Get today's date at midnight UTC + const today = new Date(); + today.setUTCHours(0, 0, 0, 0); + + // Check if we already have a snapshot for today + const existingSnapshot = await prisma.statsSnapshot.findUnique({ + where: { date: today }, + }); + + if (existingSnapshot) { + return NextResponse.json({ + success: true, + message: 'Snapshot already exists for today', + data: { date: today.toISOString(), id: existingSnapshot.id }, + }); + } + + // Time boundaries for daily counts + const yesterday = new Date(today); + yesterday.setDate(yesterday.getDate() - 1); + + // Gather all statistics in parallel + const [ + // Tool and package counts + totalTools, + totalPackages, + officialTools, + officialPackages, + toolsWithSchema, + + // Health status counts + importHealthy, + importBroken, + importUnknown, + executionHealthy, + executionBroken, + executionUnknown, + + // Package data for aggregations + packages, + + // Daily execution stats + dailyExecutions, + dailySuccessful, + dailyFailed, + avgExecutionTime, + + // Daily token usage + dailyTokens, + + // Daily health checks + dailyHealthChecks, + + // Quality distribution + qualityDistribution, + ] = await Promise.all([ + // Tool counts + prisma.tool.count(), + prisma.package.count(), + prisma.tool.count({ where: { package: { isOfficial: true } } }), + prisma.package.count({ where: { isOfficial: true } }), + prisma.tool.count({ where: { schemaSource: 'extracted' } }), + + // Health status + prisma.tool.count({ where: { importHealth: 'HEALTHY' } }), + prisma.tool.count({ where: { importHealth: 'BROKEN' } }), + prisma.tool.count({ where: { importHealth: 'UNKNOWN' } }), + prisma.tool.count({ where: { executionHealth: 'HEALTHY' } }), + prisma.tool.count({ where: { executionHealth: 'BROKEN' } }), + prisma.tool.count({ where: { executionHealth: 'UNKNOWN' } }), + + // Package data + prisma.package.findMany({ + select: { + tier: true, + category: true, + npmDownloadsLastMonth: true, + githubStars: true, + _count: { select: { tools: true } }, + }, + }), + + // Daily execution stats + prisma.simulation.count({ + where: { createdAt: { gte: yesterday, lt: today } }, + }), + prisma.simulation.count({ + where: { createdAt: { gte: yesterday, lt: today }, status: 'success' }, + }), + prisma.simulation.count({ + where: { + createdAt: { gte: yesterday, lt: today }, + status: { in: ['error', 'timeout'] }, + }, + }), + prisma.simulation.aggregate({ + where: { + createdAt: { gte: yesterday, lt: today }, + status: 'success', + executionTimeMs: { not: null }, + }, + _avg: { executionTimeMs: true }, + }), + + // Daily token usage + prisma.tokenUsage.aggregate({ + where: { createdAt: { gte: yesterday, lt: today } }, + _sum: { + inputTokens: true, + outputTokens: true, + totalTokens: true, + estimatedCost: true, + }, + }), + + // Daily health checks + prisma.healthCheck.count({ + where: { createdAt: { gte: yesterday, lt: today } }, + }), + + // Quality score distribution + prisma.$queryRaw<{ bucket: string; count: bigint }[]>` + SELECT + CASE + WHEN quality_score IS NULL THEN 'unscored' + WHEN quality_score < 0.3 THEN 'low' + WHEN quality_score < 0.5 THEN 'medium-low' + WHEN quality_score < 0.7 THEN 'medium' + WHEN quality_score < 0.9 THEN 'high' + ELSE 'excellent' + END as bucket, + COUNT(*) as count + FROM tools + GROUP BY + CASE + WHEN quality_score IS NULL THEN 'unscored' + WHEN quality_score < 0.3 THEN 'low' + WHEN quality_score < 0.5 THEN 'medium-low' + WHEN quality_score < 0.7 THEN 'medium' + WHEN quality_score < 0.9 THEN 'high' + ELSE 'excellent' + END + `, + ]); + + // Aggregate package data + let tiersMinimal = 0; + let tiersRich = 0; + let totalNpmDownloads = 0; + let totalGithubStars = 0; + const categories: Record<string, number> = {}; + + for (const pkg of packages) { + if (pkg.tier === 'minimal') tiersMinimal++; + if (pkg.tier === 'rich') tiersRich++; + totalNpmDownloads += pkg.npmDownloadsLastMonth || 0; + totalGithubStars += pkg.githubStars || 0; + + if (pkg.category) { + categories[pkg.category] = (categories[pkg.category] || 0) + pkg._count.tools; + } + } + + // Format quality distribution + const qualityDist: Record<string, number> = {}; + for (const row of qualityDistribution) { + qualityDist[row.bucket] = Number(row.count); + } + + // Create the snapshot + const snapshot = await prisma.statsSnapshot.create({ + data: { + date: today, + + // Registry overview + totalTools, + totalPackages, + officialTools, + officialPackages, + toolsWithSchema, + + // Downloads & stars + totalNpmDownloads, + totalGithubStars, + + // Health status + importHealthy, + importBroken, + importUnknown, + executionHealthy, + executionBroken, + executionUnknown, + + // Quality distribution + qualityDistribution: qualityDist, + + // Tiers + tiersMinimal, + tiersRich, + + // Daily execution stats + executionsTotal: dailyExecutions, + executionsSuccessful: dailySuccessful, + executionsFailed: dailyFailed, + executionsAvgTimeMs: avgExecutionTime._avg.executionTimeMs + ? Math.round(avgExecutionTime._avg.executionTimeMs) + : null, + + // Daily token usage + tokensInput: BigInt(dailyTokens._sum.inputTokens || 0), + tokensOutput: BigInt(dailyTokens._sum.outputTokens || 0), + tokensTotal: BigInt(dailyTokens._sum.totalTokens || 0), + tokensCostUsd: dailyTokens._sum.estimatedCost, + + // Daily health checks + healthChecksRun: dailyHealthChecks, + + // Categories + categories, + }, + }); + + const processingTime = Date.now() - startTime; + + return NextResponse.json({ + success: true, + data: { + id: snapshot.id, + date: snapshot.date, + totalTools: snapshot.totalTools, + totalPackages: snapshot.totalPackages, + executionsTotal: snapshot.executionsTotal, + processingTimeMs: processingTime, + }, + }); + } catch (error) { + console.error('Error creating stats snapshot:', error); + + return NextResponse.json( + { + success: false, + error: { + code: 'SNAPSHOT_ERROR', + message: 'Failed to create stats snapshot', + details: error instanceof Error ? error.message : 'Unknown error', + }, + }, + { status: 500 } + ); + } +} + +// GET endpoint to retrieve recent snapshots +export async function GET(request: NextRequest) { + const { searchParams } = new URL(request.url); + const days = Math.min(parseInt(searchParams.get('days') || '30', 10), 365); + + try { + const since = new Date(); + since.setDate(since.getDate() - days); + + const snapshots = await prisma.statsSnapshot.findMany({ + where: { date: { gte: since } }, + orderBy: { date: 'asc' }, + }); + + // Convert BigInt to number for JSON serialization + const serializedSnapshots = snapshots.map((s) => ({ + ...s, + tokensInput: Number(s.tokensInput), + tokensOutput: Number(s.tokensOutput), + tokensTotal: Number(s.tokensTotal), + })); + + return NextResponse.json({ + success: true, + data: { + snapshots: serializedSnapshots, + count: snapshots.length, + days, + }, + }); + } catch (error) { + console.error('Error fetching stats snapshots:', error); + + return NextResponse.json( + { + success: false, + error: { + code: 'FETCH_ERROR', + message: 'Failed to fetch stats snapshots', + details: error instanceof Error ? error.message : 'Unknown error', + }, + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/tool-ideas/route.ts b/apps/web/src/app/api/tool-ideas/route.ts new file mode 100644 index 0000000..5157786 --- /dev/null +++ b/apps/web/src/app/api/tool-ideas/route.ts @@ -0,0 +1,129 @@ +import { readFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { type NextRequest, NextResponse } from 'next/server'; + +export const dynamic = 'force-dynamic'; +export const maxDuration = 60; + +interface ToolIdea { + name: string; + description: string; + category: string; + parameters: Array<{ + name: string; + type: string; + description: string; + required: boolean; + defaultValue: string; + }>; + returns: { + type: string; + description: string; + }; + aiAgent: { + useCase: string; + limitations: string; + examples: string[]; + }; + tags: string[]; + examples: Array<{ + inputJson: string; + description: string; + }>; + qualityScore: number; + skeleton: { + verb: string; + object: string; + context: string | null; + }; +} + +interface ToolIdeasData { + metadata: { + exportedAt: string; + count: number; + minQuality: number; + excludeNonsensical: boolean; + }; + tools: ToolIdea[]; +} + +// Cache the data in memory +let cachedData: ToolIdeasData | null = null; + +function loadToolIdeas(): ToolIdeasData { + if (cachedData) { + return cachedData; + } + + try { + // On Vercel, public files are in the project root under 'public' + const filePath = join(process.cwd(), 'public', 'tools-export.json'); + const fileContent = readFileSync(filePath, 'utf-8'); + cachedData = JSON.parse(fileContent) as ToolIdeasData; + return cachedData; + } catch (error) { + console.error('Failed to load tool ideas:', error); + return { + metadata: { exportedAt: '', count: 0, minQuality: 0, excludeNonsensical: false }, + tools: [], + }; + } +} + +export async function GET(request: NextRequest) { + const searchParams = request.nextUrl.searchParams; + const search = searchParams.get('search')?.toLowerCase() || ''; + const category = searchParams.get('category') || ''; + const minQuality = Number.parseFloat(searchParams.get('minQuality') || '0'); + const verb = searchParams.get('verb') || ''; + const limit = Math.min(Number.parseInt(searchParams.get('limit') || '100'), 10000); + const offset = Number.parseInt(searchParams.get('offset') || '0'); + + const data = loadToolIdeas(); + let tools = data.tools; + + // Apply filters + if (search) { + tools = tools.filter( + (t) => + t.name.toLowerCase().includes(search) || + t.description.toLowerCase().includes(search) || + t.tags.some((tag) => tag.toLowerCase().includes(search)) + ); + } + + if (category) { + tools = tools.filter((t) => t.category === category); + } + + if (minQuality > 0) { + tools = tools.filter((t) => t.qualityScore >= minQuality); + } + + if (verb) { + tools = tools.filter((t) => t.skeleton.verb === verb); + } + + const totalCount = tools.length; + + // Apply pagination + const paginatedTools = tools.slice(offset, offset + limit); + + // Get unique categories and verbs for filters + const categories = [...new Set(data.tools.map((t) => t.category))].sort(); + const verbs = [...new Set(data.tools.map((t) => t.skeleton.verb))].sort(); + + return NextResponse.json({ + success: true, + data: paginatedTools, + meta: { + total: totalCount, + limit, + offset, + hasMore: offset + limit < totalCount, + categories, + verbs, + }, + }); +} diff --git a/apps/web/src/app/api/tools/[...slug]/route.ts b/apps/web/src/app/api/tools/[...slug]/route.ts new file mode 100644 index 0000000..6b18104 --- /dev/null +++ b/apps/web/src/app/api/tools/[...slug]/route.ts @@ -0,0 +1,221 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { performHealthCheck } from '~/lib/health-check/health-check-service'; +import { checkRateLimit } from '~/lib/rate-limit'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; +export const maxDuration = 60; + +/** + * Parse tool slug to extract package name and export name + */ +function parseSlug(slug: string[]): { packageName: string; name: string | undefined } { + let packageName: string; + let name: string | undefined; + + if (slug.length === 1) { + // Single slug - package name without scope + packageName = slug[0] || ''; + } else if (slug.length === 2) { + // Could be: @scope/package OR package/name + if (slug[0]?.startsWith('@')) { + // @scope/package + packageName = slug.join('/'); + } else { + // package + name + packageName = slug[0] || ''; + name = slug[1]; + } + } else { + // 3+ slugs: @scope/package/name + packageName = slug.slice(0, slug[0]?.startsWith('@') ? 2 : 1).join('/'); + name = slug[slug.length - 1]; + } + + return { packageName, name }; +} + +/** + * GET /api/tools/[...slug] + * + * Fetch a single tool by its NPM package name (slug) + * Supports catch-all routing for scoped packages like @tpmjs/text-transformer + */ +export async function GET( + request: NextRequest, + { params }: { params: Promise<{ slug: string[] }> } +): Promise<NextResponse> { + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + + try { + const { slug } = await params; + const { packageName, name } = parseSlug(slug); + + if (name) { + // Find specific tool by package name and export name + const tool = await prisma.tool.findFirst({ + where: { + package: { npmPackageName: packageName }, + name: name, + }, + include: { package: true }, + }); + + if (!tool) { + return NextResponse.json( + { + success: false, + error: 'Tool not found', + }, + { status: 404 } + ); + } + + return NextResponse.json({ + success: true, + data: tool, + }); + } + // Find all tools for the package + const pkg = await prisma.package.findUnique({ + where: { npmPackageName: packageName }, + include: { tools: true }, + }); + + if (!pkg) { + return NextResponse.json( + { + success: false, + error: 'Package not found', + }, + { status: 404 } + ); + } + + return NextResponse.json({ + success: true, + data: { + package: pkg, + tools: pkg.tools, + }, + }); + } catch (error) { + console.error('Error fetching tool:', error); + return NextResponse.json( + { + success: false, + error: 'Failed to fetch tool', + }, + { status: 500 } + ); + } +} + +/** + * POST /api/tools/[...slug] + * + * Manually trigger a health check for a specific tool + * Rate limit: 5-minute cooldown per tool + * + * Examples: + * - POST /api/tools/@tpmjs/hello/hello + * - POST /api/tools/my-package/myTool + */ +export async function POST( + request: NextRequest, + { params }: { params: Promise<{ slug: string[] }> } +): Promise<NextResponse> { + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + + try { + const { slug } = await params; + const { packageName, name } = parseSlug(slug); + + // Health checks require export name + if (!name) { + return NextResponse.json( + { + success: false, + error: 'Export name required for health check', + }, + { status: 400 } + ); + } + + // Find the tool + const tool = await prisma.tool.findFirst({ + where: { + package: { npmPackageName: packageName }, + name: name, + }, + select: { + id: true, + lastHealthCheck: true, + }, + }); + + if (!tool) { + return NextResponse.json( + { + success: false, + error: 'Tool not found', + }, + { status: 404 } + ); + } + + // Rate limiting: Check if last health check was within 5 minutes + const fiveMinutesAgo = new Date(Date.now() - 5 * 60 * 1000); + if (tool.lastHealthCheck && tool.lastHealthCheck > fiveMinutesAgo) { + const nextAvailable = new Date(tool.lastHealthCheck.getTime() + 5 * 60 * 1000); + const secondsRemaining = Math.ceil((nextAvailable.getTime() - Date.now()) / 1000); + + return NextResponse.json( + { + success: false, + error: `Rate limit exceeded. Try again in ${secondsRemaining} seconds.`, + retryAfter: secondsRemaining, + }, + { status: 429 } + ); + } + + // Perform health check + console.log(`🏥 Manual health check triggered for ${packageName}/${name}`); + const result = await performHealthCheck(tool.id, 'manual'); + + return NextResponse.json({ + success: true, + data: { + toolId: result.toolId, + packageName: packageName, + name: name, + importStatus: result.importStatus, + importError: result.importError, + importTimeMs: result.importTimeMs, + executionStatus: result.executionStatus, + executionError: result.executionError, + executionTimeMs: result.executionTimeMs, + overallStatus: result.overallStatus, + }, + }); + } catch (error) { + console.error('Error performing manual health check:', error); + return NextResponse.json( + { + success: false, + error: 'Failed to perform health check', + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/tools/[id]/route.ts b/apps/web/src/app/api/tools/[id]/route.ts deleted file mode 100644 index b9e38e4..0000000 --- a/apps/web/src/app/api/tools/[id]/route.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { prisma } from '@tpmjs/db'; -import { type NextRequest, NextResponse } from 'next/server'; - -export const runtime = 'nodejs'; -export const dynamic = 'force-dynamic'; -export const maxDuration = 60; - -/** - * GET /api/tools/[id] - * Get tool details by ID or package name - * - * Params: - * - id: Tool ID (number) or NPM package name (string) - */ -export async function GET(_request: NextRequest, { params }: { params: Promise<{ id: string }> }) { - try { - const { id } = await params; - - if (!id) { - return NextResponse.json( - { - success: false, - error: 'Missing ID parameter', - }, - { status: 400 } - ); - } - - // Try to find by ID first (cuid), then by package name - const tool = await prisma.tool.findFirst({ - where: { - OR: [{ id }, { npmPackageName: id }], - }, - }); - - if (!tool) { - return NextResponse.json( - { - success: false, - error: 'Tool not found', - message: `No tool found with ID or package name: ${id}`, - }, - { status: 404 } - ); - } - - return NextResponse.json({ - success: true, - data: tool, - }); - } catch (error) { - console.error('Error fetching tool details:', error); - - return NextResponse.json( - { - success: false, - error: 'Failed to fetch tool details', - message: error instanceof Error ? error.message : 'Unknown error', - }, - { status: 500 } - ); - } -} diff --git a/apps/web/src/app/api/tools/[slug]/route.ts b/apps/web/src/app/api/tools/[slug]/route.ts deleted file mode 100644 index 759cdea..0000000 --- a/apps/web/src/app/api/tools/[slug]/route.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { prisma } from '@tpmjs/db'; -import { type NextRequest, NextResponse } from 'next/server'; - -export const runtime = 'nodejs'; -export const dynamic = 'force-dynamic'; -export const maxDuration = 60; - -/** - * GET /api/tools/[slug] - * - * Fetch a single tool by its NPM package name (slug) - */ -export async function GET( - _request: NextRequest, - { params }: { params: Promise<{ slug: string }> } -): Promise<NextResponse> { - try { - const { slug } = await params; - - // Find the tool by npmPackageName - const tool = await prisma.tool.findUnique({ - where: { - npmPackageName: decodeURIComponent(slug), - }, - }); - - if (!tool) { - return NextResponse.json( - { - success: false, - error: 'Tool not found', - }, - { status: 404 } - ); - } - - // Return the tool data - return NextResponse.json({ - success: true, - data: tool, - }); - } catch (error) { - console.error('Error fetching tool:', error); - return NextResponse.json( - { - success: false, - error: 'Failed to fetch tool', - }, - { status: 500 } - ); - } -} diff --git a/apps/web/src/app/api/tools/broken/route.ts b/apps/web/src/app/api/tools/broken/route.ts new file mode 100644 index 0000000..4b8b96e --- /dev/null +++ b/apps/web/src/app/api/tools/broken/route.ts @@ -0,0 +1,55 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { checkRateLimit } from '~/lib/rate-limit'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; +export const maxDuration = 60; + +/** + * GET /api/tools/broken + * List all tools with broken health status + * + * Returns tools where importHealth='BROKEN' OR executionHealth='BROKEN' + * Includes package relation with npmPackageName and npmVersion + */ +export async function GET(request: NextRequest) { + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + + try { + const brokenTools = await prisma.tool.findMany({ + where: { + OR: [{ importHealth: 'BROKEN' }, { executionHealth: 'BROKEN' }], + }, + include: { + package: { + select: { + npmPackageName: true, + npmVersion: true, + category: true, + isOfficial: true, + }, + }, + }, + orderBy: { + lastHealthCheck: 'desc', + }, + }); + + return NextResponse.json({ + success: true, + data: brokenTools, + count: brokenTools.length, + }); + } catch (error) { + console.error('Failed to fetch broken tools:', error); + return NextResponse.json( + { success: false, error: 'Failed to fetch broken tools' }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/tools/execute/[...slug]/route.ts b/apps/web/src/app/api/tools/execute/[...slug]/route.ts new file mode 100644 index 0000000..dacbb1d --- /dev/null +++ b/apps/web/src/app/api/tools/execute/[...slug]/route.ts @@ -0,0 +1,224 @@ +/** + * Tool execution endpoint with SSE streaming + * Executes TPMJS tools with AI agents and streams real-time progress + */ + +import { checkRateLimit, getClientIP } from '@/lib/rate-limiter'; +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; + +// Use Node.js runtime for SSE streaming +export const runtime = 'nodejs'; +export const maxDuration = 60; // 60 seconds timeout +export const dynamic = 'force-dynamic'; // Prevent static generation for AI SDK routes + +interface ExecuteRequest { + prompt: string; + parameters?: Record<string, unknown>; +} + +/** + * POST /api/tools/execute/[...slug] + * Executes a tool with an AI agent and streams the response via SSE + * + * Slug format: [toolId] or [packageName, name] + * Examples: + * /api/tools/execute/clx123abc (by tool ID) + * /api/tools/execute/@tpmjs/hello/helloWorldTool (by package and export name) + */ +export async function POST( + request: NextRequest, + { params }: { params: Promise<{ slug: string[] }> } +) { + const { slug } = await params; + + try { + // Parse request body + const body = (await request.json()) as ExecuteRequest; + const { prompt, parameters } = body; + + if (!prompt || prompt.length === 0) { + return NextResponse.json({ error: 'Prompt is required' }, { status: 400 }); + } + + if (prompt.length > 2000) { + return NextResponse.json({ error: 'Prompt too long (max 2000 characters)' }, { status: 400 }); + } + + // Get client IP and check rate limit + const ipAddress = getClientIP(request); + const rateLimit = await checkRateLimit(ipAddress); + + if (!rateLimit.allowed) { + return NextResponse.json( + { + error: 'Rate limit exceeded', + resetAt: rateLimit.resetAt, + remaining: 0, + }, + { + status: 429, + headers: { + 'X-RateLimit-Limit': '10', + 'X-RateLimit-Remaining': '0', + 'X-RateLimit-Reset': rateLimit.resetAt.toISOString(), + }, + } + ); + } + + // Fetch tool from database with package relation + // Support both ID-based lookup and packageName/name lookup + const tool = + slug.length === 1 + ? // Single slug - treat as tool ID + await prisma.tool.findUnique({ + where: { id: slug[0] || '' }, + include: { package: true }, + }) + : // Multiple slugs - treat as packageName/name + await prisma.tool.findFirst({ + where: { + package: { npmPackageName: decodeURIComponent(slug.slice(0, -1).join('/')) }, + name: decodeURIComponent(slug[slug.length - 1] || ''), + }, + include: { package: true }, + }); + + if (!tool) { + return NextResponse.json({ error: 'Tool not found' }, { status: 404 }); + } + + // Create simulation record + const simulation = await prisma.simulation.create({ + data: { + toolId: tool.id, + userPrompt: prompt, + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + parameters: parameters ? (parameters as any) : undefined, + ipAddress, + userAgent: request.headers.get('user-agent') || null, + status: 'running', + model: 'gpt-4-turbo', + }, + }); + + // Create readable stream for SSE + const stream = new ReadableStream({ + async start(controller) { + const encoder = new TextEncoder(); + + const sendEvent = (event: string, data: unknown) => { + const message = `event: ${event}\ndata: ${JSON.stringify(data)}\n\n`; + controller.enqueue(encoder.encode(message)); + }; + + try { + const startTime = Date.now(); + + // Dynamically import AI agent to avoid loading tiktoken at build time + const { executeToolWithAgent } = await import('@/lib/ai-agent/tool-executor-agent'); + + // Execute tool with AI agent + const result = await executeToolWithAgent( + tool, + prompt, + (chunk) => { + // Stream text chunks + sendEvent('chunk', { text: chunk }); + }, + (tokens) => { + // Stream token updates + sendEvent('tokens', tokens); + } + ); + + const executionTimeMs = Date.now() - startTime; + + // Update simulation with results + await prisma.simulation.update({ + where: { id: simulation.id }, + data: { + status: 'success', + output: { result: result.output }, + agentSteps: result.agentSteps, + executionTimeMs, + completedAt: new Date(), + }, + }); + + // Update tool health status on successful execution + // This ensures tools marked as BROKEN get updated when they actually work + if (tool.importHealth === 'BROKEN' || tool.executionHealth === 'BROKEN') { + await prisma.tool.update({ + where: { id: tool.id }, + data: { + importHealth: 'HEALTHY', + executionHealth: 'HEALTHY', + healthCheckError: null, + lastHealthCheck: new Date(), + }, + }); + } + + // Create token usage record + await prisma.tokenUsage.create({ + data: { + simulationId: simulation.id, + inputTokens: result.tokenBreakdown.inputTokens, + toolDescTokens: result.tokenBreakdown.toolDescTokens, + schemaTokens: result.tokenBreakdown.schemaTokens, + outputTokens: result.tokenBreakdown.outputTokens, + totalTokens: result.tokenBreakdown.totalTokens, + estimatedCost: result.tokenBreakdown.estimatedCost, + }, + }); + + // Send completion event + sendEvent('complete', { + output: result.output, + tokenBreakdown: result.tokenBreakdown, + executionTimeMs, + agentSteps: result.agentSteps, + }); + } catch (error) { + // Update simulation with error + await prisma.simulation.update({ + where: { id: simulation.id }, + data: { + status: 'error', + error: error instanceof Error ? error.message : 'Unknown error', + completedAt: new Date(), + }, + }); + + // Send error event + sendEvent('error', { + message: error instanceof Error ? error.message : 'Unknown error', + }); + } finally { + controller.close(); + } + }, + }); + + // Return SSE stream + return new NextResponse(stream, { + headers: { + 'Content-Type': 'text/event-stream', + 'Cache-Control': 'no-cache', + Connection: 'keep-alive', + 'X-RateLimit-Limit': '10', + 'X-RateLimit-Remaining': rateLimit.remaining.toString(), + }, + }); + } catch (error) { + console.error('Execute endpoint error:', error); + return NextResponse.json( + { + error: error instanceof Error ? error.message : 'Internal server error', + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/tools/extract-schema/route.ts b/apps/web/src/app/api/tools/extract-schema/route.ts new file mode 100644 index 0000000..cc0a439 --- /dev/null +++ b/apps/web/src/app/api/tools/extract-schema/route.ts @@ -0,0 +1,159 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { convertJsonSchemaToParameters, extractToolSchema } from '~/lib/schema-extraction'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; + +/** + * POST /api/tools/extract-schema + * Manually trigger schema extraction for a tool + * + * Body: + * - packageName: npm package name + * - name: exported function name + * + * Rate limited to 1 extraction per minute per tool + */ +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { packageName, name } = body; + + if (!packageName || !name) { + return NextResponse.json( + { success: false, error: 'packageName and name are required' }, + { status: 400 } + ); + } + + console.log('[Extract Schema] Looking up tool:', { packageName, name }); + + // Find the tool by package name and export name + const tool = await prisma.tool.findFirst({ + where: { + name, + package: { + npmPackageName: packageName, + }, + }, + include: { + package: { + select: { + npmPackageName: true, + npmVersion: true, + env: true, + }, + }, + }, + }); + + if (!tool) { + console.log('[Extract Schema] Tool not found:', { packageName, name }); + return NextResponse.json({ success: false, error: 'Tool not found' }, { status: 404 }); + } + + // Rate limit: 1 minute cooldown + if (tool.schemaExtractedAt) { + const timeSinceLastExtraction = Date.now() - tool.schemaExtractedAt.getTime(); + const cooldownMs = 60000; // 1 minute + + if (timeSinceLastExtraction < cooldownMs) { + const retryAfter = Math.ceil((cooldownMs - timeSinceLastExtraction) / 1000); + return NextResponse.json( + { + success: false, + error: 'Rate limited', + message: `Please wait ${retryAfter} seconds before trying again`, + retryAfter, + }, + { status: 429 } + ); + } + } + + console.log('[Extract Schema] Extracting schema for:', { + packageName: tool.package.npmPackageName, + name: tool.name, + version: tool.package.npmVersion, + }); + + // Extract schema from executor + const schemaResult = await extractToolSchema( + tool.package.npmPackageName, + tool.name, + tool.package.npmVersion, + tool.package.env as Record<string, unknown> | null + ); + + if (schemaResult.success) { + // Update tool with extracted schema + const updatedTool = await prisma.tool.update({ + where: { id: tool.id }, + data: { + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + inputSchema: schemaResult.inputSchema as any, + // Also update parameters array for backward compatibility + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + parameters: convertJsonSchemaToParameters(schemaResult.inputSchema) as any, + schemaSource: 'extracted', + schemaExtractedAt: new Date(), + }, + select: { + id: true, + name: true, + inputSchema: true, + parameters: true, + schemaSource: true, + schemaExtractedAt: true, + }, + }); + + console.log('[Extract Schema] Schema extracted successfully:', { + toolId: updatedTool.id, + name: updatedTool.name, + schemaSource: updatedTool.schemaSource, + }); + + return NextResponse.json({ + success: true, + message: 'Schema extracted successfully', + schemaSource: 'extracted', + tool: updatedTool, + }); + } + + // Extraction failed + console.log('[Extract Schema] Extraction failed:', { + packageName, + name, + error: schemaResult.error, + }); + + // Update tool to mark extraction attempt + await prisma.tool.update({ + where: { id: tool.id }, + data: { + schemaExtractedAt: new Date(), // Update timestamp even on failure for rate limiting + }, + }); + + return NextResponse.json({ + success: false, + error: 'Schema extraction failed', + message: schemaResult.error, + schemaSource: tool.schemaSource, + }); + } catch (error) { + console.error('[Extract Schema] Error:', error); + + return NextResponse.json( + { + success: false, + error: 'Failed to extract schema', + message: error instanceof Error ? error.message : 'Unknown error', + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/tools/report-health/route.ts b/apps/web/src/app/api/tools/report-health/route.ts new file mode 100644 index 0000000..fb9aeb7 --- /dev/null +++ b/apps/web/src/app/api/tools/report-health/route.ts @@ -0,0 +1,153 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { checkRateLimit } from '~/lib/rate-limit'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; + +/** + * Check if an error is due to missing environment variables (configuration issue) + * rather than a broken tool (code issue) + */ +function isEnvironmentConfigError(error: string): boolean { + const envErrorPatterns = [ + /is required/i, + /is not set/i, + /missing.*environment/i, + /environment.*missing/i, + /api key.*required/i, + /api key.*not provided/i, + /missing.*api key/i, + /must be set/i, + /not found.*environment/i, + /please set/i, + /please provide/i, + /configure.*environment/i, + ]; + + return envErrorPatterns.some((pattern) => pattern.test(error)); +} + +/** + * Check if an error is due to input validation (Zod validation, URL format, etc.) + * These errors mean the tool is working correctly - it's validating input as expected + */ +function isInputValidationError(error: string): boolean { + const validationErrorPatterns = [ + /must have a valid.*domain/i, + /valid.*path/i, + /invalid.*url/i, + /invalid.*format/i, + /expected.*received/i, + /must be.*string/i, + /must be.*number/i, + /must be.*boolean/i, + /must be.*array/i, + /must be.*object/i, + /validation.*failed/i, + /does not match/i, + /too short/i, + /too long/i, + /minimum.*length/i, + /maximum.*length/i, + ]; + + return validationErrorPatterns.some((pattern) => pattern.test(error)); +} + +/** + * Check if an error is a configuration or input issue (not a broken tool) + */ +function isNonBreakingError(error: string): boolean { + return isEnvironmentConfigError(error) || isInputValidationError(error); +} + +interface ReportHealthRequest { + packageName: string; + name: string; + success: boolean; + error?: string; +} + +/** + * POST /api/tools/report-health + * + * Centralized endpoint for reporting tool execution results. + * All health status logic is here - playground and other clients just report results. + * + * This endpoint determines whether a failure should mark the tool as BROKEN or HEALTHY + * based on the error type (env vars, validation = HEALTHY, infrastructure = BROKEN). + */ +export async function POST(request: NextRequest): Promise<NextResponse> { + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + + try { + const body: ReportHealthRequest = await request.json(); + const { packageName, name, success, error } = body; + + if (!packageName || !name) { + return NextResponse.json( + { success: false, error: 'packageName and name are required' }, + { status: 400 } + ); + } + + // Find the tool + const tool = await prisma.tool.findFirst({ + where: { + name, + package: { npmPackageName: packageName }, + }, + select: { id: true }, + }); + + if (!tool) { + return NextResponse.json({ success: false, error: 'Tool not found' }, { status: 404 }); + } + + // Determine health status based on result + let healthStatus: 'HEALTHY' | 'BROKEN'; + let healthError: string | null = null; + + if (success) { + // Successful execution = HEALTHY + healthStatus = 'HEALTHY'; + } else if (error && isNonBreakingError(error)) { + // Failed due to config/validation = HEALTHY (tool works, just needs setup) + healthStatus = 'HEALTHY'; + console.log(`ℹ️ ${packageName}/${name} failed due to config issue (not broken): ${error}`); + } else { + // Real failure = BROKEN + healthStatus = 'BROKEN'; + healthError = error || 'Unknown error'; + } + + // Update tool health status + await prisma.tool.update({ + where: { id: tool.id }, + data: { + executionHealth: healthStatus, + healthCheckError: healthError, + lastHealthCheck: new Date(), + }, + }); + + console.log(`🏥 Health updated for ${packageName}/${name}: ${healthStatus}`); + + return NextResponse.json({ + success: true, + data: { + toolId: tool.id, + healthStatus, + healthError, + }, + }); + } catch (err) { + console.error('Error reporting health:', err); + return NextResponse.json({ success: false, error: 'Failed to report health' }, { status: 500 }); + } +} diff --git a/apps/web/src/app/api/tools/route.ts b/apps/web/src/app/api/tools/route.ts index abeab4d..66812d5 100644 --- a/apps/web/src/app/api/tools/route.ts +++ b/apps/web/src/app/api/tools/route.ts @@ -1,22 +1,276 @@ import { type Prisma, prisma } from '@tpmjs/db'; +import { kv } from '@vercel/kv'; import { type NextRequest, NextResponse } from 'next/server'; +import { checkRateLimit } from '~/lib/rate-limit'; export const runtime = 'nodejs'; export const dynamic = 'force-dynamic'; export const maxDuration = 60; +// Cache configuration +const CACHE_TTL = 300; // 5 minutes +const CACHE_PREFIX = 'tools:'; + +/** + * Try to get cached response, returns null if KV not configured or cache miss + */ +async function getCached<T>(key: string): Promise<T | null> { + try { + if (!process.env.KV_REST_API_URL) return null; + return await kv.get<T>(key); + } catch { + return null; + } +} + +/** + * Try to set cache, silently fails if KV not configured + */ +async function setCache<T>(key: string, value: T, ttl: number): Promise<void> { + try { + if (!process.env.KV_REST_API_URL) return; + await kv.set(key, value, { ex: ttl }); + } catch { + // Silently ignore cache errors + } +} + +// Constants +const DEFAULT_LIMIT = 20; +const MAX_LIMIT = 1000; +const MIN_LIMIT = 1; +const API_VERSION = '1.0.0'; + +// Valid enum values +const VALID_HEALTH_STATUSES = ['HEALTHY', 'BROKEN', 'UNKNOWN'] as const; +type HealthStatus = (typeof VALID_HEALTH_STATUSES)[number]; + +/** + * Standard API response structure + */ +interface ApiResponse<T = unknown> { + success: boolean; + data?: T; + error?: { + code: string; + message: string; + details?: Record<string, unknown>; + }; + meta: { + version: string; + timestamp: string; + requestId?: string; + }; + pagination?: { + limit: number; + offset: number; + count: number; + hasMore: boolean; + }; +} + +/** + * Validation error details + */ +interface ValidationError { + field: string; + message: string; + received?: unknown; +} + +/** + * Validate health status parameter + */ +function validateHealthStatus(value: string | null, fieldName: string): HealthStatus | null { + if (!value) return null; + if (VALID_HEALTH_STATUSES.includes(value as HealthStatus)) { + return value as HealthStatus; + } + throw new Error(`Invalid ${fieldName}: must be one of ${VALID_HEALTH_STATUSES.join(', ')}`); +} + +/** + * Build health filters from query parameters + */ +function buildHealthFilters( + brokenParam: string | null, + importHealth: string | null, + executionHealth: string | null +): Prisma.ToolWhereInput[] { + const healthFilters: Prisma.ToolWhereInput[] = []; + + if (brokenParam === 'true') { + healthFilters.push({ + OR: [{ importHealth: 'BROKEN' }, { executionHealth: 'BROKEN' }], + }); + } else { + const validImportHealth = validateHealthStatus(importHealth, 'importHealth'); + const validExecutionHealth = validateHealthStatus(executionHealth, 'executionHealth'); + + if (validImportHealth) { + healthFilters.push({ importHealth: validImportHealth }); + } + if (validExecutionHealth) { + healthFilters.push({ executionHealth: validExecutionHealth }); + } + } + + return healthFilters; +} + +/** + * Build package filters from query parameters + */ +function buildPackageFilter( + category: string | null, + officialParam: string | null +): Prisma.PackageWhereInput { + const packageFilter: Prisma.PackageWhereInput = {}; + + if (category) { + packageFilter.category = category; + } + + if (officialParam !== null) { + packageFilter.isOfficial = officialParam === 'true'; + } + + return packageFilter; +} + +/** + * Build where clause for tool query + */ +function buildWhereClause( + query: string | null, + packageFilter: Prisma.PackageWhereInput, + healthFilters: Prisma.ToolWhereInput[] +): Prisma.ToolWhereInput { + const where: Prisma.ToolWhereInput = {}; + + // Search filter (searches tool description and package name) + if (query) { + where.OR = [ + { description: { contains: query, mode: 'insensitive' } }, + { package: { npmPackageName: { contains: query, mode: 'insensitive' }, ...packageFilter } }, + ]; + } else if (Object.keys(packageFilter).length > 0) { + // Apply package filter if no search query + where.package = packageFilter; + } + + // Apply health filters as AND conditions + if (healthFilters.length > 0) { + where.AND = healthFilters; + } + + return where; +} + +/** + * Create standardized error response + */ +function createErrorResponse( + code: string, + message: string, + status: number, + details?: Record<string, unknown> +): NextResponse<ApiResponse> { + return NextResponse.json( + { + success: false, + error: { + code, + message, + details, + }, + meta: { + version: API_VERSION, + timestamp: new Date().toISOString(), + }, + }, + { status } + ); +} + +/** + * Validate and parse pagination parameters + */ +function validatePagination( + limitParam: string | null, + offsetParam: string | null +): { limit: number; offset: number } { + const limit = limitParam ? Number.parseInt(limitParam, 10) : DEFAULT_LIMIT; + const offset = offsetParam ? Number.parseInt(offsetParam, 10) : 0; + + const validationErrors: ValidationError[] = []; + + if (Number.isNaN(limit)) { + validationErrors.push({ + field: 'limit', + message: 'Must be a valid number', + received: limitParam, + }); + } else if (limit < MIN_LIMIT) { + validationErrors.push({ + field: 'limit', + message: `Must be at least ${MIN_LIMIT}`, + received: limit, + }); + } else if (limit > MAX_LIMIT) { + validationErrors.push({ + field: 'limit', + message: `Must not exceed ${MAX_LIMIT}`, + received: limit, + }); + } + + if (Number.isNaN(offset)) { + validationErrors.push({ + field: 'offset', + message: 'Must be a valid number', + received: offsetParam, + }); + } else if (offset < 0) { + validationErrors.push({ field: 'offset', message: 'Must be non-negative', received: offset }); + } + + if (validationErrors.length > 0) { + throw new Error(JSON.stringify(validationErrors)); + } + + return { + limit: Math.min(Math.max(limit, MIN_LIMIT), MAX_LIMIT), + offset: Math.max(offset, 0), + }; +} + /** * GET /api/tools * Search and list tools with filtering, sorting, and pagination * * Query params: - * - q: Search query (searches name, description, tags) + * - q: Search query (searches package name, tool description) * - category: Filter by category * - official: Filter by official status (true/false) - * - limit: Results per page (default: 20, max: 100) - * - offset: Pagination offset (default: 0) + * - importHealth: Filter by import health (HEALTHY, BROKEN, UNKNOWN) + * - executionHealth: Filter by execution health (HEALTHY, BROKEN, UNKNOWN) + * - broken: Shorthand for "at least one health check failed" (true/false) + * - limit: Results per page (default: 20, max: 1000, min: 1) + * - offset: Pagination offset (default: 0, min: 0) + * + * @returns {ApiResponse} Standardized API response with tools data */ export async function GET(request: NextRequest) { + const startTime = Date.now(); + const requestId = crypto.randomUUID(); + + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + try { const searchParams = request.nextUrl.searchParams; @@ -24,47 +278,93 @@ export async function GET(request: NextRequest) { const query = searchParams.get('q'); const category = searchParams.get('category'); const officialParam = searchParams.get('official'); + const importHealth = searchParams.get('importHealth'); + const executionHealth = searchParams.get('executionHealth'); + const brokenParam = searchParams.get('broken'); const limitParam = searchParams.get('limit'); const offsetParam = searchParams.get('offset'); - // Validate and set defaults (reduced max from 100 to 50 for faster queries) - const limit = Math.min( - Number.parseInt(limitParam || '20', 10), - 50 // Reduced from 100 for better performance - ); - const offset = Math.max(Number.parseInt(offsetParam || '0', 10), 0); + // Build cache key from query params + const cacheKey = `${CACHE_PREFIX}${searchParams.toString() || 'default'}`; - // Build where clause - const where: Prisma.ToolWhereInput = {}; - - // Search filter (case-insensitive partial match) - if (query) { - where.OR = [ - { npmPackageName: { contains: query, mode: 'insensitive' } }, - { description: { contains: query, mode: 'insensitive' } }, - { - tags: { - hasSome: [query], + // Try cache first (only for simple queries without search) + if (!query) { + const cached = await getCached<ApiResponse>(cacheKey); + if (cached) { + return NextResponse.json(cached, { + status: 200, + headers: { + 'X-Request-ID': requestId, + 'X-Cache': 'HIT', + 'Cache-Control': 'public, s-maxage=300, stale-while-revalidate=600', }, - }, - ]; + }); + } } - // Category filter - if (category) { - where.category = category; + // Validate pagination parameters + let limit: number; + let offset: number; + try { + const pagination = validatePagination(limitParam, offsetParam); + limit = pagination.limit; + offset = pagination.offset; + } catch (error) { + const validationErrors = JSON.parse(error instanceof Error ? error.message : '[]'); + return createErrorResponse('VALIDATION_ERROR', 'Invalid request parameters', 400, { + validationErrors, + }); } - // Official filter - if (officialParam !== null) { - where.isOfficial = officialParam === 'true'; + // Build filters with validation + let packageFilter: Prisma.PackageWhereInput; + let healthFilters: Prisma.ToolWhereInput[]; + let where: Prisma.ToolWhereInput; + + try { + packageFilter = buildPackageFilter(category, officialParam); + healthFilters = buildHealthFilters(brokenParam, importHealth, executionHealth); + where = buildWhereClause(query, packageFilter, healthFilters); + } catch (error) { + return createErrorResponse( + 'VALIDATION_ERROR', + error instanceof Error ? error.message : 'Invalid filter parameters', + 400 + ); } - // Execute queries - run count separately only if needed for pagination - // For first page, we can skip count if we don't need total pages + // Execute query - fetch tools with package relation + // We fetch limit+1 to check if there are more results (avoid expensive count) const tools = await prisma.tool.findMany({ where, - orderBy: [{ qualityScore: 'desc' }, { npmDownloadsLastMonth: 'desc' }, { createdAt: 'desc' }], + include: { + package: { + select: { + id: true, + npmPackageName: true, + npmVersion: true, + npmDescription: true, + npmRepository: true, + npmHomepage: true, + npmLicense: true, + npmKeywords: true, + npmPublishedAt: true, + category: true, + env: true, + frameworks: true, + tier: true, + isOfficial: true, + npmDownloadsLastMonth: true, + githubStars: true, + // Explicitly exclude npmReadme, npmAuthor, npmMaintainers to reduce payload + }, + }, + }, + orderBy: [ + { qualityScore: 'desc' }, // Tool quality score + { package: { npmDownloadsLastMonth: 'desc' } }, // Package downloads + { createdAt: 'desc' }, // Tool creation time + ], take: limit + 1, // Fetch one extra to check if there are more skip: offset, }); @@ -72,28 +372,54 @@ export async function GET(request: NextRequest) { // Check if there are more results const hasMore = tools.length > limit; const actualTools = hasMore ? tools.slice(0, limit) : tools; + const processingTime = Date.now() - startTime; - return NextResponse.json({ + // Build standardized response + const response: ApiResponse = { success: true, data: actualTools, + meta: { + version: API_VERSION, + timestamp: new Date().toISOString(), + requestId, + }, pagination: { limit, offset, + count: actualTools.length, hasMore, - // Note: total count omitted for performance (can be expensive) - // Only return count if explicitly requested + }, + }; + + // Cache response for non-search queries + if (!query) { + await setCache(cacheKey, response, CACHE_TTL); + } + + return NextResponse.json(response, { + status: 200, + headers: { + 'X-Request-ID': requestId, + 'X-Processing-Time': `${processingTime}ms`, + 'X-Cache': 'MISS', + 'Cache-Control': 'public, s-maxage=300, stale-while-revalidate=600', }, }); } catch (error) { - console.error('Error fetching tools:', error); + console.error('[API Error] /api/tools:', { + error: error instanceof Error ? error.message : 'Unknown error', + stack: error instanceof Error ? error.stack : undefined, + requestId, + }); - return NextResponse.json( + return createErrorResponse( + 'INTERNAL_SERVER_ERROR', + 'An unexpected error occurred while fetching tools', + 500, { - success: false, - error: 'Failed to fetch tools', message: error instanceof Error ? error.message : 'Unknown error', - }, - { status: 500 } + requestId, + } ); } } diff --git a/apps/web/src/app/api/tools/search/route.ts b/apps/web/src/app/api/tools/search/route.ts new file mode 100644 index 0000000..6045e8a --- /dev/null +++ b/apps/web/src/app/api/tools/search/route.ts @@ -0,0 +1,214 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { STRICT_RATE_LIMIT, checkRateLimit } from '~/lib/rate-limit'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; +export const maxDuration = 60; + +// BM25 parameters +const k1 = 1.5; // term frequency saturation parameter +const b = 0.75; // length normalization parameter + +// Split camelCase and PascalCase into words +function splitCamelCase(text: string): string { + return text + .replace(/([a-z])([A-Z])/g, '$1 $2') // camelCase -> camel Case + .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2'); // XMLParser -> XML Parser +} + +// Tokenize text into words (handles camelCase) +function tokenize(text: string): string[] { + return splitCamelCase(text) + .toLowerCase() + .replace(/[^\w\s]/g, ' ') + .split(/\s+/) + .filter((t) => t.length > 0); +} + +// Check for exact tool name match (case-insensitive) +function hasExactNameMatch(query: string, toolName: string): boolean { + const queryLower = query.toLowerCase(); + const nameLower = toolName.toLowerCase(); + return queryLower.includes(nameLower) || nameLower.includes(queryLower); +} + +// Calculate term frequency +function termFrequency(term: string, tokens: string[]): number { + return tokens.filter((t) => t === term).length; +} + +// Calculate BM25 score +function calculateBM25( + query: string, + document: string, + avgDocLength: number, + totalDocs: number, + docFrequencies: Map<string, number> +): number { + const queryTokens = tokenize(query); + const docTokens = tokenize(document); + const docLength = docTokens.length; + + let score = 0; + + for (const term of queryTokens) { + const tf = termFrequency(term, docTokens); + if (tf === 0) continue; + + // IDF calculation + const docFreq = docFrequencies.get(term) || 0; + const idf = Math.log((totalDocs - docFreq + 0.5) / (docFreq + 0.5) + 1); + + // BM25 formula + const numerator = tf * (k1 + 1); + const denominator = tf + k1 * (1 - b + b * (docLength / avgDocLength)); + + score += idf * (numerator / denominator); + } + + return score; +} + +export async function GET(request: NextRequest) { + console.log('🔎 [SEARCH API] Request received'); + + // Check rate limit (stricter limit for expensive search operations) + const rateLimitResponse = checkRateLimit(request, STRICT_RATE_LIMIT); + if (rateLimitResponse) { + return rateLimitResponse; + } + + try { + const { searchParams } = new URL(request.url); + const query = searchParams.get('q') || ''; + const category = searchParams.get('category'); + const limit = Math.min(Number.parseInt(searchParams.get('limit') || '10'), 50); + + // Get recent messages for context (passed as JSON in 'messages' param) + const messagesParam = searchParams.get('messages'); + const recentMessages = messagesParam ? JSON.parse(messagesParam) : []; + + console.log( + `🔎 [SEARCH API] Query: "${query}", Category: ${category}, Limit: ${limit}, Messages: ${recentMessages.length}` + ); + + // Fetch all tools with package info + const tools = await prisma.tool.findMany({ + include: { package: true }, + where: category + ? { + package: { category }, + } + : undefined, + }); + + console.log(`📊 [SEARCH API] Found ${tools.length} tools in database`); + + // Combine query with recent messages for better context + const fullQuery = [query, ...recentMessages].filter(Boolean).join(' '); + console.log(`🔍 [SEARCH API] Full search context: "${fullQuery.slice(0, 100)}..."`); + + // Build all documents first + const documents = tools.map((tool) => ({ + tool, + text: [ + tool.description, + tool.name, + tool.package.npmPackageName, + tool.package.npmDescription || '', + ...(tool.package.npmKeywords || []), + ].join(' '), + })); + + // Calculate document frequencies (IDF) + const docFrequencies = new Map<string, number>(); + const queryTokens = tokenize(fullQuery); + + for (const term of queryTokens) { + let count = 0; + for (const doc of documents) { + const docTokens = tokenize(doc.text); + if (docTokens.includes(term)) { + count++; + } + } + docFrequencies.set(term, count); + } + + // Calculate average document length + const totalTokens = documents.reduce((sum, doc) => sum + tokenize(doc.text).length, 0); + const avgDocLength = totalTokens / documents.length; + + // Calculate BM25 scores + const scoredResults = documents.map(({ tool, text }) => { + const bm25Score = calculateBM25(fullQuery, text, avgDocLength, tools.length, docFrequencies); + const qualityBoost = Number(tool.qualityScore ?? 0) * 0.5; + const downloadBoost = Math.log10((tool.package.npmDownloadsLastMonth || 0) + 1) * 0.1; + + // Massive boost for exact tool name match (when user mentions tool by name) + const exactNameBoost = hasExactNameMatch(query, tool.name) ? 100 : 0; + + const finalScore = bm25Score + qualityBoost + downloadBoost + exactNameBoost; + + return { tool, score: finalScore }; + }); + + // Sort by score and take top N + const topResults = scoredResults + .filter(({ score }) => score > 0) // Only include results with matches + .sort((a, b) => b.score - a.score) + .slice(0, limit + 1); + + const hasMore = topResults.length > limit; + const results = hasMore ? topResults.slice(0, limit) : topResults; + + console.log(`✅ [SEARCH API] Returning ${results.length} results (hasMore: ${hasMore})`); + + // Format response to match existing /api/tools structure + return NextResponse.json({ + success: true, + query, + filters: { category }, + results: { + total: scoredResults.filter(({ score }) => score > 0).length, + returned: results.length, + tools: results.map(({ tool }) => ({ + id: tool.id, + name: tool.name, + description: tool.description, + qualityScore: tool.qualityScore, + importHealth: tool.importHealth, + executionHealth: tool.executionHealth, + healthCheckError: tool.healthCheckError, + lastHealthCheck: tool.lastHealthCheck, + package: { + npmPackageName: tool.package.npmPackageName, + npmVersion: tool.package.npmVersion, + category: tool.package.category, + frameworks: tool.package.frameworks, + env: tool.package.env, + npmRepository: tool.package.npmRepository, + isOfficial: tool.package.isOfficial, + npmDownloadsLastMonth: tool.package.npmDownloadsLastMonth, + }, + importUrl: `https://esm.sh/${tool.package.npmPackageName}@${tool.package.npmVersion}`, + cdnUrl: `https://cdn.jsdelivr.net/npm/${tool.package.npmPackageName}@${tool.package.npmVersion}/+esm`, + })), + }, + pagination: { + limit, + hasMore, + }, + }); + } catch (error) { + console.error('❌ [SEARCH API] Error:', error); + return NextResponse.json( + { + success: false, + error: error instanceof Error ? error.message : 'Search failed', + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/tools/simulations/[...slug]/route.ts b/apps/web/src/app/api/tools/simulations/[...slug]/route.ts new file mode 100644 index 0000000..6117cee --- /dev/null +++ b/apps/web/src/app/api/tools/simulations/[...slug]/route.ts @@ -0,0 +1,70 @@ +/** + * Simulation history endpoint + * Returns recent simulations for a tool with token usage data + */ + +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; + +/** + * GET /api/tools/simulations/[...slug] + * Returns the last 10 simulations for a tool + * + * Slug can be: + * - Tool ID (single slug) + * - Package name + export name (multiple slugs) + */ +export async function GET( + _request: NextRequest, + { params }: { params: Promise<{ slug: string[] }> } +) { + const { slug } = await params; + + try { + let tool; + + if (slug.length === 1) { + // Single slug - treat as tool ID + tool = await prisma.tool.findUnique({ + where: { id: slug[0] || '' }, + select: { id: true }, + }); + } else { + // Multiple slugs - treat as packageName/name + const packageName = decodeURIComponent(slug.slice(0, -1).join('/')); + const name = decodeURIComponent(slug[slug.length - 1] || ''); + + tool = await prisma.tool.findFirst({ + where: { + package: { npmPackageName: packageName }, + name: name, + }, + select: { id: true }, + }); + } + + if (!tool) { + return NextResponse.json({ error: 'Tool not found' }, { status: 404 }); + } + + // Fetch recent simulations with token usage + const simulations = await prisma.simulation.findMany({ + where: { toolId: tool.id }, + include: { + tokenUsage: true, + }, + orderBy: { createdAt: 'desc' }, + take: 10, + }); + + return NextResponse.json({ simulations }); + } catch (error) { + console.error('Simulations endpoint error:', error); + return NextResponse.json( + { + error: error instanceof Error ? error.message : 'Internal server error', + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/tools/update-schema/route.ts b/apps/web/src/app/api/tools/update-schema/route.ts new file mode 100644 index 0000000..4379852 --- /dev/null +++ b/apps/web/src/app/api/tools/update-schema/route.ts @@ -0,0 +1,145 @@ +import { prisma } from '@tpmjs/db'; +import { type NextRequest, NextResponse } from 'next/server'; +import { convertJsonSchemaToParameters } from '~/lib/schema-extraction'; + +export const runtime = 'nodejs'; +export const dynamic = 'force-dynamic'; + +/** + * POST /api/tools/update-schema + * Update a tool's input schema + * + * Called by the executor when it loads a tool and discovers its schema. + * Looks up tool by packageName + name (unique constraint). + * Stores the full JSON Schema and also converts to parameters array for backward compatibility. + * + * Body: + * - packageName: npm package name + * - name: exported function name + * - inputSchema: The JSON Schema for the tool's input parameters + * - description: Optional updated description from the tool + */ +export async function POST(request: NextRequest) { + try { + const body = await request.json(); + const { packageName, name, inputSchema, description } = body; + + if (!packageName || !name) { + return NextResponse.json( + { success: false, error: 'packageName and name are required' }, + { status: 400 } + ); + } + + if (!inputSchema) { + return NextResponse.json( + { success: false, error: 'inputSchema is required' }, + { status: 400 } + ); + } + + console.log('[Update Schema] Looking up tool:', { packageName, name }); + + // Find the tool by package name and name + const tool = await prisma.tool.findFirst({ + where: { + name, + package: { + npmPackageName: packageName, + }, + }, + select: { + id: true, + inputSchema: true, + schemaSource: true, + }, + }); + + if (!tool) { + console.log('[Update Schema] Tool not found:', { packageName, name }); + return NextResponse.json( + { success: false, error: 'Tool not found', updated: false }, + { status: 404 } + ); + } + + // Convert JSON Schema to parameters array for backward compatibility + const parameters = convertJsonSchemaToParameters(inputSchema); + + // Check if schema already matches (avoid unnecessary updates) + const existingSchema = tool.inputSchema as Record<string, unknown> | null; + if ( + existingSchema && + tool.schemaSource === 'extracted' && + JSON.stringify(existingSchema) === JSON.stringify(inputSchema) + ) { + console.log('[Update Schema] Schema already up to date:', { packageName, name }); + return NextResponse.json({ + success: true, + updated: false, + message: 'Schema already up to date', + schemaSource: tool.schemaSource, + }); + } + + // Build update data + const updateData: { + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + inputSchema: any; + // biome-ignore lint/suspicious/noExplicitAny: Prisma Json type compatibility workaround + parameters: any; + schemaSource: string; + schemaExtractedAt: Date; + description?: string; + } = { + inputSchema, + parameters, + schemaSource: 'extracted', + schemaExtractedAt: new Date(), + }; + + if (description) { + updateData.description = description; + } + + const updatedTool = await prisma.tool.update({ + where: { id: tool.id }, + data: updateData, + select: { + id: true, + name: true, + description: true, + parameters: true, + inputSchema: true, + schemaSource: true, + schemaExtractedAt: true, + }, + }); + + console.log('[Update Schema] Tool updated:', { + id: updatedTool.id, + name: updatedTool.name, + parameterCount: parameters.length, + parameterNames: parameters.map((p) => p.name), + schemaSource: updatedTool.schemaSource, + }); + + return NextResponse.json({ + success: true, + updated: true, + schemaSource: updatedTool.schemaSource, + tool: updatedTool, + }); + } catch (error) { + console.error('[Update Schema] Error:', error); + + return NextResponse.json( + { + success: false, + error: 'Failed to update tool schema', + message: error instanceof Error ? error.message : 'Unknown error', + }, + { status: 500 } + ); + } +} diff --git a/apps/web/src/app/api/tools/validate/route.ts b/apps/web/src/app/api/tools/validate/route.ts index 9b101b2..0de221e 100644 --- a/apps/web/src/app/api/tools/validate/route.ts +++ b/apps/web/src/app/api/tools/validate/route.ts @@ -1,5 +1,6 @@ import { validateTpmjsField } from '@tpmjs/types/tpmjs'; import { type NextRequest, NextResponse } from 'next/server'; +import { checkRateLimit } from '~/lib/rate-limit'; export const runtime = 'nodejs'; @@ -16,6 +17,12 @@ export const runtime = 'nodejs'; * - errors: validation errors if invalid */ export async function POST(request: NextRequest) { + // Check rate limit + const rateLimitResponse = checkRateLimit(request); + if (rateLimitResponse) { + return rateLimitResponse; + } + try { const body = await request.json(); diff --git a/apps/web/src/app/changelog/layout.tsx b/apps/web/src/app/changelog/layout.tsx new file mode 100644 index 0000000..2556325 --- /dev/null +++ b/apps/web/src/app/changelog/layout.tsx @@ -0,0 +1,21 @@ +import type { Metadata } from 'next'; + +export const metadata: Metadata = { + title: 'Changelog | TPMJS', + description: + 'Release history for all published TPMJS packages. Track new features, improvements, and bug fixes across our SDK and tools.', + openGraph: { + title: 'TPMJS Changelog', + description: + 'Release history for all published TPMJS packages. Track new features, improvements, and bug fixes across our SDK and tools.', + images: [{ url: '/api/og/changelog', width: 1200, height: 630 }], + }, + twitter: { + card: 'summary_large_image', + images: ['/api/og/changelog'], + }, +}; + +export default function ChangelogLayout({ children }: { children: React.ReactNode }) { + return children; +} diff --git a/apps/web/src/app/changelog/page.tsx b/apps/web/src/app/changelog/page.tsx new file mode 100644 index 0000000..25b6631 --- /dev/null +++ b/apps/web/src/app/changelog/page.tsx @@ -0,0 +1,319 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { AppFooter } from '../../components/AppFooter'; +import { AppHeader } from '../../components/AppHeader'; + +interface ChangelogEntry { + version: string; + type: 'major' | 'minor' | 'patch'; + changes: string[]; +} + +interface PackageChangelog { + name: string; + entries: ChangelogEntry[]; +} + +function parseChangelog(content: string, packageName: string): PackageChangelog { + const entries: ChangelogEntry[] = []; + const lines = content.split('\n'); + + let currentVersion: string | null = null; + let currentType: 'major' | 'minor' | 'patch' | null = null; + let currentChanges: string[] = []; + let currentChangeText = ''; + + for (const line of lines) { + // Match version headers like "## 0.1.3" + const versionMatch = line.match(/^## (\d+\.\d+\.\d+)/); + if (versionMatch) { + // Save previous entry if exists + if (currentVersion && currentType) { + if (currentChangeText.trim()) { + currentChanges.push(currentChangeText.trim()); + } + entries.push({ + version: currentVersion, + type: currentType, + changes: currentChanges, + }); + } + currentVersion = versionMatch[1] ?? null; + currentType = null; + currentChanges = []; + currentChangeText = ''; + continue; + } + + // Match change type headers + if (line.includes('### Major Changes')) { + currentType = 'major'; + continue; + } + if (line.includes('### Minor Changes')) { + currentType = 'minor'; + continue; + } + if (line.includes('### Patch Changes')) { + currentType = 'patch'; + continue; + } + + // Match change items (lines starting with -) + if (line.startsWith('- ') && currentVersion && currentType) { + if (currentChangeText.trim()) { + currentChanges.push(currentChangeText.trim()); + } + currentChangeText = line.slice(2); + continue; + } + + // Continuation of multi-line change + if (currentChangeText && line.trim() && !line.startsWith('#')) { + currentChangeText += `\n${line}`; + } + } + + // Don't forget the last entry + if (currentVersion && currentType) { + if (currentChangeText.trim()) { + currentChanges.push(currentChangeText.trim()); + } + entries.push({ + version: currentVersion, + type: currentType, + changes: currentChanges, + }); + } + + return { name: packageName, entries }; +} + +function getChangelogs(): { sdk: PackageChangelog[]; tools: PackageChangelog[] } { + const monorepoRoot = path.resolve(process.cwd(), '../..'); + + const sdkPackages = [ + { dir: 'packages/ui', name: '@tpmjs/ui' }, + { dir: 'packages/types', name: '@tpmjs/types' }, + { dir: 'packages/utils', name: '@tpmjs/utils' }, + { dir: 'packages/env', name: '@tpmjs/env' }, + ]; + + const toolPackages = [ + { dir: 'packages/tools/registrySearch', name: '@tpmjs/registrySearch' }, + { dir: 'packages/tools/registryExecute', name: '@tpmjs/registryExecute' }, + { dir: 'packages/tools/create-basic-tools', name: '@tpmjs/create-basic-tools' }, + { dir: 'packages/tools/hello', name: '@tpmjs/hello' }, + { dir: 'packages/tools/emoji-magic', name: '@tpmjs/emoji-magic' }, + { dir: 'packages/tools/markdown-formatter', name: '@tpmjs/markdown-formatter' }, + { dir: 'packages/tools/createBlogPost', name: '@tpmjs/createBlogPost' }, + ]; + + const sdk: PackageChangelog[] = []; + const tools: PackageChangelog[] = []; + + for (const pkg of sdkPackages) { + const changelogPath = path.join(monorepoRoot, pkg.dir, 'CHANGELOG.md'); + if (fs.existsSync(changelogPath)) { + const content = fs.readFileSync(changelogPath, 'utf-8'); + const changelog = parseChangelog(content, pkg.name); + if (changelog.entries.length > 0) { + sdk.push(changelog); + } + } + } + + for (const pkg of toolPackages) { + const changelogPath = path.join(monorepoRoot, pkg.dir, 'CHANGELOG.md'); + if (fs.existsSync(changelogPath)) { + const content = fs.readFileSync(changelogPath, 'utf-8'); + const changelog = parseChangelog(content, pkg.name); + if (changelog.entries.length > 0) { + tools.push(changelog); + } + } + } + + return { sdk, tools }; +} + +function VersionBadge({ type }: { type: 'major' | 'minor' | 'patch' }) { + const colors = { + major: 'bg-red-500/20 text-red-400 border-red-500/30', + minor: 'bg-blue-500/20 text-blue-400 border-blue-500/30', + patch: 'bg-emerald-500/20 text-emerald-400 border-emerald-500/30', + }; + + return ( + <span className={`px-2 py-0.5 text-xs font-medium rounded border ${colors[type]}`}>{type}</span> + ); +} + +function ChangelogCard({ changelog }: { changelog: PackageChangelog }) { + const latestVersion = changelog.entries[0]?.version || '0.0.0'; + + return ( + <div className="border border-border-secondary rounded-lg overflow-hidden bg-background-secondary"> + <div className="px-6 py-4 border-b border-border-secondary bg-background-tertiary"> + <div className="flex items-center justify-between"> + <h3 className="text-lg font-semibold text-foreground font-mono">{changelog.name}</h3> + <span className="text-sm text-foreground-secondary font-mono">v{latestVersion}</span> + </div> + </div> + + <div className="divide-y divide-border-secondary"> + {changelog.entries.map((entry) => ( + <div key={entry.version} className="px-6 py-4"> + <div className="flex items-center gap-3 mb-3"> + <span className="font-mono text-foreground font-medium">{entry.version}</span> + <VersionBadge type={entry.type} /> + </div> + + <ul className="space-y-2"> + {entry.changes.map((change, i) => ( + <li + key={`${entry.version}-${i}`} + className="text-sm text-foreground-secondary leading-relaxed" + > + <span className="text-foreground-tertiary mr-2">-</span> + <span className="whitespace-pre-wrap">{change}</span> + </li> + ))} + </ul> + </div> + ))} + </div> + </div> + ); +} + +export default function ChangelogPage() { + const { sdk, tools } = getChangelogs(); + + return ( + <div className="min-h-screen flex flex-col bg-background"> + <AppHeader /> + + <main className="flex-1"> + <div className="max-w-4xl mx-auto px-4 py-16"> + {/* Header */} + <div className="text-center mb-16"> + <h1 className="text-2xl sm:text-3xl md:text-4xl lg:text-5xl font-bold text-foreground mb-4"> + Changelog + </h1> + <p className="text-lg text-foreground-secondary max-w-2xl mx-auto"> + Release history for all published TPMJS packages. Track new features, improvements, + and fixes across our SDK and tools. + </p> + </div> + + {/* Legend */} + <div className="flex flex-col sm:flex-row items-center justify-center gap-3 sm:gap-6 mb-12 p-4 bg-background-secondary rounded-lg border border-border-secondary"> + <div className="flex items-center gap-2"> + <VersionBadge type="major" /> + <span className="text-sm text-foreground-secondary">Breaking changes</span> + </div> + <div className="flex items-center gap-2"> + <VersionBadge type="minor" /> + <span className="text-sm text-foreground-secondary">New features</span> + </div> + <div className="flex items-center gap-2"> + <VersionBadge type="patch" /> + <span className="text-sm text-foreground-secondary">Bug fixes</span> + </div> + </div> + + {/* SDK Packages */} + <section className="mb-16"> + <h2 className="text-2xl font-bold text-foreground mb-6 flex items-center gap-3"> + <span className="w-8 h-8 rounded-lg bg-blue-500/20 flex items-center justify-center"> + <svg + aria-hidden="true" + className="w-4 h-4 text-blue-400" + fill="none" + viewBox="0 0 24 24" + stroke="currentColor" + > + <path + strokeLinecap="round" + strokeLinejoin="round" + strokeWidth={2} + d="M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4" + /> + </svg> + </span> + SDK Packages + </h2> + <p className="text-foreground-secondary mb-6"> + Core packages for building and integrating with TPMJS. + </p> + + <div className="space-y-6"> + {sdk.map((changelog) => ( + <ChangelogCard key={changelog.name} changelog={changelog} /> + ))} + </div> + </section> + + {/* Tool Packages */} + <section> + <h2 className="text-2xl font-bold text-foreground mb-6 flex items-center gap-3"> + <span className="w-8 h-8 rounded-lg bg-emerald-500/20 flex items-center justify-center"> + <svg + aria-hidden="true" + className="w-4 h-4 text-emerald-400" + fill="none" + viewBox="0 0 24 24" + stroke="currentColor" + > + <path + strokeLinecap="round" + strokeLinejoin="round" + strokeWidth={2} + d="M11 4a2 2 0 114 0v1a1 1 0 001 1h3a1 1 0 011 1v3a1 1 0 01-1 1h-1a2 2 0 100 4h1a1 1 0 011 1v3a1 1 0 01-1 1h-3a1 1 0 01-1-1v-1a2 2 0 10-4 0v1a1 1 0 01-1 1H7a1 1 0 01-1-1v-3a1 1 0 00-1-1H4a2 2 0 110-4h1a1 1 0 001-1V7a1 1 0 011-1h3a1 1 0 001-1V4z" + /> + </svg> + </span> + Tool Packages + </h2> + <p className="text-foreground-secondary mb-6"> + Official TPMJS tools available on npm. These serve as examples and utilities for the + registry. + </p> + + <div className="space-y-6"> + {tools.map((changelog) => ( + <ChangelogCard key={changelog.name} changelog={changelog} /> + ))} + </div> + </section> + + {/* CTA */} + <div className="mt-16 text-center p-8 bg-background-secondary rounded-lg border border-border-secondary"> + <h3 className="text-xl font-semibold text-foreground mb-2">Stay Updated</h3> + <p className="text-foreground-secondary mb-4"> + Follow the repository for the latest updates and releases. + </p> + <a + href="https://github.com/tpmjs/tpmjs" + target="_blank" + rel="noopener noreferrer" + className="inline-flex items-center gap-2 px-4 py-2 bg-foreground text-background rounded-lg font-medium hover:bg-foreground/90 transition-colors" + > + <svg aria-hidden="true" className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"> + <path + fillRule="evenodd" + d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" + clipRule="evenodd" + /> + </svg> + View on GitHub + </a> + </div> + </div> + </main> + + <AppFooter /> + </div> + ); +} diff --git a/apps/web/src/app/docs/layout.tsx b/apps/web/src/app/docs/layout.tsx new file mode 100644 index 0000000..f3478e1 --- /dev/null +++ b/apps/web/src/app/docs/layout.tsx @@ -0,0 +1,21 @@ +import type { Metadata } from 'next'; + +export const metadata: Metadata = { + title: 'Documentation | TPMJS', + description: + 'Complete documentation for TPMJS - the registry for AI tools. Learn how to use the SDK, API, and publish your own tools.', + openGraph: { + title: 'TPMJS Documentation', + description: + 'Complete documentation for TPMJS - the registry for AI tools. Learn how to use the SDK, API, and publish your own tools.', + images: [{ url: '/api/og/docs', width: 1200, height: 630 }], + }, + twitter: { + card: 'summary_large_image', + images: ['/api/og/docs'], + }, +}; + +export default function DocsLayout({ children }: { children: React.ReactNode }) { + return children; +} diff --git a/apps/web/src/app/docs/page.tsx b/apps/web/src/app/docs/page.tsx new file mode 100644 index 0000000..87904a2 --- /dev/null +++ b/apps/web/src/app/docs/page.tsx @@ -0,0 +1,1219 @@ +'use client'; + +import { TPMJS_CATEGORIES } from '@tpmjs/types/tpmjs'; +import { Badge } from '@tpmjs/ui/Badge/Badge'; +import { Button } from '@tpmjs/ui/Button/Button'; +import { CodeBlock } from '@tpmjs/ui/CodeBlock/CodeBlock'; +import Link from 'next/link'; +import { useEffect, useState } from 'react'; +import { AppHeader } from '~/components/AppHeader'; + +const NAV_SECTIONS = [ + { + title: 'Getting Started', + items: [ + { id: 'introduction', label: 'Introduction' }, + { id: 'quickstart', label: 'Quick Start' }, + { id: 'core-concepts', label: 'Core Concepts' }, + ], + }, + { + title: 'SDK Reference', + items: [ + { id: 'installation', label: 'Installation' }, + { id: 'registry-search', label: 'registrySearchTool' }, + { id: 'registry-execute', label: 'registryExecuteTool' }, + { id: 'passing-api-keys', label: 'Passing API Keys' }, + ], + }, + { + title: 'API Reference', + items: [ + { id: 'api-overview', label: 'Overview' }, + { id: 'api-tools', label: 'GET /api/tools' }, + { id: 'api-tools-search', label: 'GET /api/tools/search' }, + { id: 'api-tool-detail', label: 'GET /api/tools/[id]' }, + { id: 'api-execute', label: 'POST /api/tools/execute' }, + ], + }, + { + title: 'Publishing Tools', + items: [ + { id: 'publish-overview', label: 'Overview' }, + { id: 'tpmjs-spec', label: 'TPMJS Specification' }, + { id: 'metadata-tiers', label: 'Metadata Tiers' }, + { id: 'quality-score', label: 'Quality Score' }, + ], + }, + { + title: 'Advanced', + items: [ + { id: 'override-execute', label: 'Override Execute' }, + { id: 'custom-wrappers', label: 'Custom Wrappers' }, + { id: 'self-hosting', label: 'Self-Hosting' }, + { id: 'security', label: 'Security' }, + ], + }, + { + title: 'Resources', + items: [ + { id: 'faq', label: 'FAQ' }, + { id: 'troubleshooting', label: 'Troubleshooting' }, + { id: 'changelog', label: 'Changelog' }, + ], + }, +]; + +function SidebarNav({ + activeSection, + onSectionClick, +}: { + activeSection: string; + onSectionClick: (id: string) => void; +}) { + return ( + <nav className="space-y-6"> + {NAV_SECTIONS.map((section) => ( + <div key={section.title}> + <h3 className="text-xs font-semibold uppercase tracking-wider text-foreground-tertiary mb-2"> + {section.title} + </h3> + <ul className="space-y-1"> + {section.items.map((item) => ( + <li key={item.id}> + <button + type="button" + onClick={() => onSectionClick(item.id)} + className={`block w-full text-left px-3 py-1.5 text-sm rounded-md transition-colors ${ + activeSection === item.id + ? 'bg-primary/10 text-primary font-medium' + : 'text-foreground-secondary hover:text-foreground hover:bg-surface-elevated' + }`} + > + {item.label} + </button> + </li> + ))} + </ul> + </div> + ))} + </nav> + ); +} + +function DocSection({ + id, + title, + children, +}: { + id: string; + title: string; + children: React.ReactNode; +}) { + return ( + <section id={id} className="scroll-mt-24 mb-16"> + <h2 className="text-2xl font-bold mb-6 text-foreground pb-3 border-b border-border"> + {title} + </h2> + {children} + </section> + ); +} + +function DocSubSection({ title, children }: { title: string; children: React.ReactNode }) { + return ( + <div className="mb-8"> + <h3 className="text-lg font-semibold mb-4 text-foreground">{title}</h3> + {children} + </div> + ); +} + +function ParamTable({ + params, +}: { + params: { name: string; type: string; required: boolean; description: string }[]; +}) { + return ( + <div className="overflow-x-auto border border-border rounded-lg"> + <table className="w-full text-sm"> + <thead> + <tr className="border-b border-border bg-surface"> + <th className="text-left py-3 px-4 text-foreground font-medium">Parameter</th> + <th className="text-left py-3 px-4 text-foreground font-medium">Type</th> + <th className="text-left py-3 px-4 text-foreground font-medium">Required</th> + <th className="text-left py-3 px-4 text-foreground font-medium">Description</th> + </tr> + </thead> + <tbody> + {params.map((param, i) => ( + <tr + key={param.name} + className={i !== params.length - 1 ? 'border-b border-border' : ''} + > + <td className="py-3 px-4 font-mono text-primary">{param.name}</td> + <td className="py-3 px-4 font-mono text-foreground-secondary">{param.type}</td> + <td className="py-3 px-4"> + {param.required ? ( + <Badge variant="default" size="sm"> + Yes + </Badge> + ) : ( + <span className="text-foreground-tertiary">No</span> + )} + </td> + <td className="py-3 px-4 text-foreground-secondary">{param.description}</td> + </tr> + ))} + </tbody> + </table> + </div> + ); +} + +function InfoCard({ + icon, + title, + children, +}: { + icon: string; + title: string; + children: React.ReactNode; +}) { + return ( + <div className="p-5 border border-border rounded-lg bg-surface"> + <div className="flex items-start gap-3"> + <span className="text-2xl flex-shrink-0">{icon}</span> + <div> + <h4 className="font-semibold text-foreground mb-1">{title}</h4> + <p className="text-sm text-foreground-secondary">{children}</p> + </div> + </div> + </div> + ); +} + +export default function DocsPage(): React.ReactElement { + const [activeSection, setActiveSection] = useState('introduction'); + const [mobileNavOpen, setMobileNavOpen] = useState(false); + + useEffect(() => { + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + setActiveSection(entry.target.id); + } + }); + }, + { rootMargin: '-100px 0px -66%' } + ); + + NAV_SECTIONS.forEach((section) => { + section.items.forEach((item) => { + const element = document.getElementById(item.id); + if (element) observer.observe(element); + }); + }); + + return () => observer.disconnect(); + }, []); + + const scrollToSection = (id: string) => { + const element = document.getElementById(id); + if (element) { + element.scrollIntoView({ behavior: 'smooth' }); + setMobileNavOpen(false); + } + }; + + return ( + <div className="min-h-screen flex flex-col bg-background"> + <AppHeader /> + + <div className="flex-1 flex flex-col lg:flex-row"> + {/* Mobile Navigation Toggle */} + <div className="lg:hidden sticky top-0 z-30 bg-background border-b border-border px-4 py-3"> + <button + type="button" + onClick={() => setMobileNavOpen(!mobileNavOpen)} + className="flex items-center gap-2 text-sm font-medium text-foreground" + > + <span className="text-lg">{mobileNavOpen ? '✕' : '☰'}</span> + <span>Documentation Menu</span> + </button> + {/* Mobile Nav Dropdown */} + {mobileNavOpen && ( + <div className="absolute left-0 right-0 top-full bg-background border-b border-border shadow-lg max-h-[70vh] overflow-y-auto px-4 py-4"> + <SidebarNav activeSection={activeSection} onSectionClick={scrollToSection} /> + </div> + )} + </div> + + {/* Desktop Sidebar */} + <aside className="hidden lg:block w-64 flex-shrink-0 border-r border-border bg-surface/50"> + <div className="sticky top-0 h-screen overflow-y-auto py-8 px-4"> + <div className="mb-6"> + <h2 className="text-lg font-bold text-foreground">Documentation</h2> + <p className="text-sm text-foreground-tertiary">v1.0.0</p> + </div> + <SidebarNav activeSection={activeSection} onSectionClick={scrollToSection} /> + </div> + </aside> + + {/* Main Content */} + <main className="flex-1 min-w-0"> + <div className="max-w-4xl mx-auto px-4 sm:px-6 py-8 sm:py-12"> + {/* Hero */} + <div className="mb-12"> + <h1 className="text-2xl sm:text-3xl md:text-4xl font-bold mb-4 text-foreground"> + TPMJS Documentation + </h1> + <p className="text-xl text-foreground-secondary mb-6"> + The complete guide to using TPMJS - the registry for AI tools. + </p> + <div className="flex flex-wrap gap-3"> + <a + href="https://www.npmjs.com/package/@tpmjs/registry-search" + target="_blank" + rel="noopener noreferrer" + > + <Button variant="default" size="sm"> + Get Started + </Button> + </a> + <a href="https://github.com/tpmjs/tpmjs" target="_blank" rel="noopener noreferrer"> + <Button variant="outline" size="sm"> + View on GitHub + </Button> + </a> + <a href="https://playground.tpmjs.com" target="_blank" rel="noopener noreferrer"> + <Button variant="outline" size="sm"> + Try Playground + </Button> + </a> + </div> + </div> + + {/* ==================== GETTING STARTED ==================== */} + <DocSection id="introduction" title="Introduction"> + <p className="text-foreground-secondary mb-6"> + TPMJS (Tool Package Manager for JavaScript) is a registry and execution platform for + AI tools. It enables AI agents to dynamically discover, load, and execute tools from + npm packages at runtime. + </p> + <div className="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6"> + <InfoCard icon="🔍" title="Discover"> + Search thousands of AI tools from the npm ecosystem + </InfoCard> + <InfoCard icon="⚡" title="Execute"> + Run any tool in a secure sandbox - no installation needed + </InfoCard> + <InfoCard icon="📦" title="Publish"> + Share your tools with the AI community via npm + </InfoCard> + </div> + <p className="text-foreground-secondary"> + TPMJS works with{' '} + <a + href="https://sdk.vercel.ai" + target="_blank" + rel="noopener noreferrer" + className="text-primary hover:underline" + > + Vercel AI SDK + </a> + , LangChain, LlamaIndex, and any framework that supports the AI SDK tool format. + </p> + </DocSection> + + <DocSection id="quickstart" title="Quick Start"> + <p className="text-foreground-secondary mb-6"> + Get up and running with TPMJS in under 2 minutes. + </p> + <DocSubSection title="1. Install the SDK packages"> + <CodeBlock + language="bash" + code="npm install @tpmjs/registry-search @tpmjs/registry-execute" + /> + </DocSubSection> + <DocSubSection title="2. Add to your agent"> + <CodeBlock + language="typescript" + code={`import { streamText } from 'ai'; +import { anthropic } from '@ai-sdk/anthropic'; +import { registrySearchTool } from '@tpmjs/registry-search'; +import { registryExecuteTool } from '@tpmjs/registry-execute'; + +const result = await streamText({ + model: anthropic('claude-sonnet-4-20250514'), + tools: { + registrySearch: registrySearchTool, + registryExecute: registryExecuteTool, + }, + system: \`You have access to thousands of tools via the TPMJS registry. +Use registrySearch to find tools, then registryExecute to run them.\`, + prompt: 'Search for web scraping tools and scrape example.com', +});`} + /> + </DocSubSection> + <DocSubSection title="3. That's it!"> + <p className="text-foreground-secondary"> + Your agent can now discover and execute any tool from the TPMJS registry. The + agent will automatically search for relevant tools and execute them as needed. + </p> + </DocSubSection> + </DocSection> + + <DocSection id="core-concepts" title="Core Concepts"> + <div className="space-y-6"> + <DocSubSection title="Tool Discovery"> + <p className="text-foreground-secondary mb-4"> + TPMJS automatically discovers tools from npm packages that have the{' '} + <code className="text-primary bg-surface px-1.5 py-0.5 rounded">tpmjs</code>{' '} + keyword. Tools are indexed every 2-15 minutes. + </p> + </DocSubSection> + <DocSubSection title="Sandboxed Execution"> + <p className="text-foreground-secondary mb-4"> + All tools run in an isolated Deno runtime on Railway. They cannot access your + local filesystem or environment. API keys are passed per-request and never + stored. + </p> + </DocSubSection> + <DocSubSection title="Quality Scoring"> + <p className="text-foreground-secondary mb-4"> + Every tool receives a quality score (0.00-1.00) based on metadata completeness, + npm downloads, and GitHub stars. Higher scores mean better visibility in search + results. + </p> + </DocSubSection> + <DocSubSection title="Health Monitoring"> + <p className="text-foreground-secondary"> + Tools are continuously health-checked to ensure they can be imported and + executed. Broken tools are flagged and can be filtered from search results. + </p> + </DocSubSection> + </div> + </DocSection> + + {/* ==================== SDK REFERENCE ==================== */} + <DocSection id="installation" title="Installation"> + <p className="text-foreground-secondary mb-6"> + Install the TPMJS SDK packages to give your AI agent access to the tool registry. + </p> + <div className="space-y-4"> + <CodeBlock + language="bash" + code="npm install @tpmjs/registry-search @tpmjs/registry-execute" + /> + <CodeBlock + language="bash" + code="pnpm add @tpmjs/registry-search @tpmjs/registry-execute" + /> + <CodeBlock + language="bash" + code="yarn add @tpmjs/registry-search @tpmjs/registry-execute" + /> + </div> + <div className="mt-6 p-4 border border-border rounded-lg bg-surface"> + <p className="text-sm text-foreground-secondary"> + <strong className="text-foreground">Peer Dependencies:</strong> Both packages + require <code className="text-primary">ai</code> and{' '} + <code className="text-primary">zod</code> as peer dependencies. Make sure you have + them installed. + </p> + </div> + </DocSection> + + <DocSection id="registry-search" title="registrySearchTool"> + <p className="text-foreground-secondary mb-6"> + Search the TPMJS registry to find tools for any task. Returns metadata including the{' '} + <code className="text-primary">toolId</code> needed for execution. + </p> + <DocSubSection title="Import"> + <CodeBlock + language="typescript" + code={`import { registrySearchTool } from '@tpmjs/registry-search';`} + /> + </DocSubSection> + <DocSubSection title="Parameters"> + <ParamTable + params={[ + { + name: 'query', + type: 'string', + required: true, + description: 'Search query (keywords, tool names, descriptions)', + }, + { + name: 'category', + type: 'string', + required: false, + description: 'Filter by category', + }, + { + name: 'limit', + type: 'number', + required: false, + description: 'Max results (1-20, default 5)', + }, + ]} + /> + </DocSubSection> + <DocSubSection title="Return Value"> + <CodeBlock + language="json" + code={`{ + "query": "web scraping", + "matchCount": 3, + "tools": [ + { + "toolId": "@firecrawl/ai-sdk::scrapeTool", + "name": "scrapeTool", + "package": "@firecrawl/ai-sdk", + "description": "Scrape any website into clean markdown", + "category": "web-scraping", + "requiredEnvVars": ["FIRECRAWL_API_KEY"], + "healthStatus": "HEALTHY", + "qualityScore": 0.9 + } + ] +}`} + /> + </DocSubSection> + <DocSubSection title="Available Categories"> + <div className="flex flex-wrap gap-2"> + {TPMJS_CATEGORIES.map((cat) => ( + <Badge key={cat} variant="secondary" size="sm"> + {cat} + </Badge> + ))} + </div> + </DocSubSection> + </DocSection> + + <DocSection id="registry-execute" title="registryExecuteTool"> + <p className="text-foreground-secondary mb-6"> + Execute any tool from the registry by its{' '} + <code className="text-primary">toolId</code>. Tools run in a secure sandbox—no local + installation required. + </p> + <DocSubSection title="Import"> + <CodeBlock + language="typescript" + code={`import { registryExecuteTool } from '@tpmjs/registry-execute';`} + /> + </DocSubSection> + <DocSubSection title="Parameters"> + <ParamTable + params={[ + { + name: 'toolId', + type: 'string', + required: true, + description: 'Tool identifier (format: package::name)', + }, + { + name: 'params', + type: 'object', + required: true, + description: 'Parameters to pass to the tool', + }, + { + name: 'env', + type: 'object', + required: false, + description: 'Environment variables (API keys)', + }, + ]} + /> + </DocSubSection> + <DocSubSection title="Example"> + <CodeBlock + language="typescript" + code={`// Execute a web search tool +const result = await registryExecuteTool.execute({ + toolId: '@exalabs/ai-sdk::webSearch', + params: { query: 'latest AI news' }, + env: { EXA_API_KEY: 'your-api-key' }, +}); + +// Result: +// { +// toolId: '@exalabs/ai-sdk::webSearch', +// executionTimeMs: 1234, +// output: { results: [...] } +// }`} + /> + </DocSubSection> + </DocSection> + + <DocSection id="passing-api-keys" title="Passing API Keys"> + <p className="text-foreground-secondary mb-6"> + Many tools require API keys (e.g., Firecrawl, Exa). The recommended approach is to + wrap <code className="text-primary">registryExecuteTool</code> with your + pre-configured keys. + </p> + <DocSubSection title="Create a Wrapper"> + <CodeBlock + language="typescript" + code={`import { tool } from 'ai'; +import { registryExecuteTool } from '@tpmjs/registry-execute'; + +// Pre-configure your API keys +const API_KEYS: Record<string, string> = { + FIRECRAWL_API_KEY: process.env.FIRECRAWL_API_KEY!, + EXA_API_KEY: process.env.EXA_API_KEY!, +}; + +// Create a wrapped version that auto-injects keys +export const registryExecute = tool({ + description: registryExecuteTool.description, + parameters: registryExecuteTool.parameters, + execute: async ({ toolId, params }) => { + return registryExecuteTool.execute({ toolId, params, env: API_KEYS }); + }, +});`} + /> + </DocSubSection> + <DocSubSection title="Use the Wrapped Tool"> + <CodeBlock + language="typescript" + code={`import { streamText } from 'ai'; +import { registrySearchTool } from '@tpmjs/registry-search'; +import { registryExecute } from './tools'; // Your wrapped version + +const result = streamText({ + model: anthropic('claude-sonnet-4-20250514'), + tools: { + registrySearch: registrySearchTool, + registryExecute, // Keys are auto-injected + }, + prompt: 'Scrape https://example.com and summarize the content', +});`} + /> + </DocSubSection> + </DocSection> + + {/* ==================== API REFERENCE ==================== */} + <DocSection id="api-overview" title="API Overview"> + <p className="text-foreground-secondary mb-6"> + The TPMJS API is a REST API that provides access to the tool registry. All endpoints + return JSON and are publicly accessible without authentication. + </p> + <div className="p-4 border border-border rounded-lg bg-surface"> + <p className="text-sm text-foreground-secondary"> + <strong className="text-foreground">Base URL:</strong>{' '} + <code className="text-primary">https://tpmjs.com/api</code> + </p> + </div> + </DocSection> + + <DocSection id="api-tools" title="GET /api/tools"> + <p className="text-foreground-secondary mb-6"> + List all tools with optional filtering and pagination. + </p> + <DocSubSection title="Query Parameters"> + <ParamTable + params={[ + { + name: 'q', + type: 'string', + required: false, + description: 'Search query', + }, + { + name: 'category', + type: 'string', + required: false, + description: 'Filter by category', + }, + { + name: 'official', + type: 'boolean', + required: false, + description: 'Filter to official tools only', + }, + { + name: 'limit', + type: 'number', + required: false, + description: 'Max results (default 20, max 50)', + }, + { + name: 'offset', + type: 'number', + required: false, + description: 'Pagination offset', + }, + ]} + /> + </DocSubSection> + <DocSubSection title="Example Request"> + <CodeBlock + language="bash" + code="curl https://tpmjs.com/api/tools?q=web+scraping&limit=5" + /> + </DocSubSection> + </DocSection> + + <DocSection id="api-tools-search" title="GET /api/tools/search"> + <p className="text-foreground-secondary mb-6"> + BM25-ranked search optimized for AI agent tool discovery. + </p> + <DocSubSection title="Query Parameters"> + <ParamTable + params={[ + { + name: 'q', + type: 'string', + required: true, + description: 'Search query', + }, + { + name: 'limit', + type: 'number', + required: false, + description: 'Max results (default 5, max 20)', + }, + ]} + /> + </DocSubSection> + </DocSection> + + <DocSection id="api-tool-detail" title="GET /api/tools/[id]"> + <p className="text-foreground-secondary mb-6"> + Get detailed information about a specific tool. + </p> + <DocSubSection title="Path Parameters"> + <ParamTable + params={[ + { + name: 'id', + type: 'string', + required: true, + description: 'Tool ID (npm package name)', + }, + ]} + /> + </DocSubSection> + <DocSubSection title="Example Request"> + <CodeBlock language="bash" code="curl https://tpmjs.com/api/tools/@tpmjs/hello" /> + </DocSubSection> + </DocSection> + + <DocSection id="api-execute" title="POST /api/tools/execute/[...slug]"> + <p className="text-foreground-secondary mb-6"> + Execute a tool with an AI agent and receive streaming results via Server-Sent Events + (SSE). This endpoint allows you to run any TPMJS tool remotely without installing + it. + </p> + <DocSubSection title="URL Formats"> + <div className="space-y-2 text-foreground-secondary text-sm mb-4"> + <p> + <strong className="text-foreground">By tool ID:</strong>{' '} + <code className="text-primary">/api/tools/execute/clx123abc</code> + </p> + <p> + <strong className="text-foreground">By package and export:</strong>{' '} + <code className="text-primary"> + /api/tools/execute/@tpmjs/hello/helloWorldTool + </code> + </p> + </div> + </DocSubSection> + <DocSubSection title="Request Body"> + <ParamTable + params={[ + { + name: 'prompt', + type: 'string', + required: true, + description: 'Natural language prompt for the AI agent (max 2000 chars)', + }, + { + name: 'parameters', + type: 'object', + required: false, + description: 'Optional tool parameters to pass directly', + }, + ]} + /> + </DocSubSection> + <DocSubSection title="SSE Events"> + <div className="space-y-4"> + <div className="p-3 border border-border rounded-lg bg-surface"> + <code className="text-primary font-mono">chunk</code> + <p className="text-sm text-foreground-secondary mt-1"> + Streaming text chunks from the AI agent response + </p> + </div> + <div className="p-3 border border-border rounded-lg bg-surface"> + <code className="text-primary font-mono">tokens</code> + <p className="text-sm text-foreground-secondary mt-1"> + Token usage updates during execution + </p> + </div> + <div className="p-3 border border-border rounded-lg bg-surface"> + <code className="text-primary font-mono">complete</code> + <p className="text-sm text-foreground-secondary mt-1"> + Final result with output, token breakdown, and execution time + </p> + </div> + <div className="p-3 border border-border rounded-lg bg-surface"> + <code className="text-primary font-mono">error</code> + <p className="text-sm text-foreground-secondary mt-1"> + Error message if execution fails + </p> + </div> + </div> + </DocSubSection> + <DocSubSection title="Example Request"> + <CodeBlock + language="bash" + code={`curl -X POST https://tpmjs.com/api/tools/execute/@tpmjs/hello/helloWorldTool \\ + -H "Content-Type: application/json" \\ + -d '{"prompt": "Say hello to the world"}'`} + /> + </DocSubSection> + <DocSubSection title="JavaScript Example"> + <CodeBlock + language="typescript" + code={`const response = await fetch( + 'https://tpmjs.com/api/tools/execute/@tpmjs/hello/helloWorldTool', + { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ prompt: 'Say hello to the world' }), + } +); + +const reader = response.body?.getReader(); +const decoder = new TextDecoder(); + +while (true) { + const { done, value } = await reader.read(); + if (done) break; + + const chunk = decoder.decode(value); + const lines = chunk.split('\\n'); + + for (const line of lines) { + if (line.startsWith('event: ')) { + const event = line.slice(7); + console.log('Event:', event); + } + if (line.startsWith('data: ')) { + const data = JSON.parse(line.slice(6)); + console.log('Data:', data); + } + } +}`} + /> + </DocSubSection> + <DocSubSection title="Rate Limiting"> + <InfoCard icon="clock" title="Rate Limits"> + The execute endpoint is rate limited to 10 requests per minute per IP address. + Rate limit headers are included in the response: + <code className="block mt-2 text-sm">X-RateLimit-Limit: 10</code> + <code className="block text-sm">X-RateLimit-Remaining: 9</code> + </InfoCard> + </DocSubSection> + </DocSection> + + {/* ==================== PUBLISHING TOOLS ==================== */} + <DocSection id="publish-overview" title="Publishing Overview"> + <p className="text-foreground-secondary mb-6"> + Publishing a tool to TPMJS is as simple as publishing to npm with standardized + metadata. + </p> + <div className="grid grid-cols-2 md:grid-cols-4 gap-4 mb-8"> + {[ + { step: '1', label: 'Add tpmjs keyword' }, + { step: '2', label: 'Add tpmjs field' }, + { step: '3', label: 'Publish to npm' }, + { step: '4', label: 'Live in 15 minutes!' }, + ].map((item) => ( + <div + key={item.step} + className="p-4 border border-border rounded-lg bg-surface text-center" + > + <div className="text-2xl font-bold text-primary mb-2">{item.step}</div> + <p className="text-sm text-foreground-secondary">{item.label}</p> + </div> + ))} + </div> + <div className="flex gap-4"> + <Link href="/publish"> + <Button variant="default">View Publishing Guide</Button> + </Link> + <a + href="https://github.com/tpmjs/tpmjs/tree/main/packages/tools/create-basic-tools" + target="_blank" + rel="noopener noreferrer" + > + <Button variant="outline">Use Generator CLI</Button> + </a> + </div> + </DocSection> + + <DocSection id="tpmjs-spec" title="TPMJS Specification"> + <p className="text-foreground-secondary mb-6"> + The <code className="text-primary">tpmjs</code> field in package.json describes your + tool. TPMJS automatically extracts parameter schemas from your tool code, so you + only need to provide basic metadata. + </p> + <div className="p-4 border border-primary/30 rounded-lg bg-primary/5 mb-6"> + <p className="text-sm text-foreground-secondary"> + <strong className="text-foreground">✨ Auto Schema Extraction:</strong> Parameters + are automatically extracted from your tool's Zod inputSchema - no need to + document them manually! + </p> + </div> + <CodeBlock + language="json" + code={`{ + "name": "@yourname/my-tool", + "version": "1.0.0", + "keywords": ["tpmjs"], + "tpmjs": { + "category": "text-analysis", + "frameworks": ["vercel-ai"], + "tools": [ + { + "name": "myTool", + "description": "What your tool does (20-500 chars)" + } + ] + } +}`} + /> + <div className="mt-6 p-4 border border-primary/30 rounded-lg bg-primary/5"> + <p className="text-sm text-foreground-secondary"> + <strong className="text-foreground">🔍 Auto-Discovery:</strong> The{' '} + <code className="text-primary">tools</code> array is optional! If you omit it, + TPMJS will automatically discover all exported tools from your package. Each + export that has a <code className="text-primary">description</code> and{' '} + <code className="text-primary">execute</code> property is treated as a valid tool. + </p> + </div> + <div className="mt-6"> + <Link href="/spec"> + <Button variant="outline">View Full Specification</Button> + </Link> + </div> + </DocSection> + + <DocSection id="metadata-tiers" title="Metadata Fields"> + <p className="text-foreground-secondary mb-6"> + TPMJS auto-extracts parameter schemas and can auto-discover your tools, simplifying + what you need to provide. + </p> + <div className="space-y-4"> + <div className="p-4 border border-border rounded-lg bg-surface"> + <div className="flex items-center gap-2 mb-2"> + <Badge variant="default">Required</Badge> + </div> + <p className="text-sm text-foreground-secondary"> + <code className="text-primary">category</code> - The only truly required field! + </p> + </div> + <div className="p-4 border border-border rounded-lg bg-surface"> + <div className="flex items-center gap-2 mb-2"> + <Badge variant="success">Optional</Badge> + </div> + <p className="text-sm text-foreground-secondary"> + <code className="text-primary">tools</code> (auto-discovered if omitted),{' '} + <code className="text-primary">env</code> (API keys),{' '} + <code className="text-primary">frameworks</code> (compatibility) + </p> + </div> + <div className="p-4 border border-border rounded-lg bg-surface"> + <div className="flex items-center gap-2 mb-2"> + <Badge variant="outline">Auto-extracted</Badge> + </div> + <p className="text-sm text-foreground-secondary"> + <code className="text-primary">description</code>,{' '} + <code className="text-primary">parameters</code> - extracted from your tool code + </p> + </div> + <div className="p-4 border border-border rounded-lg bg-surface"> + <div className="flex items-center gap-2 mb-2"> + <Badge variant="warning">Auto-discovered</Badge> + </div> + <p className="text-sm text-foreground-secondary"> + If you omit <code className="text-primary">tools</code>, TPMJS scans your + package exports and registers any export with{' '} + <code className="text-primary">description</code> +{' '} + <code className="text-primary">execute</code> properties as a tool. + </p> + </div> + </div> + </DocSection> + + <DocSection id="quality-score" title="Quality Score"> + <p className="text-foreground-secondary mb-6"> + Every tool receives a quality score (0.00-1.00) that affects search ranking. + </p> + <CodeBlock + language="typescript" + code={`function calculateQualityScore(params: { + tier: 'minimal' | 'basic' | 'rich'; + downloads: number; + githubStars: number; +}): number { + const tierScore = tier === 'rich' ? 0.6 : tier === 'basic' ? 0.4 : 0.2; + const downloadsScore = Math.min(0.3, Math.log10(downloads + 1) / 10); + const starsScore = Math.min(0.1, Math.log10(githubStars + 1) / 10); + + return Math.min(1.0, tierScore + downloadsScore + starsScore); +}`} + /> + </DocSection> + + {/* ==================== ADVANCED ==================== */} + <DocSection id="override-execute" title="Override Execute"> + <p className="text-foreground-secondary mb-6"> + When you import a tool from npm, you can override its{' '} + <code className="text-primary">execute</code> function before passing it to your AI + agent. + </p> + <DocSubSection title="Simple Override"> + <CodeBlock + language="typescript" + code={`import { someTool } from '@tpmjs/some-tool'; + +const myTool = { + ...someTool, + execute: async (args, options) => { + console.log('Custom execution with args:', args); + // Your completely custom implementation + return { result: 'my custom result' }; + }, +};`} + /> + </DocSubSection> + <DocSubSection title="Wrap with Logging"> + <CodeBlock + language="typescript" + code={`const wrappedTool = { + ...someTool, + execute: async (args, options) => { + console.log(\`[\${new Date().toISOString()}] Calling tool with:\`, args); + const start = Date.now(); + const result = await someTool.execute(args, options); + console.log(\`[\${Date.now() - start}ms] Tool returned:\`, result); + return result; + }, +};`} + /> + </DocSubSection> + </DocSection> + + <DocSection id="custom-wrappers" title="Custom Wrappers"> + <p className="text-foreground-secondary mb-6"> + Create reusable wrapper functions for common patterns like caching, retries, and + rate limiting. + </p> + <DocSubSection title="Wrapper Factory"> + <CodeBlock + language="typescript" + code={`function wrapTool<T, R>( + tool: { description: string; parameters: any; execute: (args: T, opts: any) => Promise<R> }, + options: { + before?: (args: T) => T | Promise<T>; + after?: (result: R) => R | Promise<R>; + timeout?: number; + retries?: number; + } = {} +) { + return { + ...tool, + execute: async (args: T, execOptions: any): Promise<R> => { + let processedArgs = options.before ? await options.before(args) : args; + + let lastError: Error | undefined; + const maxAttempts = (options.retries ?? 0) + 1; + + for (let attempt = 1; attempt <= maxAttempts; attempt++) { + try { + let result = await tool.execute(processedArgs, execOptions); + if (options.after) result = await options.after(result); + return result; + } catch (error) { + lastError = error as Error; + if (attempt < maxAttempts) { + await new Promise(r => setTimeout(r, Math.pow(2, attempt) * 100)); + } + } + } + throw lastError; + }, + }; +}`} + /> + </DocSubSection> + </DocSection> + + <DocSection id="self-hosting" title="Self-Hosting"> + <p className="text-foreground-secondary mb-6"> + Both SDK packages support self-hosted registries via environment variables. + </p> + <ParamTable + params={[ + { + name: 'TPMJS_API_URL', + type: 'string', + required: false, + description: 'Base URL for registry API (default: https://tpmjs.com)', + }, + { + name: 'TPMJS_EXECUTOR_URL', + type: 'string', + required: false, + description: 'URL for sandbox executor (default: https://executor.tpmjs.com)', + }, + ]} + /> + <div className="mt-4"> + <CodeBlock + language="bash" + code={`# Use your own TPMJS registry +export TPMJS_API_URL=https://registry.mycompany.com +export TPMJS_EXECUTOR_URL=https://executor.mycompany.com`} + /> + </div> + </DocSection> + + <DocSection id="security" title="Security"> + <p className="text-foreground-secondary mb-6"> + TPMJS is designed with security in mind. + </p> + <div className="grid grid-cols-1 md:grid-cols-2 gap-4"> + <InfoCard icon="🏝️" title="Sandboxed Execution"> + All tools run in an isolated Deno runtime. They cannot access your local + filesystem or environment. + </InfoCard> + <InfoCard icon="🔐" title="API Key Isolation"> + API keys are passed per-request and never stored. Each execution is stateless and + isolated. + </InfoCard> + <InfoCard icon="✅" title="Registry-Only Execution"> + Only tools registered in TPMJS can be executed. No arbitrary code execution is + possible. + </InfoCard> + <InfoCard icon="🏥" title="Health Monitoring"> + Every tool is continuously health-checked. Broken tools are flagged and filtered + from search results. + </InfoCard> + </div> + </DocSection> + + {/* ==================== RESOURCES ==================== */} + <DocSection id="faq" title="FAQ"> + <div className="space-y-6"> + {[ + { + q: 'How long does it take for my tool to appear?', + a: 'Tools are discovered within 2-15 minutes of publishing to npm. Make sure you have the "tpmjs" keyword in your package.json.', + }, + { + q: 'What is auto-discovery?', + a: 'If you omit the "tools" array from your tpmjs field, TPMJS will automatically scan your package exports and register any export that looks like an AI SDK tool (has description and execute properties). You can override this by explicitly listing tools.', + }, + { + q: 'How does schema extraction work?', + a: "TPMJS automatically loads your tool in a sandbox and extracts the inputSchema from your Zod definition. You don't need to manually document parameters.", + }, + { + q: 'Is TPMJS free to use?', + a: 'Yes! TPMJS is free for public tools. We may introduce paid tiers for private registries and enterprise features in the future.', + }, + { + q: 'Can I use TPMJS with any AI framework?', + a: 'TPMJS works with any framework that supports the AI SDK tool format, including Vercel AI SDK, LangChain, and LlamaIndex.', + }, + { + q: 'How are tools executed?', + a: 'Tools are dynamically loaded from esm.sh and executed in a sandboxed Deno runtime on Railway. No local installation is required.', + }, + ].map((item) => ( + <div key={item.q} className="p-4 border border-border rounded-lg bg-surface"> + <h4 className="font-semibold text-foreground mb-2">{item.q}</h4> + <p className="text-sm text-foreground-secondary">{item.a}</p> + </div> + ))} + </div> + </DocSection> + + <DocSection id="troubleshooting" title="Troubleshooting"> + <div className="space-y-6"> + <DocSubSection title="Tool not appearing in registry"> + <ul className="list-disc list-inside space-y-2 text-foreground-secondary"> + <li> + Ensure you have{' '} + <code className="text-primary bg-surface px-1 rounded">tpmjs</code> in your + keywords + </li> + <li> + Verify your <code className="text-primary">tpmjs</code> field is valid JSON + </li> + <li>Wait 15 minutes after publishing</li> + <li>Check the validation errors in the npm package page</li> + </ul> + </DocSubSection> + <DocSubSection title="Execution failing"> + <ul className="list-disc list-inside space-y-2 text-foreground-secondary"> + <li>Check that required environment variables are passed</li> + <li>Verify the toolId format is correct (package::name)</li> + <li>Check the tool's health status on tpmjs.com</li> + </ul> + </DocSubSection> + </div> + </DocSection> + + <DocSection id="changelog" title="Changelog"> + <div className="space-y-4"> + <div className="p-4 border border-border rounded-lg bg-surface"> + <div className="flex items-center gap-2 mb-2"> + <Badge variant="default">v1.0.0</Badge> + <span className="text-sm text-foreground-tertiary">December 2024</span> + </div> + <p className="text-sm text-foreground-secondary"> + Initial release with registrySearchTool and registryExecuteTool + </p> + </div> + </div> + </DocSection> + + {/* CTA */} + <section className="text-center py-12 border border-border rounded-lg bg-surface"> + <h2 className="text-2xl font-bold mb-4 text-foreground">Ready to Get Started?</h2> + <p className="text-foreground-secondary mb-6 max-w-xl mx-auto"> + Give your AI agent access to thousands of tools in minutes. + </p> + <div className="flex flex-wrap gap-4 justify-center"> + <a href="https://playground.tpmjs.com" target="_blank" rel="noopener noreferrer"> + <Button variant="default" size="lg"> + Try Playground + </Button> + </a> + <Link href="/tool/tool-search"> + <Button variant="outline" size="lg"> + Browse Tools + </Button> + </Link> + <Link href="/publish"> + <Button variant="outline" size="lg"> + Publish a Tool + </Button> + </Link> + </div> + </section> + </div> + </main> + </div> + </div> + ); +} diff --git a/apps/web/src/app/error.tsx b/apps/web/src/app/error.tsx new file mode 100644 index 0000000..b3bb0ed --- /dev/null +++ b/apps/web/src/app/error.tsx @@ -0,0 +1,118 @@ +'use client'; + +import { Button } from '@tpmjs/ui/Button/Button'; +import { Container } from '@tpmjs/ui/Container/Container'; +import Link from 'next/link'; +import { useEffect } from 'react'; + +export default function ErrorPage({ + error, + reset, +}: { + error: Error & { digest?: string }; + reset: () => void; +}): React.ReactElement { + useEffect(() => { + // Log the error to an error reporting service + console.error('Error boundary caught:', error); + }, [error]); + + return ( + <main className="flex-1"> + <section className="py-24 bg-background min-h-screen flex items-center"> + <Container size="xl" padding="lg"> + <div className="max-w-2xl mx-auto text-center"> + {/* Error Icon */} + <div className="mb-8"> + <div className="inline-flex items-center justify-center w-24 h-24 rounded-full bg-error/10 mb-4"> + <svg + className="w-12 h-12 text-error" + fill="none" + stroke="currentColor" + viewBox="0 0 24 24" + xmlns="http://www.w3.org/2000/svg" + role="img" + aria-labelledby="error-icon-title" + > + <title id="error-icon-title">Error warning icon + + +
+

+ Something went wrong +

+ {/* Decorative divider */} +
+
+ + {/* Error Message */} +

+ An unexpected error occurred. This has been logged and we'll look into it. +

+ + {/* Error Details (in development) */} + {process.env.NODE_ENV === 'development' && ( +
+

+ Error Details (dev only): +

+

{error.message}

+ {error.digest && ( +

+ Digest: {error.digest} +

+ )} +
+ )} + + {/* Action Buttons */} +
+ + + + +
+ + {/* Helpful Links */} +
+

+ Need help or want to report this issue? +

+
+ + Report Issue + + + Browse Tools + + + How It Works + +
+
+
+ + + + ); +} diff --git a/apps/web/src/app/faq/page.tsx b/apps/web/src/app/faq/page.tsx new file mode 100644 index 0000000..9d0fbc8 --- /dev/null +++ b/apps/web/src/app/faq/page.tsx @@ -0,0 +1,430 @@ +import { Container } from '@tpmjs/ui/Container/Container'; +import Link from 'next/link'; +import { AppHeader } from '~/components/AppHeader'; + +export const metadata = { + title: 'FAQ | TPMJS', + description: + 'Frequently asked questions about TPMJS - Tool Package Manager for AI agents. Learn how to publish tools, understand quality scores, and get help.', + openGraph: { + title: 'FAQ | TPMJS', + description: + 'Frequently asked questions about TPMJS - Tool Package Manager for AI agents. Learn how to publish tools, understand quality scores, and get help.', + images: [{ url: '/api/og/faq', width: 1200, height: 630 }], + }, + twitter: { + card: 'summary_large_image' as const, + images: ['/api/og/faq'], + }, +}; + +interface FAQItemProps { + question: string; + children: React.ReactNode; +} + +function FAQItem({ question, children }: FAQItemProps): React.ReactElement { + return ( +
+ + {question} + + + + +
{children}
+
+ ); +} + +export default function FAQPage(): React.ReactElement { + return ( +
+ + +
+ + {/* Hero */} +
+

+ Frequently Asked Questions +

+

+ Everything you need to know about publishing, using, and contributing to the TPMJS + registry. +

+
+ + {/* FAQ Items */} +
+ {/* Question 1: What is TPMJS? */} + +

+ TPMJS (Tool Package Manager for JavaScript) is a registry and discovery platform for + AI agent tools. It helps developers publish, share, and discover tools that can be + used by AI agents to perform tasks like text analysis, code generation, data + processing, and more. +

+

+ Think of it as npm for AI tools. Developers publish tools to npm with the{' '} + + tpmjs + {' '} + keyword, and TPMJS automatically syncs them to our registry where they can be + discovered by AI agents and developers. +

+
+ + {/* Question 2: How do I publish a tool? */} + +

Publishing a tool to TPMJS is simple:

+
    +
  1. + Add the{' '} + + tpmjs + {' '} + keyword to your package.json +
  2. +
  3. + Add a{' '} + + tpmjs + {' '} + field with metadata (category, frameworks, tools) +
  4. +
  5. Publish your package to npm
  6. +
  7. Your tool appears on tpmjs.com within 15 minutes
  8. +
+

+ For detailed instructions, check out our{' '} + + publishing guide + + . We also provide a package generator to get started quickly: +

+ + npx @tpmjs/create-basic-tools + +
+ + {/* Question 3: How does schema extraction work? */} + +

+ TPMJS automatically extracts your tool's input schema (parameters) by loading + and analyzing your tool code in a sandboxed environment. This means you don't + need to manually document parameters in package.json. +

+
    +
  • + During sync - When your package is + discovered or updated, TPMJS loads it via esm.sh and reads the inputSchema from + your exported tool. +
  • +
  • + Schema source badge - Tool pages show + whether the schema was "Auto-extracted" or "Author-provided" + (fallback). +
  • +
  • + Manual re-extraction - Users can + trigger re-extraction from the tool page if needed. +
  • +
+

+ This simplifies publishing - you only need to provide category, description, and + name. See our{' '} + + specification + {' '} + for details. +

+
+ + {/* Question 4: How does tool health checking work? */} + +

+ TPMJS automatically monitors the health of all tools in the registry by periodically + checking: +

+
    +
  • + Package availability: Verifies the + package still exists on npm +
  • +
  • + Metadata validity: Ensures the tpmjs + field meets schema requirements +
  • +
  • + Version freshness: Checks if the tool + is being actively maintained +
  • +
+

+ Tools that fail health checks are flagged on the registry and may be hidden from + search results until the issues are resolved. This ensures AI agents only use + reliable, well-maintained tools. +

+
+ + {/* Question 5: What is the quality score? */} + +

+ The quality score is a calculated metric (0.0 to 1.0) that ranks tools based on + three factors: +

+
    +
  1. + 1. Metadata Tier (60% weight): +
      +
    • Rich tier: 4x multiplier (0.6 base score)
    • +
    • Basic tier: 2x multiplier (0.4 base score)
    • +
    • Minimal tier: 1x multiplier (0.2 base score)
    • +
    +
  2. +
  3. + 2. NPM Downloads (30% weight):{' '} + Logarithmic scale based on monthly downloads (max 0.3 points) +
  4. +
  5. + 3. GitHub Stars (10% weight):{' '} + Logarithmic scale based on repository stars (max 0.1 points) +
  6. +
+

+ Higher quality scores mean better visibility in search results. The best way to + improve your score is to use the Rich metadata tier and maintain good documentation. +

+
+ + {/* Question 6: Is TPMJS free to use? */} + +

+ Yes, TPMJS is completely free and open source for both publishers and users. You + can: +

+
    +
  • Publish unlimited tools to the registry
  • +
  • Browse and search all tools without authentication
  • +
  • Use tools in your AI agents and applications
  • +
  • + Contribute to the project on{' '} + + GitHub + +
  • +
+

+ There are no paid tiers, rate limits, or premium features. TPMJS is funded by the + community and maintained as a public good for the AI ecosystem. +

+
+ + {/* Question 7: How often are tools synced from npm? */} + +

TPMJS uses multiple automated sync strategies to keep the registry up-to-date:

+
    +
  • + Changes Feed Sync (every 2 minutes):{' '} + Monitors npm's real-time changes feed to catch new packages and updates + immediately +
  • +
  • + Keyword Search (every 15 minutes):{' '} + Actively searches for packages with the{' '} + + tpmjs + {' '} + keyword +
  • +
  • + Metrics Sync (every hour): Updates + download statistics and recalculates quality scores +
  • +
+

+ This means your tool will typically appear on tpmjs.com within 2-15 minutes of + publishing to npm, with metrics updating hourly. +

+
+ + {/* Question 8: Can I use TPMJS tools with any AI agent? */} + +

+ Yes! TPMJS tools are framework-agnostic and can be used with any AI agent system. + Each tool package specifies which frameworks it officially supports in the{' '} + + frameworks + {' '} + field, such as: +

+
    +
  • Vercel AI SDK (vercel-ai)
  • +
  • LangChain (langchain)
  • +
  • OpenAI Function Calling
  • +
  • Claude Tool Use
  • +
  • Custom frameworks
  • +
+

+ Many tools provide adapter functions for multiple frameworks. Check the tool's + documentation for specific integration examples. Tools with Rich metadata tier + include detailed usage guidance for AI agents. +

+
+ + {/* Question 9: How do I report a broken or malicious tool? */} + +

If you discover a broken or malicious tool, please report it immediately:

+ +

+ TPMJS takes security seriously. Reported tools will be investigated and flagged or + removed from the registry if necessary. +

+
+ + {/* Question 10: Where can I get help? */} + +

We're here to help! Here are the best ways to get support:

+ +

+ We also recommend checking out our{' '} + + publishing guide + {' '} + and{' '} + + specification docs + {' '} + for detailed technical documentation. +

+
+
+ + {/* CTA Section */} +
+

Still have questions?

+

+ Can't find what you're looking for? Reach out to us on GitHub or Twitter and + we'll be happy to help. +

+ +
+
+
+
+ ); +} diff --git a/apps/web/src/app/globals.css b/apps/web/src/app/globals.css index ac6f3cc..d588945 100644 --- a/apps/web/src/app/globals.css +++ b/apps/web/src/app/globals.css @@ -5,46 +5,46 @@ @layer base { /* Light mode (default) */ :root { - /* Backgrounds & Surfaces */ - --background: 0 0% 100%; /* Pure white */ - --surface: 210 20% 98%; /* Off-white */ + /* Backgrounds & Surfaces - DRAMATIC CONTRAST */ + --background: 220 15% 96%; /* Light blue-gray background */ + --surface: 0 0% 100%; /* Pure white - cards really pop! */ --surface-elevated: 0 0% 100%; /* White (elevated) */ - --surface-overlay: 0 0% 98%; /* Light gray */ + --surface-overlay: 0 0% 100%; /* White overlays */ /* Foreground (Text) */ --foreground: 222 47% 11%; /* Almost black */ - --foreground-secondary: 215 16% 47%; /* Medium gray */ - --foreground-tertiary: 215 16% 65%; /* Light gray */ - --foreground-muted: 215 16% 75%; /* Very light gray */ + --foreground-secondary: 215 25% 35%; /* Much darker for readability */ + --foreground-tertiary: 215 20% 50%; /* Medium gray */ + --foreground-muted: 215 16% 65%; /* Light gray */ - /* Borders */ - --border: 214 32% 91%; /* Light gray */ - --border-strong: 214 32% 80%; /* Medium gray */ - --border-subtle: 214 20% 95%; /* Very light gray */ + /* Borders - MUCH MORE VISIBLE */ + --border: 214 25% 80%; /* Strong medium gray */ + --border-strong: 214 30% 60%; /* Dark gray for emphasis */ + --border-subtle: 214 20% 88%; /* Subtle but visible */ - /* Interactive States */ - --primary: 222 47% 11%; /* Dark for light mode */ - --primary-foreground: 210 40% 98%; /* Light text */ - --secondary: 210 40% 96%; /* Light secondary */ + /* Interactive States - MODERN & REFINED */ + --primary: 221 83% 53%; /* Sophisticated blue */ + --primary-foreground: 0 0% 100%; /* White text */ + --secondary: 220 15% 90%; /* Subtle gray-blue bg */ --secondary-foreground: 222 47% 11%; /* Dark text */ - --accent: 210 40% 96%; /* Accent bg */ - --accent-foreground: 222 47% 11%; /* Accent text */ - --muted: 210 40% 96%; /* Muted bg */ - --muted-foreground: 215 16% 47%; /* Muted text */ + --accent: 221 75% 95%; /* Soft blue tint */ + --accent-foreground: 221 70% 35%; /* Rich blue text */ + --muted: 220 15% 92%; /* Subtle muted bg */ + --muted-foreground: 215 25% 40%; /* Darker muted text */ - /* Status Colors */ - --success: 142 71% 45%; - --success-foreground: 142 76% 15%; - --error: 0 72% 51%; - --error-foreground: 0 86% 17%; - --warning: 38 92% 50%; - --warning-foreground: 48 96% 19%; - --info: 217 91% 60%; - --info-foreground: 214 95% 23%; + /* Status Colors - Modern Editorial Palette */ + --success: 152 57% 45%; /* Refined emerald green */ + --success-foreground: 0 0% 100%; /* White text on success */ + --error: 0 65% 51%; /* Sophisticated red, less harsh */ + --error-foreground: 0 0% 100%; /* White text on error */ + --warning: 36 100% 50%; /* Warm sophisticated amber */ + --warning-foreground: 0 0% 100%; /* White text on warning */ + --info: 210 100% 56%; /* Cool modern blue */ + --info-foreground: 0 0% 100%; /* White text on info */ /* Destructive (legacy) */ - --destructive: 0 84% 60%; - --destructive-foreground: 210 40% 98%; + --destructive: 0 65% 51%; /* Match error color */ + --destructive-foreground: 0 0% 100%; /* Form Elements */ --input: 214 32% 91%; @@ -52,11 +52,11 @@ --ring-offset: 0 0% 100%; /* Grid/Blueprint Pattern */ - --grid-color: 214 32% 95%; + --grid-color: 214 32% 90%; --grid-size: 24px; /* Grid cell size */ /* Card */ - --card: 0 0% 100%; + --card: 0 0% 100%; /* Pure white - stands out dramatically on blue-gray background */ --card-foreground: 222 47% 11%; /* Border Radii */ @@ -93,9 +93,9 @@ --tracking-wider: 0.05em; --tracking-widest: 0.1em; - /* Brutalist Accent Colors */ - --brutalist-accent: 221 83% 53%; /* #0066ff - Electric blue for light mode */ - --brutalist-accent-hover: 221 83% 43%; + /* Brutalist Accent Colors - Modern Editorial */ + --brutalist-accent: 221 83% 53%; /* Sophisticated blue */ + --brutalist-accent-hover: 221 83% 45%; /* Slightly deeper on hover */ } /* Dark mode (opt-in) - Vercel/Cursor/Perplexity aesthetic */ @@ -127,19 +127,19 @@ --muted: 210 10% 12%; /* Muted background */ --muted-foreground: 210 8% 60%; /* Muted text */ - /* Status Colors (desaturated for dark mode) */ - --success: 142 71% 45%; /* #10b981 - Green */ - --success-foreground: 142 76% 95%; /* Light green text */ - --error: 0 72% 51%; /* #ef4444 - Red */ - --error-foreground: 0 86% 97%; /* Light red text */ - --warning: 38 92% 50%; /* #f59e0b - Amber */ - --warning-foreground: 48 96% 89%; /* Light amber text */ - --info: 217 91% 60%; /* #3b82f6 - Blue */ - --info-foreground: 214 95% 93%; /* Light blue text */ + /* Status Colors - Modern Editorial (Dark Mode) */ + --success: 152 57% 50%; /* Refined emerald - slightly brighter for dark */ + --success-foreground: 0 0% 100%; /* White text */ + --error: 0 65% 58%; /* Sophisticated red - brighter for dark */ + --error-foreground: 0 0% 100%; /* White text */ + --warning: 36 100% 55%; /* Warm amber - brighter for dark */ + --warning-foreground: 0 0% 100%; /* White text */ + --info: 210 100% 60%; /* Cool blue - brighter for dark */ + --info-foreground: 0 0% 100%; /* White text */ /* Destructive (legacy support) */ - --destructive: 0 72% 51%; - --destructive-foreground: 0 86% 97%; + --destructive: 0 65% 58%; + --destructive-foreground: 0 0% 100%; /* Form Elements */ --input: 210 10% 20%; /* Input border */ @@ -153,9 +153,9 @@ --card: 210 10% 8%; --card-foreground: 210 10% 90%; - /* Brutalist Accent Colors */ - --brutalist-accent: 158 100% 50%; /* #00ff88 - Neon green for dark mode */ - --brutalist-accent-hover: 158 100% 40%; + /* Brutalist Accent Colors - Modern Editorial */ + --brutalist-accent: 210 100% 60%; /* Cool sophisticated blue for dark mode */ + --brutalist-accent-hover: 210 100% 65%; /* Slightly brighter on hover */ } /* Base element styles */ diff --git a/apps/web/src/app/how-it-works/page.tsx b/apps/web/src/app/how-it-works/page.tsx new file mode 100644 index 0000000..9060095 --- /dev/null +++ b/apps/web/src/app/how-it-works/page.tsx @@ -0,0 +1,678 @@ +import { Button } from '@tpmjs/ui/Button/Button'; +import { CodeBlock } from '@tpmjs/ui/CodeBlock/CodeBlock'; +import { Container } from '@tpmjs/ui/Container/Container'; +import Link from 'next/link'; +import { AppHeader } from '~/components/AppHeader'; +import { ArchitectureDiagram } from '~/components/ArchitectureDiagram'; + +export const metadata = { + title: 'How It Works | TPMJS', + description: 'Learn how TPMJS automatically discovers, indexes, and serves AI tools from npm', + openGraph: { + title: 'How It Works | TPMJS', + description: 'Learn how TPMJS automatically discovers, indexes, and serves AI tools from npm', + images: [{ url: '/api/og/how-it-works', width: 1200, height: 630 }], + }, + twitter: { + card: 'summary_large_image' as const, + images: ['/api/og/how-it-works'], + }, +}; + +export default function HowItWorksPage(): React.ReactElement { + return ( +
+ + +
+ + {/* Hero */} +
+

+ How TPMJS Works +

+

+ The complete journey from npm package to AI-powered tool execution +

+
+ + {/* Overview */} +
+

+ What is TPMJS? +

+
+

+ TPMJS (Tool Package Manager for JavaScript) is a{' '} + + registry and execution platform + {' '} + that automatically discovers, catalogs, and runs AI tools from the npm ecosystem. +

+

+ It acts as a bridge between{' '} + AI agents (powered by + frameworks like Vercel AI SDK, LangChain, and LlamaIndex) and{' '} + reusable tool packages{' '} + published to npm. +

+
+
+
🔍
+

Automatic Discovery

+

+ Tools appear on tpmjs.com within 2-15 minutes of publishing to npm +

+
+
+
📊
+

Quality Scoring

+

+ Automatic scoring based on documentation, downloads, and metadata completeness +

+
+
+
+

Instant Execution

+

+ AI agents can discover and execute tools through a unified API +

+
+
+
+
+ + {/* For Developers */} +
+

+ For Tool Developers +

+
+

+ Publishing a tool to TPMJS is as simple as publishing to npm with a standardized + metadata field. +

+ + {/* Step 1 */} +
+
+ + 1 + +

+ Add metadata to package.json +

+
+ +

+ Parameters are automatically extracted from your tool code - no need to list them + manually! +

+
+ + {/* Step 2 */} +
+
+ + 2 + +

Publish to npm

+
+ +

+ That's it! TPMJS will automatically discover your tool within 2-15 minutes. +

+
+ +
+ + + +
+
+
+ + {/* For AI Agents */} +
+

+ For AI Agents +

+
+

+ AI agents can search, discover, and execute tools through the TPMJS API. +

+ + {/* Search Tools */} +
+

Search & Filter

+ +
+ + {/* Execute Tools */} +
+

Execute Tools

+ +
+ + {/* Playground */} +
+

Test in Playground

+

+ Try tools interactively before integrating them into your AI agent. +

+ + + +
+
+
+ + {/* The Magic Behind the Scenes */} +
+

+ The Magic Behind the Scenes +

+
+ {/* 1. Discovery */} +
+

+ 1. Automatic Discovery +

+

+ TPMJS uses three parallel mechanisms to discover tools from npm: +

+
+
+

Changes Feed

+

+ Monitors npm's real-time changes stream +

+
Every 2 minutes
+
+
+

Keyword Search

+

+ Searches npm for "tpmjs" keyword +

+
Every 15 minutes
+
+
+

Manual Curation

+

+ Curated list of high-quality tools +

+
Updated regularly
+
+
+
+ + {/* 2. Validation & Schema Extraction */} +
+

+ 2. Validation & Schema Extraction +

+

+ Every discovered package is validated and its schema is automatically extracted: +

+
    +
  • + + Valid category from predefined list +
  • +
  • + + Description between 20-500 characters +
  • +
  • + + + inputSchema auto-extracted from + tool code via sandboxed executor + +
  • +
  • + + Parameters derived from JSON Schema for display +
  • +
  • + + Fallback to author-provided parameters if extraction fails +
  • +
+
+ + {/* 3. Quality Scoring */} +
+

3. Quality Scoring

+

+ Every tool receives a quality score (0.00 to 1.00) based on: +

+
+
+
+ Tier (Metadata Completeness) + 40-60% +
+
+ Downloads (Popularity) + up to 20% +
+
+ GitHub Stars + up to 10% +
+
+ AI-Friendly Metadata + up to 10% +
+
+
+

+ Higher quality scores = better visibility in search results and featured + sections +

+
+
+
+ + {/* 4. Health Checks */} +
+

4. Health Checks

+

+ Every tool is tested to ensure it works correctly: +

+
+
+

Import Health

+
    +
  • • Can the package be imported?
  • +
  • • Does the export exist?
  • +
  • • Is it in AI SDK format?
  • +
+
+
+

Execution Health

+
    +
  • • Can test parameters be generated?
  • +
  • • Does the tool execute without errors?
  • +
  • • Does it return valid results?
  • +
+
+
+
+ + {/* 5. Indexing */} +
+

5. Indexing

+

+ Tools are stored in a PostgreSQL database with rich metadata: +

+
    +
  • + + + Package-level: Version, README, + repository, category, downloads, stars + +
  • +
  • + + + Tool-level: Export name, + description, parameters, return type, AI guidance + +
  • +
  • + + + Metrics: Quality score, health + status, execution history + +
  • +
+
+
+
+ + {/* Architecture Diagram */} +
+

+ System Architecture +

+
+ +
+
+ + {/* Data Flow */} +
+

+ From Publish to Execution +

+
+
+ + 1 + +
+

Developer publishes to npm

+

+ Package with{' '} + tpmjs keyword +

+
+ ~1 second +
+ +
+ + 2 + +
+

TPMJS discovers package

+

+ Changes feed or keyword search picks it up +

+
+ 2-15 minutes +
+ +
+ + 3 + +
+

Validation & indexing

+

+ Schema validation, database insertion, health checks +

+
+ ~5 seconds +
+ +
+ + 4 + +
+

Tool appears on tpmjs.com

+

+ Searchable, browsable, and executable in playground +

+
+ Instant +
+ +
+ + 5 + +
+

Quality score calculated

+

+ Based on tier, downloads, stars, and metadata +

+
+ Within 1 hour +
+ +
+ + 6 + +
+

+ AI agents can discover & execute +

+

+ Available via API for search and execution +

+
+ Ongoing +
+
+
+ + {/* Beta: Dynamic Tool Loading */} +
+
+ + 🧪 Beta + +

+ Dynamic Tool Loading +

+
+ +
+

+ Our playground demonstrates the future of AI agents: tools that discover and load + themselves dynamically based on conversation context. +

+ + {/* How It Works */} +
+
+

+ 🔍 BM25 Search + Context Awareness +

+

+ When you chat in the playground, your messages are analyzed using the{' '} + BM25 ranking algorithm to find the + most relevant tools from the entire registry. +

+ +
+ +
+

+ ⚡ Zero-Config Dynamic Loading +

+

+ Found tools are loaded on-demand from esm.sh and executed in a sandboxed Deno + environment on Railway. +

+ +
+ +
+

+ 🏝️ Sandboxed Execution +

+

+ All dynamically loaded tools execute in an isolated Deno runtime on Railway, + ensuring security and reliability. +

+
+
+

+ Network Imports +

+

+ Deno loads packages directly from esm.sh with{' '} + --experimental-network-imports +

+
+
+

+ Automatic Health Checks +

+

+ Failed imports or executions trigger health status updates in the registry +

+
+
+

+ Process-Level Caching +

+

+ Tools are cached per conversation to avoid redundant network requests +

+
+
+
+ +
+

+ 🎯 Coming Soon: Collections +

+

+ Imagine pre-configured tool bundles (mini sub-agents) that you can reference by + name: +

+ +
+

+ Why collections? They let you + compose specialized sub-agents without manually curating tool lists. Think of + them as “skill packs” for your AI. +

+
+
+
+ + {/* Try It */} +
+

+ Try It in the Playground +

+

+ Ask the playground agent to “search for tools about X” and watch it + discover, load, and execute tools dynamically! +

+ + + +
+
+
+ + {/* CTA */} +
+

+ Ready to Get Started? +

+

+ Whether you're building AI tools or integrating them into your agent, TPMJS makes + it simple. +

+
+ + + + + + + + + +
+
+
+
+
+ ); +} diff --git a/apps/web/src/app/integrations/page.tsx b/apps/web/src/app/integrations/page.tsx new file mode 100644 index 0000000..24726f2 --- /dev/null +++ b/apps/web/src/app/integrations/page.tsx @@ -0,0 +1,371 @@ +import { Button } from '@tpmjs/ui/Button/Button'; +import { Container } from '@tpmjs/ui/Container/Container'; +import Link from 'next/link'; +import { AppHeader } from '~/components/AppHeader'; +import { EcosystemDiagram } from '~/components/EcosystemDiagram'; + +export const metadata = { + title: 'Integrations | TPMJS', + description: + 'Platforms that integrate with TPMJS. See how HLLM brings 100+ tools to multi-agent topologies at runtime.', + openGraph: { + title: 'Integrations | TPMJS', + description: + 'Platforms that integrate with TPMJS. See how HLLM brings 100+ tools to multi-agent topologies at runtime.', + }, +}; + +export default function IntegrationsPage(): React.ReactElement { + return ( +
+ + +
+ + {/* Hero */} +
+

+ Integrations +

+

+ Platforms that connect to the TPMJS registry to bring tools to their users. +

+
+ + {/* Integrations List */} +
+ +
+ + {/* Case Study Header */} +
+
+
+ + Case Study + +
+
+
+ + {/* BlocksAI Case Study */} +
+
+
+
+ +
+
+

+ Building 100+ Tools with BlocksAI +

+

+ How we used domain-driven validation to ship quality at scale +

+
+
+ +
+

+ When we set out to build the official TPMJS tool collection, we faced a challenge: + how do you maintain quality across 100+ tools? Different categories (web scraping, + data transformation, statistics, security) have different requirements. Manual + review doesn't scale. +

+

+ BlocksAI gave us the answer: define + domain rules once, validate automatically. We created a 3,200+ line{' '} + + blocks.yml + {' '} + that captures everything a TPMJS tool should be. +

+
+ + {/* Stats */} +
+
+
106
+
Tools Built
+
+
+
9
+
Philosophy Principles
+
+
+
25+
+
Domain Rules
+
+
+
11
+
Categories
+
+
+ + {/* Philosophy Principles */} +
+

The 9 Principles

+
+
+ 01 +

+ Production-ready only. No stubs, no TODOs. +

+
+
+ 02 +

+ AI SDK v6 pattern. tool() + jsonSchema() exclusively. +

+
+
+ 03 +

+ Single responsibility. One thing, exceptionally well. +

+
+
+ 04 +

+ Structured outputs. Typed, parseable by agents. +

+
+
+ 05 +

+ Explicit errors. Never silently fail. +

+
+
+ 06 +

+ Async boundaries. Proper error handling. +

+
+
+ 07 +

+ Stable dependencies. No alpha packages. +

+
+
+ 08 +

+ Deterministic. Same input, same output. +

+
+
+ 09 +

+ Single-shot. No streaming, no orchestration. +

+
+
+
+ + {/* Categories */} +
+

Tools by Category

+
+ {[ + { name: 'Research', count: 5, color: 'bg-blue-500/10 text-blue-500' }, + { name: 'Web', count: 10, color: 'bg-green-500/10 text-green-500' }, + { name: 'Data', count: 15, color: 'bg-cyan-500/10 text-cyan-500' }, + { name: 'Documents', count: 12, color: 'bg-purple-500/10 text-purple-500' }, + { name: 'Engineering', count: 12, color: 'bg-orange-500/10 text-orange-500' }, + { name: 'Security', count: 7, color: 'bg-red-500/10 text-red-500' }, + { name: 'Statistics', count: 9, color: 'bg-pink-500/10 text-pink-500' }, + { name: 'Operations', count: 7, color: 'bg-yellow-500/10 text-yellow-600' }, + { name: 'Agents', count: 15, color: 'bg-violet-500/10 text-violet-500' }, + { name: 'Utilities', count: 8, color: 'bg-gray-500/10 text-gray-500' }, + { name: 'HTML', count: 3, color: 'bg-emerald-500/10 text-emerald-500' }, + ].map((cat) => ( + + {cat.name} ({cat.count}) + + ))} +
+
+ + {/* The Result */} +
+

The Result

+

+ Every tool follows the same patterns. Every tool has proper error handling. Every + tool works with the AI SDK. When HLLM users browse the registry, they can trust + that any tool they add will work reliably in their agent workflows. +

+
+
+
+ + {/* Ecosystem Diagram */} +
+

+ How It All Connects +

+

+ BlocksAI validates tool quality at development time. TPMJS publishes them to the + registry. HLLM users discover and execute them at runtime. +

+ +
+ + {/* HLLM Deep Dive */} +
+

+ Using TPMJS Tools in HLLM +

+ +
+ {/* Step 1 */} +
+
+ 1 +
+
+

Browse the Tool Registry

+

+ In the Agent Studio, click "Add from TPM.js Registry" to open the Tool + Browser. Search by name or filter by category. See descriptions, parameters, and + quality scores. +

+
+ 1000+ tools available • Search & filter • Category tags +
+
+
+ + {/* Step 2 */} +
+
+ 2 +
+
+

Add to Your Agent

+

+ Click any tool to add it to your agent. HLLM automatically fetches the full + schema from TPMJS—parameter types, descriptions, everything the agent needs to + use it correctly. +

+
+ One-click add • Full schema sync • Works with any topology +
+
+
+ + {/* Step 3 */} +
+
+ 3 +
+
+

+ Configure API Keys (if needed) +

+

+ Some tools need API keys (Firecrawl, etc.). Add them once in your HLLM + profile—they're encrypted and automatically injected when tools execute. + Your keys never leave the server. +

+
+ Encrypted storage • Auto-injection • Per-user isolation +
+
+
+ + {/* Step 4 */} +
+
+ 4 +
+
+

Execute During Runs

+

+ When your agent decides to use a tool, HLLM routes the call to the TPMJS + executor. The tool runs in a Deno sandbox with your parameters and API keys. + Results stream back to your agent. +

+
+ Sandboxed execution • SSE streaming • Execution metrics +
+
+
+
+
+ + {/* CTA */} +
+

+ Explore the Tools +

+

+ Browse the 100+ official tools, or publish your own to the registry. +

+
+ + + + + + + + + +
+
+
+
+
+ ); +} diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx index e54d1f4..684c49b 100644 --- a/apps/web/src/app/layout.tsx +++ b/apps/web/src/app/layout.tsx @@ -1,5 +1,8 @@ +import { Analytics } from '@vercel/analytics/next'; import type { Metadata } from 'next'; import { Space_Grotesk, Space_Mono } from 'next/font/google'; +import Script from 'next/script'; +import { AppFooter } from '../components/AppFooter'; import { ThemeProvider } from '../components/providers/ThemeProvider'; import './globals.css'; @@ -17,9 +20,72 @@ const spaceMono = Space_Mono({ }); export const metadata: Metadata = { - title: 'TPMJS - Tool Package Manager for AI Agents', + metadataBase: new URL('https://tpmjs.com'), + title: { + default: 'TPMJS - Tool Package Manager for AI Agents', + template: '%s | TPMJS', + }, description: - 'The registry for AI tools. Discover, share, and integrate tools that give your agents superpowers.', + 'Discover and use npm packages as AI agent tools. No config files, automatic discovery, works with any framework.', + icons: { + icon: [ + { url: '/favicon.svg', type: 'image/svg+xml' }, + { url: '/favicon.ico', sizes: 'any' }, + ], + apple: '/apple-touch-icon.svg', + }, + keywords: [ + 'AI tools', + 'AI agents', + 'tool registry', + 'TPMJS', + 'agent tools', + 'AI SDK', + 'Vercel AI', + 'Claude', + 'OpenAI', + 'npm tools', + ], + authors: [{ name: 'TPMJS' }], + creator: 'TPMJS', + publisher: 'TPMJS', + openGraph: { + type: 'website', + locale: 'en_US', + url: 'https://tpmjs.com', + siteName: 'TPMJS', + title: 'TPMJS - Tool Package Manager for AI Agents', + description: + 'Discover and use npm packages as AI agent tools. No config files, automatic discovery, works with any framework.', + images: [ + { + url: '/api/og/home', + width: 1200, + height: 630, + alt: 'TPMJS - Tool Package Manager for AI Agents', + }, + ], + }, + twitter: { + card: 'summary_large_image', + site: '@tpmjs_registry', + creator: '@tpmjs_registry', + title: 'TPMJS - Tool Package Manager for AI Agents', + description: + 'Discover and use npm packages as AI agent tools. No config files, automatic discovery, works with any framework.', + images: ['/api/og/home'], + }, + robots: { + index: true, + follow: true, + googleBot: { + index: true, + follow: true, + 'max-video-preview': -1, + 'max-image-preview': 'large', + 'max-snippet': -1, + }, + }, }; export default function RootLayout({ @@ -27,12 +93,62 @@ export default function RootLayout({ }: { children: React.ReactNode; }): React.ReactElement { + const organizationSchema = { + '@context': 'https://schema.org', + '@type': 'Organization', + name: 'TPMJS', + url: 'https://tpmjs.com', + logo: 'https://tpmjs.com/logo.png', + description: + 'Discover and use npm packages as AI agent tools. No config files, automatic discovery, works with any framework.', + sameAs: ['https://github.com/tpmjs/tpmjs', 'https://x.com/tpmjs_registry'], + }; + + const websiteSchema = { + '@context': 'https://schema.org', + '@type': 'WebSite', + name: 'TPMJS', + url: 'https://tpmjs.com', + description: + 'Discover and use npm packages as AI agent tools. No config files, automatic discovery, works with any framework.', + potentialAction: { + '@type': 'SearchAction', + target: { + '@type': 'EntryPoint', + urlTemplate: 'https://tpmjs.com/tool/tool-search?q={search_term_string}', + }, + 'query-input': 'required name=search_term_string', + }, + }; + return ( + + {process.env.NODE_ENV === 'development' && ( + <> + ', +}); + +console.log(result.sanitized); +//

Safe content

+ +console.log(result); +// { +// sanitized: '

Safe content

', +// removedCount: 1, +// warnings: ['Removed script tags to prevent XSS'] +// } +``` + +## Features + +- **XSS Prevention** - Removes dangerous scripts and event handlers +- **Safe Defaults** - Pre-configured with common safe HTML tags +- **Customizable** - Configure allowed tags and attributes +- **Warnings** - Reports what dangerous content was removed +- **Isomorphic** - Works in Node.js and browser environments +- **Protocol Filtering** - Removes javascript: and unsafe data: URLs + +## Parameters + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `html` | `string` | Yes | The HTML string to sanitize | +| `options` | `SanitizeOptions` | No | Configuration for allowed tags and attributes | + +### SanitizeOptions + +```typescript +{ + allowedTags?: string[]; // Array of allowed HTML tag names + allowedAttributes?: Record; // Tag -> attributes mapping +} +``` + +## Returns + +```typescript +{ + sanitized: string; // The sanitized HTML + removedCount: number; // Number of elements removed + warnings: string[]; // Descriptions of what was removed +} +``` + +## Examples + +### Basic XSS Prevention + +```typescript +const result = await htmlSanitizeTool.execute({ + html: '

Click me

', +}); + +console.log(result.sanitized); +//

Click me

+ +console.log(result.warnings); +// ['Removed inline event handlers (onclick, onerror, etc.)', 'Removed script tags to prevent XSS'] +``` + +### Custom Allowed Tags + +```typescript +const result = await htmlSanitizeTool.execute({ + html: '

Paragraph

Div
', + options: { + allowedTags: ['p'], // Only allow

tags + }, +}); + +console.log(result.sanitized); +//

Paragraph

Div +``` + +### Custom Allowed Attributes + +```typescript +const result = await htmlSanitizeTool.execute({ + html: 'Link', + options: { + allowedTags: ['a'], + allowedAttributes: { + 'a': ['href'], // Only allow href attribute on tags + }, + }, +}); + +console.log(result.sanitized); +// Link +``` + +### Remove Dangerous Protocols + +```typescript +const result = await htmlSanitizeTool.execute({ + html: 'Click', +}); + +console.log(result.sanitized); +// Click + +console.log(result.warnings); +// ['Removed javascript: protocol from links'] +``` + +### Remove iframes and Embeds + +```typescript +const result = await htmlSanitizeTool.execute({ + html: '

Safe

', +}); + +console.log(result.sanitized); +//

Safe

+ +console.log(result.warnings); +// ['Removed iframe tags', 'Removed object or embed tags'] +``` + +### Preserve Safe Images + +```typescript +const result = await htmlSanitizeTool.execute({ + html: 'Photo', +}); + +console.log(result.sanitized); +// Photo + +console.log(result.warnings); +// ['Removed inline event handlers (onclick, onerror, etc.)'] +``` + +### Complex HTML Sanitization + +```typescript +const result = await htmlSanitizeTool.execute({ + html: ` +
+

Title

+

Safe paragraph

+ + + Bad link + Good link +
+ `, +}); + +console.log(result.sanitized); +//
+//

Title

+//

Safe paragraph

+// Bad link +// Good link +//
+ +console.log(result.removedCount); +// 2 + +console.log(result.warnings); +// ['Removed script tags to prevent XSS', 'Removed javascript: protocol from links', 'Removed style tags'] +``` + +## Default Allowed Tags + +```typescript +['p', 'br', 'span', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', + 'strong', 'em', 'b', 'i', 'u', 'ul', 'ol', 'li', + 'a', 'img', 'blockquote', 'code', 'pre'] +``` + +## Default Allowed Attributes + +```typescript +{ + 'a': ['href', 'title', 'target'], + 'img': ['src', 'alt', 'title', 'width', 'height'], + '*': ['class', 'id'] // Allowed on all tags +} +``` + +## Security Features + +| Feature | Description | +|---------|-------------| +| Script removal | Removes `'; +const result = await htmlSanitizeTool.execute({ html: userComment }); +// Safe to display:

Great post!

+``` + +### Allow Only Text Formatting + +```typescript +const result = await htmlSanitizeTool.execute({ + html: richTextEditorContent, + options: { + allowedTags: ['p', 'br', 'strong', 'em', 'u'], + allowedAttributes: {}, + }, +}); +``` + +### Preserve Links with Validation + +```typescript +const result = await htmlSanitizeTool.execute({ + html: markdownConverted, + options: { + allowedTags: ['p', 'a', 'strong', 'em'], + allowedAttributes: { + 'a': ['href', 'title'], + }, + }, +}); +``` + +## Error Handling + +```typescript +try { + const result = await htmlSanitizeTool.execute({ + html: null, // Invalid input + }); +} catch (error) { + console.error(error.message); + // "HTML input must be a string" +} +``` + +## Best Practices + +1. **Use Default Settings** - The defaults are secure for most use cases +2. **Whitelist, Don't Blacklist** - Only allow known-safe tags and attributes +3. **Check Warnings** - Review warnings to understand what was removed +4. **Validate Context** - Different contexts may need different allowed tags +5. **Defense in Depth** - Combine with Content Security Policy (CSP) + +## Limitations + +- Does not validate HTML syntax errors +- Does not check link destinations (only protocols) +- Does not sanitize CSS within style attributes +- May remove legitimate content if too restrictive + +## License + +MIT diff --git a/packages/tools/official/html-sanitize/package.json b/packages/tools/official/html-sanitize/package.json new file mode 100644 index 0000000..67504ea --- /dev/null +++ b/packages/tools/official/html-sanitize/package.json @@ -0,0 +1,67 @@ +{ + "name": "@tpmjs/tools-html-sanitize", + "version": "0.1.0", + "description": "Sanitize HTML to prevent XSS attacks using isomorphic-dompurify", + "type": "module", + "keywords": ["tpmjs", "security", "html", "sanitize", "xss", "dompurify"], + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "files": ["dist"], + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "type-check": "tsc --noEmit", + "clean": "rm -rf dist .turbo" + }, + "devDependencies": { + "@tpmjs/tsconfig": "workspace:*", + "tsup": "^8.3.5", + "typescript": "^5.9.3" + }, + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/anthropics/tpmjs.git", + "directory": "packages/tools/official/html-sanitize" + }, + "homepage": "https://tpmjs.com", + "license": "MIT", + "tpmjs": { + "category": "security", + "frameworks": ["vercel-ai"], + "tools": [ + { + "name": "htmlSanitizeTool", + "description": "Sanitize HTML to prevent XSS attacks with customizable allowed tags and attributes", + "parameters": [ + { + "name": "html", + "type": "string", + "description": "The HTML string to sanitize", + "required": true + }, + { + "name": "options", + "type": "object", + "description": "Optional configuration for allowed tags and attributes", + "required": false + } + ], + "returns": { + "type": "HtmlSanitizeResult", + "description": "Object with sanitized HTML, removal count, and warnings about removed elements" + } + } + ] + }, + "dependencies": { + "ai": "6.0.0-beta.124", + "isomorphic-dompurify": "^2.18.0" + } +} diff --git a/packages/tools/official/html-sanitize/src/index.ts b/packages/tools/official/html-sanitize/src/index.ts new file mode 100644 index 0000000..7181312 --- /dev/null +++ b/packages/tools/official/html-sanitize/src/index.ts @@ -0,0 +1,207 @@ +/** + * HTML Sanitize Tool for TPMJS + * Sanitizes HTML to prevent XSS attacks using isomorphic-dompurify + * + * @requires Node.js 18+ + */ + +import { jsonSchema, tool } from 'ai'; +import DOMPurify from 'isomorphic-dompurify'; + +/** + * Options for HTML sanitization + */ +export interface SanitizeOptions { + allowedTags?: string[]; + allowedAttributes?: Record; +} + +/** + * Input for HTML sanitization + */ +type HtmlSanitizeInput = { + html: string; + options?: SanitizeOptions; +}; + +/** + * Output interface for HTML sanitization + */ +export interface HtmlSanitizeResult { + sanitized: string; + removedCount: number; + warnings: string[]; +} + +/** + * Default safe tags for HTML sanitization + */ +const DEFAULT_ALLOWED_TAGS = [ + 'p', + 'br', + 'span', + 'div', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'strong', + 'em', + 'b', + 'i', + 'u', + 'ul', + 'ol', + 'li', + 'a', + 'img', + 'blockquote', + 'code', + 'pre', +]; + +/** + * Default safe attributes for HTML sanitization + */ +const DEFAULT_ALLOWED_ATTRS: Record = { + a: ['href', 'title', 'target'], + img: ['src', 'alt', 'title', 'width', 'height'], + '*': ['class', 'id'], +}; + +/** + * Count removed elements by comparing original and sanitized HTML + */ +function countRemovedElements(original: string, sanitized: string): number { + const originalTagCount = (original.match(/<[^>]+>/g) || []).length; + const sanitizedTagCount = (sanitized.match(/<[^>]+>/g) || []).length; + return Math.max(0, originalTagCount - sanitizedTagCount); +} + +/** + * Generate warnings about potentially dangerous content + */ +function generateWarnings(html: string, sanitized: string): string[] { + const warnings: string[] = []; + + // Check for script tags + if (/