Skip to content
Back to DiezXSuite

Card snapshot

agents.diezx.ai · 2026-08-22 03:07:43 UTC · 59709362279535390c27acbc2d992aad0c1838c83f35464c6643c204fe683ca8

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "protocolVersion": "0.3.0",
  "name": "DiezXSuite",
  "displayName": "diezX AI Agents Suite",
  "description": "A Business Observability platform for mid-market companies: it shows how your company operates in real time and lets you act from there. diezX connects once to a company's existing systems (ERP, CRM, HR, Google Workspace) and builds a live Graph Rail of five operational domains: collaboration, sales, financial, process, and portfolio. On top of that graph, four A2A 0.3-compliant experts (Diego, Luc\u00eda, Daniel, Sof\u00eda) answer questions and ship the highest-impact work as running n8n workflows, React custom apps, and WhatsApp experts. Each expert queries its domain graph before answering. Hosted on Google Cloud (Cloud Run) with inference on Vertex AI. Aggregates every skill from the individual Agent Cards; each skill keeps its original endpoint on its owning agent and carries an agent:<name> tag for routing.",
  "version": "2.0.0",
  "url": "https://agents.diezx.ai/api/a2a/suite",
  "preferredTransport": "HTTP+JSON",
  "supportedInterfaces": [
    {
      "url": "https://agents.diezx.ai/api/a2a/suite",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "0.3"
    }
  ],
  "provider": {
    "organization": "diezX",
    "url": "https://diezx.ai"
  },
  "documentationUrl": "https://app.diezx.ai/docs/agents",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false
  },
  "securitySchemes": {
    "bearer-jwt": {
      "type": "http",
      "scheme": "bearer",
      "bearerFormat": "JWT",
      "description": "diezX-issued JWT or A2A delegation token. Rate-limited per company tier."
    }
  },
  "security": [
    {
      "bearer-jwt": []
    }
  ],
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "explain_process_score",
      "name": "Explain Process Score",
      "description": "Explains why a specific process ranked at a given score, citing scoring weights and process attributes.",
      "tags": [
        "prioritization",
        "scoring",
        "explanation",
        "agent:lucia"
      ],
      "examples": [
        "\u00bfPor qu\u00e9 reconciliaci\u00f3n bancaria tiene score 8.2?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/lucia/skills/explain_process_score",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "processId",
          "portfolio",
          "scoringWeights"
        ],
        "properties": {
          "processId": {
            "type": "string"
          },
          "portfolio": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "processId",
                "processName"
              ],
              "properties": {
                "processId": {
                  "type": "string",
                  "description": "Stable content hash. See x-idStrategy."
                },
                "processName": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "level1Process": {
                  "type": "string"
                },
                "finalScore": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "estimatedImpact": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "effort": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "frequency": {
                  "type": "string",
                  "enum": [
                    "daily",
                    "weekly",
                    "monthly",
                    "quarterly",
                    "ad-hoc"
                  ]
                },
                "automationPotential": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "solutionType": {
                  "type": "string",
                  "enum": [
                    "workflow",
                    "custom_app"
                  ]
                },
                "isAutomated": {
                  "type": "boolean"
                },
                "source": {
                  "type": "string"
                }
              }
            }
          },
          "scoringWeights": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "explanation",
          "topContributingFactors"
        ],
        "properties": {
          "explanation": {
            "type": "string",
            "maxLength": 1500,
            "x-computeSource": "llm"
          },
          "topContributingFactors": {
            "type": "array",
            "x-computeSource": "deterministic",
            "items": {
              "type": "object",
              "properties": {
                "factor": {
                  "type": "string"
                },
                "weight": {
                  "type": "number"
                },
                "value": {
                  "type": "number"
                },
                "weightedContribution": {
                  "type": "number"
                }
              }
            }
          }
        }
      }
    },
    {
      "id": "connect_interview_to_process",
      "name": "Connect Interview to Process",
      "description": "Maps pain points from discovery interviews to processes in the portfolio. Flags discrepancies (high frustration vs low score).",
      "tags": [
        "interviews",
        "mapping",
        "discrepancy-detection",
        "agent:lucia"
      ],
      "examples": [
        "\u00bfQu\u00e9 quotes de las entrevistas matchean con los top 5?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/lucia/skills/connect_interview_to_process",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "interviews",
          "portfolio"
        ],
        "properties": {
          "interviews": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "recipientName",
                "department",
                "painPoints"
              ],
              "properties": {
                "recipientName": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "painPoints": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "description",
                      "frustrationLevel"
                    ],
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "currentProcess": {
                        "type": "string"
                      },
                      "frequency": {
                        "type": "string",
                        "enum": [
                          "daily",
                          "weekly",
                          "monthly"
                        ]
                      },
                      "timeSpentMinutes": {
                        "type": "integer"
                      },
                      "frustrationLevel": {
                        "type": "string",
                        "enum": [
                          "high",
                          "medium",
                          "low"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "portfolio": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "processId",
                "processName"
              ],
              "properties": {
                "processId": {
                  "type": "string",
                  "description": "Stable content hash. See x-idStrategy."
                },
                "processName": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "level1Process": {
                  "type": "string"
                },
                "finalScore": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "estimatedImpact": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "effort": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "frequency": {
                  "type": "string",
                  "enum": [
                    "daily",
                    "weekly",
                    "monthly",
                    "quarterly",
                    "ad-hoc"
                  ]
                },
                "automationPotential": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "solutionType": {
                  "type": "string",
                  "enum": [
                    "workflow",
                    "custom_app"
                  ]
                },
                "isAutomated": {
                  "type": "boolean"
                },
                "source": {
                  "type": "string"
                }
              }
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "matches"
        ],
        "properties": {
          "matches": {
            "type": "array",
            "x-computeSource": "hybrid",
            "items": {
              "type": "object",
              "properties": {
                "interviewee": {
                  "type": "string",
                  "x-computeSource": "deterministic"
                },
                "painPoint": {
                  "type": "string",
                  "x-computeSource": "deterministic"
                },
                "frustrationLevel": {
                  "type": "string",
                  "enum": [
                    "high",
                    "medium",
                    "low"
                  ],
                  "x-computeSource": "deterministic"
                },
                "matchedProcessId": {
                  "type": "string",
                  "x-computeSource": "llm"
                },
                "matchedProcessScore": {
                  "type": "number",
                  "x-computeSource": "deterministic"
                },
                "discrepancyFlag": {
                  "type": "boolean",
                  "x-computeSource": "deterministic"
                },
                "matchConfidence": {
                  "type": "string",
                  "enum": [
                    "high",
                    "medium",
                    "low"
                  ],
                  "x-computeSource": "llm"
                }
              }
            }
          }
        }
      }
    },
    {
      "id": "flag_validation_gaps",
      "name": "Flag Validation Gaps",
      "description": "Returns departments where AI-suggested processes lack human validation, ranked by risk.",
      "tags": [
        "data-quality",
        "validation",
        "agent:lucia"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/lucia/skills/flag_validation_gaps",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "validationStats"
        ],
        "properties": {
          "validationStats": {
            "type": "object",
            "required": [
              "totalProcesses",
              "validatedCount",
              "unvalidatedCount"
            ],
            "properties": {
              "totalProcesses": {
                "type": "integer"
              },
              "validatedCount": {
                "type": "integer"
              },
              "unvalidatedCount": {
                "type": "integer"
              },
              "unvalidatedByDepartment": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer"
                }
              }
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "gaps"
        ],
        "properties": {
          "gaps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "department": {
                  "type": "string",
                  "x-computeSource": "deterministic"
                },
                "unvalidatedCount": {
                  "type": "integer",
                  "x-computeSource": "deterministic"
                },
                "riskLevel": {
                  "type": "string",
                  "enum": [
                    "high",
                    "medium",
                    "low"
                  ],
                  "x-computeSource": "deterministic"
                },
                "recommendedAction": {
                  "type": "string",
                  "x-computeSource": "llm"
                }
              }
            }
          }
        }
      }
    },
    {
      "id": "surface_feedback_backlog",
      "name": "Surface Feedback Backlog",
      "description": "Lists processes pending review or with unresolved feedback comments.",
      "tags": [
        "collaboration",
        "review",
        "backlog",
        "agent:lucia"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/lucia/skills/surface_feedback_backlog",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "feedbackSummary"
        ],
        "properties": {
          "feedbackSummary": {
            "type": "object",
            "required": [
              "pendingReviewCount",
              "needsMyReviewProcessNames",
              "unresolvedFeedbackCount"
            ],
            "properties": {
              "pendingReviewCount": {
                "type": "integer"
              },
              "needsMyReviewProcessNames": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "unresolvedFeedbackCount": {
                "type": "integer"
              }
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "string",
            "x-computeSource": "llm"
          },
          "actionItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-computeSource": "deterministic"
          }
        }
      }
    },
    {
      "id": "compare_departments",
      "name": "Compare Departments",
      "description": "Side-by-side comparison of departments by avg score, process count, automation rate, and portfolio balance.",
      "tags": [
        "analysis",
        "comparison",
        "departments",
        "agent:lucia"
      ],
      "examples": [
        "\u00bfC\u00f3mo se compara Operaciones vs Finanzas?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/lucia/skills/compare_departments",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "portfolio"
        ],
        "properties": {
          "portfolio": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "processId",
                "processName"
              ],
              "properties": {
                "processId": {
                  "type": "string",
                  "description": "Stable content hash. See x-idStrategy."
                },
                "processName": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "level1Process": {
                  "type": "string"
                },
                "finalScore": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "estimatedImpact": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "effort": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "frequency": {
                  "type": "string",
                  "enum": [
                    "daily",
                    "weekly",
                    "monthly",
                    "quarterly",
                    "ad-hoc"
                  ]
                },
                "automationPotential": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "solutionType": {
                  "type": "string",
                  "enum": [
                    "workflow",
                    "custom_app"
                  ]
                },
                "isAutomated": {
                  "type": "boolean"
                },
                "source": {
                  "type": "string"
                }
              }
            }
          },
          "departmentsToCompare": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Omit to compare all departments."
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "comparisons",
          "narrative"
        ],
        "properties": {
          "comparisons": {
            "type": "array",
            "x-computeSource": "deterministic",
            "items": {
              "type": "object",
              "properties": {
                "department": {
                  "type": "string"
                },
                "processCount": {
                  "type": "integer"
                },
                "automatedCount": {
                  "type": "integer"
                },
                "automationRate": {
                  "type": "number"
                },
                "avgScore": {
                  "type": "number"
                },
                "topProcessIds": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "score_new_process",
      "name": "Score New Process",
      "description": "Estimates a score for a candidate process not yet in the portfolio, by invoking the diezX scoring engine and benchmarking against similar processes.",
      "tags": [
        "scoring",
        "estimation",
        "what-if",
        "agent:lucia"
      ],
      "examples": [
        "\u00bfQu\u00e9 score tendr\u00eda un proceso de aprobaci\u00f3n de gastos?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/lucia/skills/score_new_process",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "candidateProcess",
          "scoringWeights"
        ],
        "properties": {
          "candidateProcess": {
            "type": "object",
            "required": [
              "processName"
            ],
            "properties": {
              "processName": {
                "type": "string"
              },
              "department": {
                "type": "string"
              },
              "estimatedImpact": {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              },
              "effort": {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              },
              "frequency": {
                "type": "string",
                "enum": [
                  "daily",
                  "weekly",
                  "monthly",
                  "quarterly",
                  "ad-hoc"
                ]
              },
              "automationPotential": {
                "type": "number",
                "minimum": 0,
                "maximum": 10
              }
            }
          },
          "scoringWeights": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            }
          },
          "portfolio": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "processId",
                "processName"
              ],
              "properties": {
                "processId": {
                  "type": "string",
                  "description": "Stable content hash. See x-idStrategy."
                },
                "processName": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "level1Process": {
                  "type": "string"
                },
                "finalScore": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "estimatedImpact": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "effort": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "frequency": {
                  "type": "string",
                  "enum": [
                    "daily",
                    "weekly",
                    "monthly",
                    "quarterly",
                    "ad-hoc"
                  ]
                },
                "automationPotential": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "solutionType": {
                  "type": "string",
                  "enum": [
                    "workflow",
                    "custom_app"
                  ]
                },
                "isAutomated": {
                  "type": "boolean"
                },
                "source": {
                  "type": "string"
                }
              }
            },
            "description": "Optional \u2014 used to find comparable processes for benchmarking."
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "estimatedScore",
          "confidence",
          "reasoning"
        ],
        "properties": {
          "estimatedScore": {
            "type": "number",
            "minimum": 0,
            "maximum": 10,
            "x-computeSource": "deterministic",
            "description": "From the diezX scoring engine (shared/utils/scoring)."
          },
          "confidence": {
            "type": "string",
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "x-computeSource": "deterministic",
            "description": "Based on completeness of input fields."
          },
          "comparableProcessIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-computeSource": "deterministic"
          },
          "reasoning": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "compare_departments_v2",
      "name": "Compare Departments (v2 \u2014 company-scoped)",
      "description": "Same output as compare_departments, but resolves the portfolio from company context (MongoDB) instead of requiring the caller to pass it. Use this variant when calling from external A2A agents that do not have diezX DB access. companyId derived from JWT; body override must match (else 403).",
      "tags": [
        "analysis",
        "comparison",
        "departments",
        "v2",
        "company-scoped",
        "agent:lucia"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/lucia/skills/compare_departments_v2",
      "x-inputSchema": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "string",
            "description": "Optional. Must match the JWT subject companyId."
          },
          "departmentsToCompare": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Omit to compare all departments."
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "$ref": "#/skills/compare_departments/x-outputSchema",
        "description": "Identical to compare_departments v1 output."
      }
    },
    {
      "id": "connect_interview_to_process_v2",
      "name": "Connect Interview to Process (v2 \u2014 company-scoped)",
      "description": "Same output as connect_interview_to_process. Interviews still come in the input (they are caller-specific), but the portfolio is resolved from company context (MongoDB). Use this variant when calling from external A2A agents that do not have diezX DB access.",
      "tags": [
        "interviews",
        "mapping",
        "discrepancy-detection",
        "v2",
        "company-scoped",
        "agent:lucia"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/lucia/skills/connect_interview_to_process_v2",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "interviews"
        ],
        "properties": {
          "companyId": {
            "type": "string",
            "description": "Optional. Must match the JWT subject companyId."
          },
          "interviews": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "recipientName",
                "department",
                "painPoints"
              ],
              "properties": {
                "recipientName": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "painPoints": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "description",
                      "frustrationLevel"
                    ],
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "currentProcess": {
                        "type": "string"
                      },
                      "frequency": {
                        "type": "string",
                        "enum": [
                          "daily",
                          "weekly",
                          "monthly"
                        ]
                      },
                      "timeSpentMinutes": {
                        "type": "integer"
                      },
                      "frustrationLevel": {
                        "type": "string",
                        "enum": [
                          "high",
                          "medium",
                          "low"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "$ref": "#/skills/connect_interview_to_process/x-outputSchema",
        "description": "Identical to connect_interview_to_process v1 output."
      }
    },
    {
      "id": "validate_automation_design",
      "name": "Validate Automation Design",
      "description": "Pre-deploy gate. Given an AutomationDesign, runs structural checks (orphan approvals, flowGraph integrity, cycles, missing assignees, systems not present in companyTools) and returns an issues list + a narrative recommendation. The issues list is deterministic; the narrative is LLM-generated.",
      "tags": [
        "execution",
        "validation",
        "pre-deploy",
        "quality",
        "agent:diego"
      ],
      "examples": [
        "Antes de shipear este workflow, \u00bfhay algo que falte o est\u00e9 mal armado?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/validate_automation_design",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "automationDesign"
        ],
        "properties": {
          "automationDesign": {
            "type": "object",
            "properties": {
              "executionModel": {
                "type": "string"
              },
              "proposedFlow": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "flowGraph": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "description": "Adjacency list as array of [from, to] index pairs."
              },
              "systemsUsed": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "aiStepModels": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "stepIndex": {
                      "type": "integer"
                    },
                    "geminiModel": {
                      "type": "string"
                    }
                  }
                }
              },
              "approvalAssignments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "stepIndex": {
                      "type": "integer"
                    },
                    "assignees": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "reason": {
                      "type": "string"
                    }
                  }
                }
              },
              "frequency": {
                "type": "string"
              }
            }
          },
          "companyTools": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional. Systems already integrated in the company \u2014 used to flag systemsUsed entries that are not available."
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "readyToDeploy",
          "issues",
          "narrative"
        ],
        "properties": {
          "readyToDeploy": {
            "type": "boolean",
            "x-computeSource": "deterministic",
            "description": "True when there are zero severity=blocker issues."
          },
          "issues": {
            "type": "array",
            "x-computeSource": "deterministic",
            "items": {
              "type": "object",
              "properties": {
                "severity": {
                  "type": "string",
                  "enum": [
                    "blocker",
                    "warning",
                    "info"
                  ]
                },
                "code": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                },
                "stepIndex": {
                  "type": "integer"
                }
              }
            }
          },
          "summary": {
            "type": "object",
            "x-computeSource": "deterministic",
            "properties": {
              "stepCount": {
                "type": "integer"
              },
              "approvalCount": {
                "type": "integer"
              },
              "systemCount": {
                "type": "integer"
              },
              "hasCycles": {
                "type": "boolean"
              }
            }
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "assign_implementation_champion",
      "name": "Assign Implementation Champion",
      "description": "Picks the best person to own deployment of a given automation. Filters candidates deterministically (AI champions first, department match, role match) then the LLM ranks the top shortlist and returns its pick with rationale. Useful when an external agent has the org chart but needs Diego to recommend *who* should ship this.",
      "tags": [
        "execution",
        "assignment",
        "champions",
        "org-chart",
        "agent:diego"
      ],
      "examples": [
        "\u00bfQui\u00e9n del equipo deber\u00eda liderar la implementaci\u00f3n de este workflow de Finanzas?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/assign_implementation_champion",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "process",
          "candidates"
        ],
        "properties": {
          "process": {
            "type": "object",
            "required": [
              "processName"
            ],
            "properties": {
              "processId": {
                "type": "string"
              },
              "processName": {
                "type": "string"
              },
              "department": {
                "type": "string"
              },
              "solutionType": {
                "type": "string",
                "enum": [
                  "workflow",
                  "custom_app"
                ]
              },
              "finalScore": {
                "type": "number"
              },
              "estimatedImpact": {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high"
                ]
              }
            }
          },
          "candidates": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "isAiChampion": {
                  "type": "boolean"
                },
                "skills": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "pick",
          "rationale",
          "shortlist"
        ],
        "properties": {
          "pick": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "x-computeSource": "llm"
              },
              "confidence": {
                "type": "string",
                "enum": [
                  "high",
                  "medium",
                  "low"
                ],
                "x-computeSource": "deterministic"
              }
            }
          },
          "shortlist": {
            "type": "array",
            "x-computeSource": "deterministic",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "matchScore": {
                  "type": "number"
                },
                "matchReasons": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "rationale": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "design_automation",
      "name": "Design Automation",
      "description": "Given a process (name, department, frequency, systems involved, why-it-matters), produces an executable AutomationDesign: ordered proposedFlow, flowGraph (adjacency list), systemsUsed (constrained to companyTools when provided), approvalAssignments with suggested roles, and executionModel. The LLM does the design synthesis; a deterministic post-processor sanitizes the output (drops out-of-bounds edges, self-loops, duplicates, systems not in companyTools, truncates flows >30 steps, infers a linear graph if the model omits edges) and reports every fix in postValidationFixes so the caller can audit.",
      "tags": [
        "execution",
        "design",
        "workflow",
        "creative",
        "agent:diego"
      ],
      "examples": [
        "Dise\u00f1ame el workflow para reconciliaci\u00f3n bancaria mensual."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/design_automation",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "process"
        ],
        "properties": {
          "process": {
            "type": "object",
            "required": [
              "processName"
            ],
            "properties": {
              "processId": {
                "type": "string"
              },
              "processName": {
                "type": "string"
              },
              "department": {
                "type": "string"
              },
              "whyItMatters": {
                "type": "string"
              },
              "frequency": {
                "type": "string",
                "enum": [
                  "daily",
                  "weekly",
                  "monthly",
                  "quarterly",
                  "ad-hoc"
                ]
              },
              "estimatedHoursPerMonth": {
                "type": "number"
              },
              "monthlyVolume": {
                "type": "number"
              },
              "systemsInvolved": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "companyTools": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional. Constrains systemsUsed to integrations the company already has."
          },
          "solutionTypeHint": {
            "type": "string",
            "enum": [
              "workflow",
              "custom_app"
            ]
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "automationDesign",
          "postValidationFixes",
          "narrative"
        ],
        "properties": {
          "automationDesign": {
            "type": "object",
            "x-computeSource": "hybrid",
            "properties": {
              "proposedFlow": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "x-computeSource": "llm"
              },
              "flowGraph": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "x-computeSource": "llm"
              },
              "systemsUsed": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "x-computeSource": "llm"
              },
              "approvalAssignments": {
                "type": "array",
                "items": {
                  "type": "object"
                },
                "x-computeSource": "llm"
              },
              "executionModel": {
                "type": "string",
                "x-computeSource": "llm"
              },
              "frequency": {
                "type": "string",
                "x-computeSource": "llm"
              }
            }
          },
          "postValidationFixes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-computeSource": "deterministic",
            "description": "List of fixes the deterministic sanitizer applied to the LLM output. Empty when the model produced a clean design."
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "recommend_next_processes",
      "name": "Recommend or Challenge Next Processes",
      "description": "Recommends what to automate first from the process portfolio. If proposedOrder is omitted, returns top-N processes to automate next; if proposedOrder is provided, pressure-tests it against portfolio data and returns agreement/concerns/counter-proposal.",
      "tags": [
        "execution",
        "prioritization",
        "recommendation",
        "challenge",
        "roadmap",
        "agent:diego"
      ],
      "examples": [
        "\u00bfQu\u00e9 automatizo primero este trimestre?",
        "Pensaba arrancar con facturaci\u00f3n. \u00bfTiene sentido?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/recommend_next_processes",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "portfolio"
        ],
        "properties": {
          "portfolio": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "processId",
                "processName"
              ],
              "properties": {
                "processId": {
                  "type": "string",
                  "description": "Stable content hash. See x-idStrategy."
                },
                "processName": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "level1Process": {
                  "type": "string"
                },
                "finalScore": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "estimatedImpact": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "effort": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "frequency": {
                  "type": "string",
                  "enum": [
                    "daily",
                    "weekly",
                    "monthly",
                    "quarterly",
                    "ad-hoc"
                  ]
                },
                "automationPotential": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "solutionType": {
                  "type": "string",
                  "enum": [
                    "workflow",
                    "custom_app"
                  ]
                },
                "isAutomated": {
                  "type": "boolean"
                },
                "source": {
                  "type": "string"
                }
              }
            }
          },
          "scoringWeights": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            }
          },
          "filters": {
            "type": "object",
            "properties": {
              "department": {
                "type": "string"
              },
              "solutionType": {
                "type": "string",
                "enum": [
                  "workflow",
                  "custom_app",
                  "any"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "manual",
                  "automated",
                  "any"
                ]
              }
            }
          },
          "topN": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 3
          },
          "proposedOrder": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If provided, switches skill to challenge mode. Ordered processIds the caller wants critiqued."
          },
          "interviewInsights": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "recipientName",
                "department",
                "painPoints"
              ],
              "properties": {
                "recipientName": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "painPoints": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "description",
                      "frustrationLevel"
                    ],
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "currentProcess": {
                        "type": "string"
                      },
                      "frequency": {
                        "type": "string",
                        "enum": [
                          "daily",
                          "weekly",
                          "monthly"
                        ]
                      },
                      "timeSpentMinutes": {
                        "type": "integer"
                      },
                      "frustrationLevel": {
                        "type": "string",
                        "enum": [
                          "high",
                          "medium",
                          "low"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "mode",
          "rationale"
        ],
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "recommend",
              "challenge"
            ],
            "x-computeSource": "deterministic"
          },
          "recommendations": {
            "type": "array",
            "x-computeSource": "hybrid",
            "items": {
              "type": "object",
              "required": [
                "processId",
                "rank"
              ],
              "properties": {
                "processId": {
                  "type": "string"
                },
                "processName": {
                  "type": "string"
                },
                "rank": {
                  "type": "integer"
                },
                "reason": {
                  "type": "string",
                  "x-computeSource": "llm"
                }
              }
            }
          },
          "verdict": {
            "type": "string",
            "enum": [
              "agree",
              "agree_with_concerns",
              "disagree"
            ],
            "x-computeSource": "deterministic",
            "description": "Only present in challenge mode. Computed from positional match between proposedOrder and counterProposal."
          },
          "concerns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-computeSource": "llm"
          },
          "counterProposal": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-computeSource": "deterministic"
          },
          "rationale": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "explain_pareto_breakdown",
      "name": "Explain Pareto Breakdown",
      "description": "Identifies the top X% of processes by score that account for the bulk of estimated impact (Pareto 20/80).",
      "tags": [
        "execution",
        "pareto",
        "prioritization",
        "analysis",
        "agent:diego"
      ],
      "examples": [
        "\u00bfCu\u00e1l es mi 20/80 de procesos?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/explain_pareto_breakdown",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "portfolio"
        ],
        "properties": {
          "portfolio": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "processId",
                "processName"
              ],
              "properties": {
                "processId": {
                  "type": "string",
                  "description": "Stable content hash. See x-idStrategy."
                },
                "processName": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "level1Process": {
                  "type": "string"
                },
                "finalScore": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "estimatedImpact": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "effort": {
                  "type": "string",
                  "enum": [
                    "low",
                    "medium",
                    "high"
                  ]
                },
                "frequency": {
                  "type": "string",
                  "enum": [
                    "daily",
                    "weekly",
                    "monthly",
                    "quarterly",
                    "ad-hoc"
                  ]
                },
                "automationPotential": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 10
                },
                "solutionType": {
                  "type": "string",
                  "enum": [
                    "workflow",
                    "custom_app"
                  ]
                },
                "isAutomated": {
                  "type": "boolean"
                },
                "source": {
                  "type": "string"
                }
              }
            }
          },
          "cutoffPercent": {
            "type": "integer",
            "minimum": 5,
            "maximum": 50,
            "default": 20
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "paretoSet",
          "cumulativeImpactPercent",
          "narrative"
        ],
        "properties": {
          "paretoSet": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-computeSource": "deterministic",
            "description": "processIds in the top cutoffPercent."
          },
          "cumulativeImpactPercent": {
            "type": "number",
            "x-computeSource": "deterministic"
          },
          "isClassicPareto": {
            "type": "boolean",
            "x-computeSource": "deterministic",
            "description": "True if cutoff% of processes deliver >= 70% of impact."
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "validate_automation_design_v2",
      "name": "Validate Automation Design (v2 \u2014 process resolved server-side)",
      "description": "Same output as validate_automation_design, but resolves the AutomationDesign and companyTools from MongoDB given a processId. companyId is derived from the JWT (or passed explicitly in body, must match else 403). Use this variant when calling from external A2A agents that have a process reference but no DB access.",
      "tags": [
        "execution",
        "validation",
        "pre-deploy",
        "v2",
        "company-scoped",
        "agent:diego"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/validate_automation_design_v2",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "processId"
        ],
        "properties": {
          "processId": {
            "type": "string",
            "description": "stableProcessId (preferred) or Mongo _id of the process within the caller company."
          },
          "companyId": {
            "type": "string",
            "description": "Optional. Must match the JWT subject companyId."
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "$ref": "#/skills/validate_automation_design/x-outputSchema",
        "description": "Identical to validate_automation_design v1 output."
      }
    },
    {
      "id": "assign_implementation_champion_v2",
      "name": "Assign Implementation Champion (v2 \u2014 process + candidates resolved server-side)",
      "description": "Same output as assign_implementation_champion, but resolves the process and the candidate pool (active company users with name/department/title/AI-champion flag) from MongoDB given a processId. companyId is derived from the JWT.",
      "tags": [
        "execution",
        "assignment",
        "champions",
        "v2",
        "company-scoped",
        "agent:diego"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/assign_implementation_champion_v2",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "processId"
        ],
        "properties": {
          "processId": {
            "type": "string"
          },
          "companyId": {
            "type": "string",
            "description": "Optional. Must match the JWT subject companyId."
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "$ref": "#/skills/assign_implementation_champion/x-outputSchema",
        "description": "Identical to assign_implementation_champion v1 output."
      }
    },
    {
      "id": "generate_n8n_workflow",
      "name": "Generate n8n Workflow Skeleton",
      "description": "Given an AutomationDesign, produces an n8n workflow SKELETON: nodes mapped to native n8n node types using the diezX NATIVE_NODES registry (Hubspot, Salesforce, Slack, Gmail, etc.), with trigger variant for the first step where available, Wait node for approvals, Set node for pure data shaping, and HTTP fallback when no native node matches. Connections derived from the AutomationDesign flowGraph. Per-step nodeMapping is fully deterministic \u2014 the LLM only writes a short narrative explaining required credentials and HTTP fallback steps. The output is NOT a fully-valid n8n .json (positions and parameters need a developer pass) but it IS the right starting point.",
      "tags": [
        "execution",
        "n8n",
        "workflow-generation",
        "integrations",
        "agent:diego"
      ],
      "examples": [
        "Convert\u00ed este design en un skeleton de n8n."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/generate_n8n_workflow",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "automationDesign",
          "processName"
        ],
        "properties": {
          "automationDesign": {
            "type": "object",
            "properties": {
              "executionModel": {
                "type": "string"
              },
              "proposedFlow": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "flowGraph": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "description": "Adjacency list as array of [from, to] index pairs."
              },
              "systemsUsed": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "aiStepModels": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "stepIndex": {
                      "type": "integer"
                    },
                    "geminiModel": {
                      "type": "string"
                    }
                  }
                }
              },
              "approvalAssignments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "stepIndex": {
                      "type": "integer"
                    },
                    "assignees": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "reason": {
                      "type": "string"
                    }
                  }
                }
              },
              "frequency": {
                "type": "string"
              }
            }
          },
          "processName": {
            "type": "string"
          },
          "companyTools": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "skeleton",
          "nodeMapping",
          "unmappedSteps",
          "narrative"
        ],
        "properties": {
          "skeleton": {
            "type": "object",
            "x-computeSource": "deterministic",
            "properties": {
              "workflowName": {
                "type": "string"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "isTrigger": {
                      "type": "boolean"
                    },
                    "credentialType": {
                      "type": "string"
                    },
                    "notes": {
                      "type": "string"
                    }
                  }
                }
              },
              "connections": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "from": {
                      "type": "string"
                    },
                    "to": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "nodeMapping": {
            "type": "array",
            "x-computeSource": "deterministic",
            "items": {
              "type": "object"
            }
          },
          "unmappedSteps": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "generate_custom_app_brief",
      "name": "Generate Custom App Brief",
      "description": "Produces a CustomAppBrief for processes that do NOT fit a linear workflow (dashboards, complex forms, internal mini-apps). Output matches the diezX CustomAppBrief shape: appName, objective, targetUsers, dataSources (constrained to companyTools when provided), coreFeatures (capped at 12), screens (capped at 8) with React/Tailwind component hints, estimatedEffort enum, and goalsAlignment (filtered to caller-supplied goals). The brief is mostly LLM-emitted; a deterministic post-processor caps lists and filters dataSources/goals against allowlists. All fixes recorded in postValidationFixes.",
      "tags": [
        "execution",
        "custom-app",
        "design",
        "product-brief",
        "agent:diego"
      ],
      "examples": [
        "Produc\u00ed el brief para un dashboard interno de aprobaciones de gastos."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/generate_custom_app_brief",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "process"
        ],
        "properties": {
          "process": {
            "type": "object",
            "required": [
              "processName"
            ],
            "properties": {
              "processId": {
                "type": "string"
              },
              "processName": {
                "type": "string"
              },
              "whyItMatters": {
                "type": "string"
              },
              "department": {
                "type": "string"
              },
              "systemsInvolved": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "estimatedHoursPerMonth": {
                "type": "number"
              }
            }
          },
          "companyTools": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "goalsAlignment": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional. The brief's goalsAlignment is filtered to this allowlist."
          },
          "targetUserRoles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "customAppBrief",
          "postValidationFixes",
          "narrative"
        ],
        "properties": {
          "customAppBrief": {
            "type": "object",
            "x-computeSource": "hybrid"
          },
          "postValidationFixes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "diagnose_execution_issue",
      "name": "Diagnose Execution Issue",
      "description": "Given a symptom (free-text, error message, or execution complaint) plus optionally the AutomationDesign + companyTools + recent logs, returns up to 4 ranked hypotheses with category, confidence, and a concrete suggestedFix per hypothesis. A deterministic categorizer pre-detects common failure modes via regex (auth_or_credential, rate_limit, permission_denied, timeout_or_slow, data_shape_mismatch, integration_missing) and tries to identify the failed step from \"step N\" / \"paso N\" references. The LLM ranks and produces hypotheses, aligned to the pre-detected categories when evidence is strong.",
      "tags": [
        "execution",
        "diagnosis",
        "troubleshooting",
        "continuous-operation",
        "agent:diego"
      ],
      "examples": [
        "El workflow falla en el paso 3 con 401 Unauthorized \u2014 qu\u00e9 pas\u00f3?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/diagnose_execution_issue",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "symptom"
        ],
        "properties": {
          "symptom": {
            "type": "string"
          },
          "automationDesign": {
            "type": "object",
            "properties": {
              "executionModel": {
                "type": "string"
              },
              "proposedFlow": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "flowGraph": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "description": "Adjacency list as array of [from, to] index pairs."
              },
              "systemsUsed": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "aiStepModels": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "stepIndex": {
                      "type": "integer"
                    },
                    "geminiModel": {
                      "type": "string"
                    }
                  }
                }
              },
              "approvalAssignments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "stepIndex": {
                      "type": "integer"
                    },
                    "assignees": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "reason": {
                      "type": "string"
                    }
                  }
                }
              },
              "frequency": {
                "type": "string"
              }
            }
          },
          "failedStepIndex": {
            "type": "integer"
          },
          "recentLogs": {
            "type": "string"
          },
          "companyTools": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "detectedCategories",
          "hypotheses",
          "narrative"
        ],
        "properties": {
          "detectedCategories": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "auth_or_credential",
                "rate_limit",
                "integration_missing",
                "data_shape_mismatch",
                "timeout_or_slow",
                "permission_denied",
                "unknown"
              ]
            },
            "x-computeSource": "deterministic"
          },
          "failedStep": {
            "type": "object",
            "x-computeSource": "deterministic",
            "properties": {
              "index": {
                "type": "integer"
              },
              "description": {
                "type": "string"
              }
            }
          },
          "hypotheses": {
            "type": "array",
            "x-computeSource": "llm",
            "items": {
              "type": "object",
              "properties": {
                "rank": {
                  "type": "integer"
                },
                "category": {
                  "type": "string"
                },
                "hypothesis": {
                  "type": "string"
                },
                "confidence": {
                  "type": "string",
                  "enum": [
                    "high",
                    "medium",
                    "low"
                  ]
                },
                "suggestedFix": {
                  "type": "string"
                }
              }
            }
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "generate_n8n_workflow_v2",
      "name": "Generate n8n Workflow Skeleton (v2 \u2014 process resolved server-side)",
      "description": "Same output as generate_n8n_workflow, but resolves the AutomationDesign + companyTools from MongoDB given a processId. Errors with 400 if the process has no automationDesign yet (suggests running design_automation first).",
      "tags": [
        "execution",
        "n8n",
        "workflow-generation",
        "v2",
        "company-scoped",
        "agent:diego"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/generate_n8n_workflow_v2",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "processId"
        ],
        "properties": {
          "processId": {
            "type": "string"
          },
          "companyId": {
            "type": "string"
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "$ref": "#/skills/generate_n8n_workflow/x-outputSchema",
        "description": "Identical to generate_n8n_workflow v1 output."
      }
    },
    {
      "id": "generate_custom_app_brief_v2",
      "name": "Generate Custom App Brief (v2 \u2014 process resolved server-side)",
      "description": "Same output as generate_custom_app_brief, but resolves the process and companyTools from MongoDB given a processId. goalsAlignment and targetUserRoles can still be supplied in the body (they are caller-specific context).",
      "tags": [
        "execution",
        "custom-app",
        "v2",
        "company-scoped",
        "agent:diego"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/generate_custom_app_brief_v2",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "processId"
        ],
        "properties": {
          "processId": {
            "type": "string"
          },
          "companyId": {
            "type": "string"
          },
          "goalsAlignment": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "targetUserRoles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "$ref": "#/skills/generate_custom_app_brief/x-outputSchema",
        "description": "Identical to generate_custom_app_brief v1 output."
      }
    },
    {
      "id": "diagnose_execution_issue_v2",
      "name": "Diagnose Execution Issue (v2 \u2014 process resolved server-side)",
      "description": "Same output as diagnose_execution_issue, but resolves the AutomationDesign and companyTools from MongoDB given a processId. The symptom is still required in the body \u2014 that is the caller-specific context.",
      "tags": [
        "execution",
        "diagnosis",
        "troubleshooting",
        "v2",
        "company-scoped",
        "agent:diego"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/diagnose_execution_issue_v2",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "processId",
          "symptom"
        ],
        "properties": {
          "processId": {
            "type": "string"
          },
          "symptom": {
            "type": "string"
          },
          "failedStepIndex": {
            "type": "integer"
          },
          "recentLogs": {
            "type": "string"
          },
          "companyId": {
            "type": "string"
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "$ref": "#/skills/diagnose_execution_issue/x-outputSchema",
        "description": "Identical to diagnose_execution_issue v1 output."
      }
    },
    {
      "id": "recommend_next_processes_v2",
      "name": "Recommend or Challenge Next Processes (v2 \u2014 company-scoped)",
      "description": "Same output as recommend_next_processes, but resolves the portfolio from company context (MongoDB) instead of requiring the caller to pass it. Use this variant when calling from external A2A agents that do not have diezX DB access. companyId is derived from the bearer JWT; passing it explicitly in the body is supported but must match (else 403).",
      "tags": [
        "execution",
        "prioritization",
        "recommendation",
        "challenge",
        "roadmap",
        "v2",
        "company-scoped",
        "agent:diego"
      ],
      "examples": [
        "\u00bfQu\u00e9 automatizo primero este trimestre? (external A2A agent, no portfolio)",
        "Compare el orden [procId1, procId2, procId3] contra el \u00f3ptimo."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/recommend_next_processes_v2",
      "x-inputSchema": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "string",
            "description": "Optional. Must match the JWT subject companyId. If omitted, derived from JWT."
          },
          "scoringWeights": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            }
          },
          "filters": {
            "type": "object",
            "properties": {
              "department": {
                "type": "string"
              },
              "solutionType": {
                "type": "string",
                "enum": [
                  "workflow",
                  "custom_app",
                  "any"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "manual",
                  "automated",
                  "any"
                ]
              }
            }
          },
          "topN": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 3
          },
          "proposedOrder": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If provided, switches skill to challenge mode."
          },
          "interviewInsights": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "recipientName",
                "department",
                "painPoints"
              ],
              "properties": {
                "recipientName": {
                  "type": "string"
                },
                "department": {
                  "type": "string"
                },
                "painPoints": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "description",
                      "frustrationLevel"
                    ],
                    "properties": {
                      "description": {
                        "type": "string"
                      },
                      "currentProcess": {
                        "type": "string"
                      },
                      "frequency": {
                        "type": "string",
                        "enum": [
                          "daily",
                          "weekly",
                          "monthly"
                        ]
                      },
                      "timeSpentMinutes": {
                        "type": "integer"
                      },
                      "frustrationLevel": {
                        "type": "string",
                        "enum": [
                          "high",
                          "medium",
                          "low"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "$ref": "#/skills/recommend_next_processes/x-outputSchema",
        "description": "Identical to recommend_next_processes v1 output."
      }
    },
    {
      "id": "explain_pareto_breakdown_v2",
      "name": "Explain Pareto Breakdown (v2 \u2014 company-scoped)",
      "description": "Same output as explain_pareto_breakdown, but resolves the portfolio from company context (MongoDB) instead of requiring the caller to pass it. Use this variant when calling from external A2A agents that do not have diezX DB access.",
      "tags": [
        "execution",
        "pareto",
        "prioritization",
        "analysis",
        "v2",
        "company-scoped",
        "agent:diego"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/diego/skills/explain_pareto_breakdown_v2",
      "x-inputSchema": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "string",
            "description": "Optional. Must match the JWT subject companyId."
          },
          "cutoffPercent": {
            "type": "integer",
            "minimum": 5,
            "maximum": 50,
            "default": 20
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "$ref": "#/skills/explain_pareto_breakdown/x-outputSchema",
        "description": "Identical to explain_pareto_breakdown v1 output."
      }
    },
    {
      "id": "summarize_financial_health",
      "name": "Summarize Financial Health",
      "description": "Pulls a P&L snapshot from the connected ERP for the requested period and returns deterministic metrics (income, expenses, margin, top accounts) plus a narrative summary.",
      "tags": [
        "erp",
        "financial-health",
        "narrative",
        "company-scoped",
        "agent:daniel"
      ],
      "examples": [
        "\u00bfC\u00f3mo cerr\u00f3 Q1 financieramente?",
        "Give me a financial health summary for the last quarter."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/daniel/skills/summarize_financial_health",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "startDate",
          "endDate"
        ],
        "properties": {
          "companyId": {
            "type": "string",
            "description": "Optional. Must match the JWT subject companyId."
          },
          "startDate": {
            "type": "string",
            "description": "YYYY-MM-DD"
          },
          "endDate": {
            "type": "string",
            "description": "YYYY-MM-DD"
          },
          "legalEntityId": {
            "type": "string",
            "description": "Optional Mongo ID of the legal entity."
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "provider",
          "currency",
          "period",
          "metrics",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "xero",
              "netsuite"
            ],
            "x-computeSource": "deterministic"
          },
          "currency": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "period": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "metrics": {
            "type": "object",
            "x-computeSource": "deterministic",
            "properties": {
              "income": {
                "type": "number"
              },
              "expenses": {
                "type": "number"
              },
              "cogs": {
                "type": "number"
              },
              "netIncome": {
                "type": "number"
              },
              "grossMargin": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "expenseRatio": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "topExpenseAccounts": {
                "type": "array"
              },
              "topIncomeAccounts": {
                "type": "array"
              }
            }
          },
          "narrative": {
            "type": "string",
            "maxLength": 1500,
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "explain_pl_variance",
      "name": "Explain P&L Variance",
      "description": "Compares two ERP P&L periods and returns deterministic deltas (income, expenses, net income, top driver accounts) plus a narrative explaining what is driving the change.",
      "tags": [
        "erp",
        "variance",
        "comparison",
        "company-scoped",
        "agent:daniel"
      ],
      "examples": [
        "\u00bfQu\u00e9 pas\u00f3 este mes vs el anterior?",
        "Why did margin drop quarter over quarter?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/daniel/skills/explain_pl_variance",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "currentPeriod",
          "comparisonPeriod"
        ],
        "properties": {
          "companyId": {
            "type": "string"
          },
          "currentPeriod": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "comparisonPeriod": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "legalEntityId": {
            "type": "string"
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "totalsDelta",
          "topDrivers",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "currency": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "currentPeriod": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "comparisonPeriod": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "totalsDelta": {
            "type": "object",
            "x-computeSource": "deterministic"
          },
          "topDrivers": {
            "type": "array",
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "connect_process_to_financial_outcome",
      "name": "Connect Process to Financial Outcome",
      "description": "Takes a processId from the diezX portfolio plus ERP context and estimates the annualized dollar savings of automating it, expressed as both an absolute number and as a % of operating expenses.",
      "tags": [
        "erp",
        "roi",
        "process-impact",
        "company-scoped",
        "agent:daniel"
      ],
      "examples": [
        "\u00bfCu\u00e1nto ahorrar\u00edamos automatizando reconciliaci\u00f3n bancaria?",
        "Is automating PO matching material to our P&L?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/daniel/skills/connect_process_to_financial_outcome",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "processId",
          "startDate",
          "endDate"
        ],
        "properties": {
          "companyId": {
            "type": "string"
          },
          "processId": {
            "type": "string",
            "description": "stableProcessId from the diezX portfolio."
          },
          "startDate": {
            "type": "string"
          },
          "endDate": {
            "type": "string"
          },
          "blendedHourlyCost": {
            "type": "number",
            "minimum": 0,
            "default": 35
          },
          "manualMinutesPerRun": {
            "type": "number",
            "minimum": 0,
            "default": 30
          },
          "runsPerPeriod": {
            "type": "number",
            "minimum": 0,
            "description": "Optional override; defaults to inferred from process frequency."
          },
          "legalEntityId": {
            "type": "string"
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "estimate",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "currency": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "period": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "estimate": {
            "type": "object",
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "flag_financial_anomalies",
      "name": "Flag Financial Anomalies",
      "description": "Compares two ERP P&L periods and surfaces anomalies (expense spikes, revenue drops, net loss, expense concentration, unexplained accounts) ranked by severity, plus a narrative recommending where to investigate first.",
      "tags": [
        "erp",
        "anomalies",
        "risk",
        "company-scoped",
        "agent:daniel"
      ],
      "examples": [
        "\u00bfHay alg\u00fan gasto raro este mes?",
        "Anything weird in the books vs last quarter?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/daniel/skills/flag_financial_anomalies",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "currentPeriod",
          "comparisonPeriod"
        ],
        "properties": {
          "companyId": {
            "type": "string"
          },
          "currentPeriod": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "comparisonPeriod": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "legalEntityId": {
            "type": "string"
          },
          "materialityFloor": {
            "type": "number",
            "minimum": 0,
            "default": 1000,
            "description": "Minimum absolute account amount to consider material."
          },
          "spikePercentThreshold": {
            "type": "number",
            "minimum": 0,
            "default": 50,
            "description": "Pct change above which an account is flagged as a spike."
          },
          "revenueDropPercentThreshold": {
            "type": "number",
            "minimum": 0,
            "default": 25
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "anomalies",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "currency": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "currentPeriod": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "comparisonPeriod": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "anomalies": {
            "type": "array",
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "summarize_unverified_expenses",
      "name": "Summarize Unverified Mendel Expenses",
      "description": "Pulls Mendel corporate-card transactions for the period, isolates the ones missing a receipt (`payment.ticketAttached: false`), and returns deterministic metrics (total pending amount, count, % of total spend, oldest pending in days, top employees pending) plus a narrative summary aimed at the close-of-month review.",
      "tags": [
        "mendel",
        "corporate-cards",
        "compliance",
        "close-of-month",
        "company-scoped",
        "agent:daniel"
      ],
      "examples": [
        "\u00bfCu\u00e1ntos gastos sin comprobar tenemos al cierre de este mes?",
        "Show me which employees have receipts pending in Mendel."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/daniel/skills/summarize_unverified_expenses",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "startDate",
          "endDate"
        ],
        "properties": {
          "companyId": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "description": "YYYY-MM-DD"
          },
          "endDate": {
            "type": "string",
            "description": "YYYY-MM-DD"
          },
          "topN": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "provider",
          "currency",
          "period",
          "metrics",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "mendel"
            ],
            "x-computeSource": "deterministic"
          },
          "currency": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "period": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "metrics": {
            "type": "object",
            "x-computeSource": "deterministic",
            "properties": {
              "totalAmount": {
                "type": "number"
              },
              "totalCount": {
                "type": "integer"
              },
              "unverifiedAmount": {
                "type": "number"
              },
              "unverifiedCount": {
                "type": "integer"
              },
              "unverifiedAmountRatio": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "oldestPendingDays": {
                "type": "integer"
              },
              "topEmployeesPending": {
                "type": "array"
              }
            }
          },
          "narrative": {
            "type": "string",
            "maxLength": 1500,
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "summarize_corporate_card_spend",
      "name": "Summarize Corporate Card Spend (Mendel)",
      "description": "Pulls Mendel corporate-card transactions for the period and returns deterministic metrics (total spend, average transaction, top categories, top cardholders, optional growth vs comparison period) plus a narrative summary.",
      "tags": [
        "mendel",
        "corporate-cards",
        "spend-analysis",
        "company-scoped",
        "agent:daniel"
      ],
      "examples": [
        "\u00bfC\u00f3mo va el gasto en tarjetas este mes vs el anterior?",
        "Top spenders on Mendel last quarter?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/daniel/skills/summarize_corporate_card_spend",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "startDate",
          "endDate"
        ],
        "properties": {
          "companyId": {
            "type": "string"
          },
          "startDate": {
            "type": "string"
          },
          "endDate": {
            "type": "string"
          },
          "comparisonPeriod": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "topN": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "provider",
          "currency",
          "period",
          "metrics",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "mendel"
            ],
            "x-computeSource": "deterministic"
          },
          "currency": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "period": {
            "type": "object",
            "required": [
              "startDate",
              "endDate"
            ],
            "properties": {
              "startDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              },
              "endDate": {
                "type": "string",
                "description": "YYYY-MM-DD"
              }
            }
          },
          "metrics": {
            "type": "object",
            "x-computeSource": "deterministic",
            "properties": {
              "totalAmount": {
                "type": "number"
              },
              "totalCount": {
                "type": "integer"
              },
              "averageTransaction": {
                "type": "number"
              },
              "topCategories": {
                "type": "array"
              },
              "topCardholders": {
                "type": "array"
              },
              "comparison": {
                "type": [
                  "object",
                  "null"
                ]
              }
            }
          },
          "narrative": {
            "type": "string",
            "maxLength": 1500,
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "forecast_cash_runway",
      "name": "Forecast Cash Runway",
      "description": "Projects months of runway from the company's last N months of net income (avg + worst-month stress test) and current cash on hand. Returns avg/worst/best month, runway months, zero-cash date, and a narrative read on whether the company is in a safe / watch / critical zone.",
      "tags": [
        "erp",
        "cash",
        "forecast",
        "company-scoped",
        "agent:daniel"
      ],
      "examples": [
        "\u00bfCu\u00e1nto runway tenemos?",
        "When do we run out of cash at current burn?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/daniel/skills/forecast_cash_runway",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "cashOnHand"
        ],
        "properties": {
          "companyId": {
            "type": "string"
          },
          "cashOnHand": {
            "type": "number",
            "minimum": 0,
            "description": "Current cash on hand (snapshot currency)."
          },
          "lookbackMonths": {
            "type": "integer",
            "minimum": 1,
            "maximum": 24,
            "default": 6
          },
          "monthlyNetIncomeOverride": {
            "type": "number",
            "description": "Optional override of avg monthly net income (e.g. expected fundraise inflow)."
          },
          "legalEntityId": {
            "type": "string"
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "projection",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "currency": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "cashOnHand": {
            "type": "number",
            "x-computeSource": "deterministic"
          },
          "lookbackMonths": {
            "type": "integer",
            "x-computeSource": "deterministic"
          },
          "monthlySeries": {
            "type": "array",
            "x-computeSource": "deterministic"
          },
          "projection": {
            "type": "object",
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "summarize_pipeline_health",
      "name": "Summarize Pipeline Health",
      "description": "Pulls a snapshot of deals/owners from the connected CRM and returns deterministic pipeline metrics (volume, value, win rate, stage distribution, aging) plus a narrative summary.",
      "tags": [
        "crm",
        "pipeline",
        "narrative",
        "company-scoped",
        "agent:sofia"
      ],
      "examples": [
        "\u00bfC\u00f3mo est\u00e1 el pipeline?",
        "Give me a sales pipeline health summary for the last quarter."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/sofia/skills/summarize_pipeline_health",
      "x-inputSchema": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "string",
            "description": "Optional. Must match the JWT subject companyId."
          },
          "months": {
            "type": "integer",
            "minimum": 1,
            "maximum": 36,
            "default": 12,
            "description": "Lookback window."
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "provider",
          "months",
          "metrics",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "hubspot",
              "zoho-crm"
            ],
            "x-computeSource": "deterministic"
          },
          "months": {
            "type": "integer",
            "x-computeSource": "deterministic"
          },
          "metrics": {
            "type": "object",
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "maxLength": 1500,
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "analyze_pipeline_bottlenecks",
      "name": "Analyze Pipeline Bottlenecks",
      "description": "Computes per-stage open/age/loss-rate metrics and flags bottlenecks (high aging, high loss rate, value concentration) with severity. Returns a narrative prioritizing the most painful one.",
      "tags": [
        "crm",
        "bottlenecks",
        "analysis",
        "company-scoped",
        "agent:sofia"
      ],
      "examples": [
        "\u00bfD\u00f3nde se atasca el pipeline?",
        "Where are deals dying?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/sofia/skills/analyze_pipeline_bottlenecks",
      "x-inputSchema": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "string"
          },
          "months": {
            "type": "integer",
            "minimum": 1,
            "maximum": 36,
            "default": 12
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "stageMetrics",
          "bottlenecks",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "months": {
            "type": "integer",
            "x-computeSource": "deterministic"
          },
          "stageMetrics": {
            "type": "array",
            "x-computeSource": "deterministic"
          },
          "bottlenecks": {
            "type": "array",
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "score_lead_qualification_health",
      "name": "Score Lead Qualification Health",
      "description": "Scores how well the inbound lead qualification process is operating: contact owner coverage, follow-up coverage, response-time SLO adherence, and lead\u2192won conversion. Returns a 0-10 composite score with a letter grade.",
      "tags": [
        "crm",
        "lead-qualification",
        "scoring",
        "company-scoped",
        "agent:sofia"
      ],
      "examples": [
        "\u00bfQu\u00e9 tan bien estamos calificando los leads?",
        "How healthy is our inbound funnel?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/sofia/skills/score_lead_qualification_health",
      "x-inputSchema": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "string"
          },
          "months": {
            "type": "integer",
            "minimum": 1,
            "maximum": 24,
            "default": 6
          },
          "responseTimeSloHours": {
            "type": "number",
            "minimum": 0,
            "default": 24,
            "description": "Target hours from contact creation to first activity."
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "metrics",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "months": {
            "type": "integer",
            "x-computeSource": "deterministic"
          },
          "metrics": {
            "type": "object",
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "recommend_engagement_automations",
      "name": "Recommend Engagement Automations",
      "description": "Detects engagement gaps in the CRM (stalled deals, unattended contacts, missing owners, low-activity reps) and proposes one concrete automation per gap, ordered by severity.",
      "tags": [
        "crm",
        "engagement",
        "automation",
        "recommendation",
        "company-scoped",
        "agent:sofia"
      ],
      "examples": [
        "\u00bfQu\u00e9 automatizaciones de ventas deber\u00edamos priorizar?",
        "Where should we automate sales engagement first?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/sofia/skills/recommend_engagement_automations",
      "x-inputSchema": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "string"
          },
          "months": {
            "type": "integer",
            "minimum": 1,
            "maximum": 24,
            "default": 6
          },
          "stalledDealDays": {
            "type": "integer",
            "minimum": 1,
            "default": 14
          },
          "unattendedContactDays": {
            "type": "integer",
            "minimum": 1,
            "default": 7
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "gaps",
          "recommendations",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "months": {
            "type": "integer",
            "x-computeSource": "deterministic"
          },
          "gaps": {
            "type": "array",
            "x-computeSource": "deterministic"
          },
          "recommendations": {
            "type": "array",
            "x-computeSource": "llm"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "forecast_pipeline_velocity",
      "name": "Forecast Pipeline Velocity",
      "description": "Builds a baseline of cycle time + annualized throughput from closed-won deals and projects the upside of a cycle-time reduction (default 20%). Includes confidence based on sample size.",
      "tags": [
        "crm",
        "forecast",
        "velocity",
        "company-scoped",
        "agent:sofia"
      ],
      "examples": [
        "\u00bfCu\u00e1nto subir\u00eda el throughput si bajamos cycle time 30%?",
        "What does pipeline velocity look like if we automate quote follow-ups?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/sofia/skills/forecast_pipeline_velocity",
      "x-inputSchema": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "string"
          },
          "months": {
            "type": "integer",
            "minimum": 1,
            "maximum": 36,
            "default": 12
          },
          "cycleTimeReductionPercent": {
            "type": "number",
            "minimum": 0,
            "maximum": 90,
            "default": 20
          },
          "scenarioName": {
            "type": "string",
            "description": "Optional process name being modeled (for narrative)."
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "baseline",
          "forecast",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "months": {
            "type": "integer",
            "x-computeSource": "deterministic"
          },
          "baseline": {
            "type": "object",
            "x-computeSource": "deterministic"
          },
          "forecast": {
            "type": "object",
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    },
    {
      "id": "connect_process_to_revenue_outcome",
      "name": "Connect Process to Revenue Outcome",
      "description": "Takes a processId from the diezX portfolio and CRM context, then estimates the annualized revenue lift of automating it (via win-rate uplift \u00d7 annualized deal attempts \u00d7 avg deal size).",
      "tags": [
        "crm",
        "roi",
        "process-impact",
        "company-scoped",
        "agent:sofia"
      ],
      "examples": [
        "\u00bfCu\u00e1nto revenue extra trae automatizar lead routing?",
        "Is automating quote generation material to revenue?"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "x-endpoint": "https://agents.diezx.ai/api/a2a/sofia/skills/connect_process_to_revenue_outcome",
      "x-inputSchema": {
        "type": "object",
        "required": [
          "processId"
        ],
        "properties": {
          "companyId": {
            "type": "string"
          },
          "processId": {
            "type": "string",
            "description": "stableProcessId from the diezX portfolio."
          },
          "months": {
            "type": "integer",
            "minimum": 1,
            "maximum": 36,
            "default": 12
          },
          "expectedWinRateLiftPp": {
            "type": "number",
            "minimum": 0,
            "default": 2,
            "description": "Expected lift in win rate (percentage points)."
          },
          "expectedResponseTimeReductionHours": {
            "type": "number",
            "minimum": 0,
            "default": 12
          },
          "userLanguage": {
            "type": "string",
            "enum": [
              "en",
              "es"
            ],
            "default": "en"
          }
        }
      },
      "x-outputSchema": {
        "type": "object",
        "required": [
          "estimate",
          "narrative"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "x-computeSource": "deterministic"
          },
          "months": {
            "type": "integer",
            "x-computeSource": "deterministic"
          },
          "estimate": {
            "type": "object",
            "x-computeSource": "deterministic"
          },
          "narrative": {
            "type": "string",
            "x-computeSource": "llm"
          }
        }
      }
    }
  ]
}