{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"evidently-ai","slug":"evidently-ai","name":"Evidently AI","type":"repo","url":"https://github.com/evidentlyai/evidently","page_url":"https://unfragile.ai/evidently-ai","categories":["observability","deployment-infra","testing-quality"],"tags":[],"pricing":{"model":"free","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"evidently-ai__cap_0","uri":"capability://data.processing.analysis.statistical.data.drift.detection.with.multivariate.analysis","name":"statistical data drift detection with multivariate analysis","description":"Detects distribution shifts in production data by computing statistical tests (Kolmogorov-Smirnov, chi-square, Jensen-Shannon divergence) across numerical and categorical columns. Evidently's drift detection engine compares reference datasets against production batches using a modular metric system that abstracts statistical computation into pluggable test implementations, enabling both univariate and multivariate drift signals with configurable thresholds and preset bundles (DataDriftPreset) for rapid deployment.","intents":["Monitor whether production data distributions have shifted from training data","Automatically flag data quality issues before they degrade model performance","Set up continuous drift monitoring in CI/CD pipelines with pass/fail conditions"],"best_for":["ML engineers monitoring tabular models in production","Data teams implementing automated data quality gates","Teams building MLOps pipelines with regression testing requirements"],"limitations":["Statistical tests assume sufficient sample size; small batches (<100 rows) may produce unreliable drift signals","Univariate tests don't capture multivariate correlations — requires custom metric composition for complex drift patterns","Categorical drift detection limited to chi-square; no built-in support for ordinal or hierarchical categorical relationships"],"requires":["Python 3.9+","Pandas DataFrame with reference and production datasets","Column mapping configuration (ColumnMapping class) specifying feature types"],"input_types":["pandas.DataFrame (reference dataset)","pandas.DataFrame (production batch)","ColumnMapping specification"],"output_types":["JSON metric results with p-values and test statistics","Interactive HTML report with drift visualizations","Boolean pass/fail conditions for test suites"],"categories":["data-processing-analysis","monitoring"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_1","uri":"capability://automation.workflow.automated.model.quality.regression.testing.with.configurable.thresholds","name":"automated model quality regression testing with configurable thresholds","description":"Executes pass/fail validation on model performance metrics (accuracy, precision, recall, F1, ROC-AUC) by composing TestSuite objects with condition-based assertions. The framework evaluates predictions against ground truth labels using a test condition system that supports threshold comparisons, relative change detection, and statistical significance tests. Results integrate directly into CI/CD pipelines via JSON export and CLI commands, enabling automated regression detection without manual threshold tuning.","intents":["Prevent model performance degradation from reaching production","Automate regression testing in CI/CD without writing custom validation code","Track model quality metrics across retraining cycles with historical comparison"],"best_for":["ML teams with automated retraining pipelines","Data scientists validating model changes before deployment","MLOps engineers building quality gates into deployment workflows"],"limitations":["Test conditions require explicit threshold definition — no automatic threshold learning from historical data","Binary classification focus; multiclass and regression metrics require custom metric implementation","No built-in support for class imbalance weighting — requires external metric preprocessing"],"requires":["Python 3.9+","Pandas DataFrame with predictions and ground truth labels","ColumnMapping with target column specification","Explicit threshold values for test conditions"],"input_types":["pandas.DataFrame with model predictions","pandas.DataFrame with ground truth labels","TestSuite configuration with condition definitions"],"output_types":["JSON test results with pass/fail status","HTML test report with metric visualizations","Exit codes for CI/CD integration (0 = pass, non-zero = fail)"],"categories":["automation-workflow","testing-quality"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_10","uri":"capability://data.processing.analysis.descriptor.based.text.feature.extraction.for.nlp.analysis","name":"descriptor-based text feature extraction for nlp analysis","description":"Extracts row-level text features (sentiment, toxicity, readability, length, language) using a descriptor system where each Descriptor subclass implements a specific feature extraction logic. Descriptors are applied to text columns to generate new columns, which are then aggregated into batch-level metrics. The framework supports both built-in descriptors (using heuristics or lightweight models) and custom descriptors (using external NLP models or APIs).","intents":["Extract semantic features from text data without manual NLP pipeline development","Analyze LLM outputs for quality signals (toxicity, readability, relevance)","Compose complex text analysis by combining multiple descriptors"],"best_for":["NLP teams analyzing text data quality","LLM application teams monitoring output quality","Researchers extracting features for text analysis"],"limitations":["Built-in descriptors use lightweight models; accuracy may be limited for specialized domains","Custom descriptors require external dependencies (e.g., transformers, spaCy); no built-in model management","Descriptor execution is single-threaded; processing large text datasets may be slow","No built-in caching for descriptor results; repeated execution recomputes features"],"requires":["Python 3.9+","Pandas DataFrame with text columns","Optional: external NLP libraries (transformers, spaCy, TextBlob)","Optional: API keys for external services (OpenAI, Hugging Face)"],"input_types":["pandas.Series with text data","Descriptor configuration or custom Descriptor subclass"],"output_types":["pandas.Series with extracted features (e.g., sentiment scores, toxicity flags)","Aggregated batch metrics (e.g., mean sentiment, toxicity rate)"],"categories":["data-processing-analysis","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_11","uri":"capability://automation.workflow.ci.cd.integration.with.test.suite.automation.and.exit.codes","name":"ci/cd integration with test suite automation and exit codes","description":"Enables automated validation in CI/CD pipelines by executing TestSuite objects that return pass/fail results and exit codes. Test suites can be triggered via CLI commands, returning non-zero exit codes on failure to halt deployment. Results are exported as JSON for integration with CI/CD platforms (GitHub Actions, GitLab CI, Jenkins), enabling automated quality gates without custom scripting.","intents":["Prevent model deployment if quality metrics fall below thresholds","Automate data quality validation in data pipelines","Integrate model evaluation into existing CI/CD workflows"],"best_for":["ML teams with automated deployment pipelines","Data engineering teams validating data quality gates","Organizations requiring automated quality checks before production release"],"limitations":["Test suite execution is synchronous; long-running evaluations may timeout in CI/CD environments","Exit codes are binary (pass/fail); no granular failure reporting without JSON parsing","No built-in retry logic or flaky test handling — requires external CI/CD configuration","Test results are not persisted by default; requires custom integration for historical tracking"],"requires":["Python 3.9+","CI/CD platform with Python support (GitHub Actions, GitLab CI, Jenkins, etc.)","TestSuite configuration with test conditions","Data and model artifacts accessible in CI/CD environment"],"input_types":["TestSuite configuration","Data and model artifacts","CLI arguments (optional)"],"output_types":["Exit code (0 = pass, non-zero = fail)","JSON test results file","Console output with test summary"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_12","uri":"capability://data.processing.analysis.grouped.analysis.and.subpopulation.evaluation.with.segment.level.metrics","name":"grouped analysis and subpopulation evaluation with segment-level metrics","description":"Enables evaluation of metrics within subpopulations by specifying group columns in ColumnMapping, allowing segment-level analysis without manual data filtering. Metrics are computed separately for each group, enabling detection of performance disparities across demographic segments, geographic regions, or other categorical dimensions. Results are aggregated and visualized with group-level breakdowns.","intents":["Detect fairness issues by comparing model performance across demographic groups","Analyze data quality and drift separately for different customer segments","Identify underperforming subpopulations for targeted investigation"],"best_for":["ML teams assessing model fairness across demographic groups","Data teams analyzing data quality by segment","Organizations with regulatory requirements for subpopulation analysis"],"limitations":["Group-level metrics require sufficient samples per group; small groups may produce unreliable statistics","No built-in fairness metrics (e.g., demographic parity, equalized odds) — requires custom metric implementation","Visualization is group-level only; no built-in support for intersectional analysis (multiple grouping dimensions)","Performance scales with number of groups; high-cardinality group columns may cause slowdown"],"requires":["Python 3.9+","Pandas DataFrame with group column(s)","ColumnMapping with group column specification","Sufficient samples per group for reliable statistics"],"input_types":["pandas.DataFrame with group column","ColumnMapping with group specification","Metric or preset configuration"],"output_types":["JSON metrics with group-level breakdowns","HTML report with group-level visualizations","Group-level metric comparison"],"categories":["data-processing-analysis","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_2","uri":"capability://data.processing.analysis.llm.output.evaluation.with.semantic.and.statistical.metrics","name":"llm output evaluation with semantic and statistical metrics","description":"Evaluates large language model outputs using a descriptor-based architecture that extracts text features (sentiment, toxicity, readability, answer relevance) and computes statistical aggregations across batches. Descriptors are row-level feature extractors that apply NLP models or heuristics to generate columns, which are then aggregated into batch-level metrics. The framework supports both reference-based metrics (comparing LLM output to ground truth) and reference-free metrics (assessing output properties directly), with integration to external LLM APIs for semantic evaluation.","intents":["Measure LLM output quality without manual annotation","Detect hallucinations, toxicity, or off-topic responses in production","Compare LLM variants (e.g., different prompts, models) using consistent evaluation metrics"],"best_for":["LLM application teams monitoring chatbot or generation quality","Researchers comparing LLM variants in experiments","Teams building automated quality gates for LLM-powered features"],"limitations":["Reference-free metrics (e.g., toxicity) rely on external models; quality depends on underlying model accuracy","Semantic similarity metrics require embedding models; no built-in fine-tuning for domain-specific evaluation","Batch-level aggregation masks individual failure cases — requires custom descriptor composition for row-level alerts"],"requires":["Python 3.9+","Pandas DataFrame with LLM outputs (and optionally reference/ground truth)","External dependencies for semantic metrics (e.g., transformers library, OpenAI API key for reference-based evaluation)","ColumnMapping specifying text columns and prediction/reference columns"],"input_types":["pandas.DataFrame with LLM outputs","Optional: reference/ground truth text for comparison","Descriptor configuration (custom or preset)"],"output_types":["JSON metrics with aggregated text feature statistics","HTML report with text analysis visualizations","Descriptor-generated columns (e.g., sentiment scores, toxicity flags)"],"categories":["data-processing-analysis","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_3","uri":"capability://automation.workflow.interactive.monitoring.dashboard.with.real.time.metric.streaming","name":"interactive monitoring dashboard with real-time metric streaming","description":"Generates web-based dashboards that visualize metrics and test results with interactive filtering, time-series plots, and drill-down capabilities. The dashboard system consumes metric snapshots from reports and test suites, stores them in a backend (file-based or cloud), and renders them via a React-based UI. Real-time monitoring is enabled through a collection API that accepts metric batches, persists them to storage, and updates dashboard views without requiring full report recomputation.","intents":["Visualize model performance and data quality trends over time","Share monitoring results with non-technical stakeholders via web interface","Investigate anomalies by drilling down from aggregate metrics to individual data samples"],"best_for":["ML teams operating production models with continuous monitoring","Data teams presenting data quality metrics to leadership","Cross-functional teams needing shared visibility into model health"],"limitations":["Dashboard rendering requires browser; no native mobile support","Real-time updates depend on collection API polling frequency — latency scales with batch size","Storage backend is pluggable but defaults to local filesystem; cloud backends require separate configuration","No built-in authentication or multi-user access control — requires external reverse proxy for production deployment"],"requires":["Python 3.9+","Web browser (Chrome, Firefox, Safari, Edge)","Storage backend (local filesystem, cloud object store, or database)","Metric snapshots from Report or TestSuite execution"],"input_types":["JSON metric snapshots from reports/test suites","Batch metric data via collection API","Dashboard configuration (optional)"],"output_types":["Interactive HTML dashboard (served via HTTP)","Time-series visualizations (line plots, heatmaps)","Drill-down views with sample-level details"],"categories":["automation-workflow","monitoring"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_4","uri":"capability://code.generation.editing.custom.metric.and.test.composition.with.python.plugin.architecture","name":"custom metric and test composition with python plugin architecture","description":"Enables extension of Evidently's metric system by subclassing Metric and TestCondition base classes, allowing users to implement domain-specific evaluations without modifying framework code. Custom metrics integrate into the unified PythonEngine execution model, enabling composition with built-in metrics in reports and test suites. The plugin architecture supports custom descriptors for text analysis, custom statistical tests, and custom aggregation logic.","intents":["Implement domain-specific metrics not covered by built-in presets","Compose complex evaluation pipelines combining built-in and custom metrics","Reuse custom metrics across multiple reports and test suites"],"best_for":["ML teams with specialized evaluation requirements (e.g., fairness, domain-specific quality)","Researchers implementing novel evaluation techniques","Organizations building internal evaluation frameworks on top of Evidently"],"limitations":["Custom metrics must implement Metric interface; no automatic schema inference — requires explicit result type definition","Debugging custom metrics requires understanding PythonEngine execution model and Snapshot serialization","No built-in testing framework for custom metrics — requires external test harness","Performance optimization (e.g., vectorization, caching) is user's responsibility"],"requires":["Python 3.9+","Understanding of Evidently's Metric and TestCondition base classes","Familiarity with Dataset and ColumnMapping abstractions","Optional: external dependencies for custom evaluation logic"],"input_types":["Python class inheriting from Metric or TestCondition","Dataset object with column mapping","Optional: external data or models for custom evaluation"],"output_types":["Metric result object (serializable to JSON)","Test condition boolean result","Custom visualization (optional, via HTML rendering)"],"categories":["code-generation-editing","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_5","uri":"capability://data.processing.analysis.batch.data.quality.profiling.with.100.built.in.metrics","name":"batch data quality profiling with 100+ built-in metrics","description":"Computes comprehensive data quality metrics across tabular datasets using a preset system that bundles related metrics (DataQualityPreset, DataDriftPreset, TextEvals). Presets encapsulate metric selection, threshold defaults, and visualization templates, enabling one-line data profiling without manual metric composition. The framework supports both reference-based comparison (comparing production to reference dataset) and standalone profiling (assessing data properties directly).","intents":["Profile data quality without writing custom metric code","Compare data distributions across datasets or time periods","Generate data quality reports for stakeholder communication"],"best_for":["Data engineers validating data pipelines","ML teams assessing training data quality before model development","Analytics teams monitoring data warehouse quality"],"limitations":["Presets are opinionated; customization requires composing individual metrics","Metric computation is single-threaded; large datasets (>1GB) may require sampling","No built-in support for nested or semi-structured data (JSON, arrays) — requires preprocessing","Missing value handling is basic (count/percentage); no sophisticated imputation analysis"],"requires":["Python 3.9+","Pandas DataFrame with data to profile","Optional: reference DataFrame for comparison","ColumnMapping specifying feature types (numerical, categorical, text)"],"input_types":["pandas.DataFrame (production/current data)","Optional: pandas.DataFrame (reference/baseline data)","ColumnMapping configuration"],"output_types":["JSON report with metric values and statistics","Interactive HTML report with visualizations","Pandas DataFrame with metric results"],"categories":["data-processing-analysis","testing-quality"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_6","uri":"capability://automation.workflow.report.generation.with.multi.format.export.html.json.python.objects","name":"report generation with multi-format export (html, json, python objects)","description":"Executes a collection of metrics through the PythonEngine and serializes results into multiple formats: interactive HTML reports with visualizations, JSON exports for programmatic consumption, and Python Snapshot objects for in-memory analysis. The Report class orchestrates metric computation, result aggregation, and format rendering without requiring users to manage execution details. Results are cached as Snapshot objects, enabling efficient re-rendering and downstream processing.","intents":["Generate shareable reports for model evaluation and debugging","Export metric results for integration with external systems","Programmatically access metric results for custom analysis"],"best_for":["Data scientists generating experiment reports","ML teams sharing evaluation results with stakeholders","Automated systems consuming metric results for alerting or dashboarding"],"limitations":["HTML reports are static snapshots; no interactive filtering or drill-down beyond preset visualizations","JSON export schema is metric-specific; no unified schema across all metrics","Report generation is synchronous; large reports (100+ metrics) may require several seconds","No built-in report versioning or comparison — requires external tools"],"requires":["Python 3.9+","Pandas DataFrame with data","Metric instances or preset configuration","Optional: Jinja2 for custom HTML templates"],"input_types":["List of Metric instances or preset names","Dataset with ColumnMapping","Optional: custom HTML template"],"output_types":["HTML file with interactive visualizations","JSON file with metric results","Python Snapshot object (in-memory)"],"categories":["automation-workflow","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_7","uri":"capability://data.processing.analysis.column.type.inference.and.schema.mapping.with.automatic.feature.classification","name":"column type inference and schema mapping with automatic feature classification","description":"Automatically infers column types (numerical, categorical, text, datetime) from Pandas DataFrames and generates ColumnMapping objects that specify feature roles (target, prediction, reference, group). The mapping system enables the framework to apply appropriate metrics and statistical tests without manual configuration. Users can override inferred types and define custom column roles for specialized evaluation scenarios.","intents":["Reduce boilerplate by automatically detecting feature types","Enable framework to select appropriate metrics based on data types","Support complex evaluation scenarios (e.g., grouped analysis, multi-output models) via custom column roles"],"best_for":["Data scientists rapidly prototyping evaluations","Teams standardizing column naming conventions","Automated systems processing heterogeneous datasets"],"limitations":["Type inference is heuristic-based; edge cases (e.g., numerical IDs stored as strings) may be misclassified","No support for nested or semi-structured types (JSON, arrays) — requires preprocessing","Custom column roles require manual specification; no automatic role inference","Datetime inference limited to common formats; non-standard formats require explicit specification"],"requires":["Python 3.9+","Pandas DataFrame","Optional: explicit type hints via ColumnMapping"],"input_types":["pandas.DataFrame","Optional: ColumnMapping configuration"],"output_types":["ColumnMapping object with inferred types and roles","Dictionary representation of column schema"],"categories":["data-processing-analysis","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_8","uri":"capability://automation.workflow.time.series.metric.tracking.with.historical.comparison.and.trend.analysis","name":"time-series metric tracking with historical comparison and trend analysis","description":"Tracks metrics across multiple evaluation runs (e.g., daily monitoring batches) and enables historical comparison via the monitoring dashboard and collection API. The framework stores metric snapshots with timestamps, enabling visualization of metric trends, detection of gradual degradation, and comparison against historical baselines. Test conditions can reference historical statistics (e.g., mean, percentile) for adaptive thresholding.","intents":["Monitor metric trends over time to detect gradual degradation","Compare current performance against historical baselines","Identify seasonal patterns or anomalies in metric evolution"],"best_for":["ML teams operating production models with continuous monitoring","Data teams tracking data quality trends","Organizations requiring historical audit trails for compliance"],"limitations":["Historical comparison requires explicit baseline specification; no automatic baseline selection","Trend analysis is visualization-only; no built-in anomaly detection or forecasting","Storage backend must support time-series queries; file-based storage has limited query capabilities","No built-in data retention policies; storage grows unbounded without external cleanup"],"requires":["Python 3.9+","Storage backend with time-series support (file-based, database, cloud object store)","Collection API for metric ingestion","Monitoring dashboard for visualization"],"input_types":["Metric snapshots with timestamps","Historical metric data for baseline comparison"],"output_types":["Time-series visualizations (line plots, heatmaps)","Historical statistics (mean, percentile, trend)","Baseline comparison results"],"categories":["automation-workflow","monitoring"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__cap_9","uri":"capability://data.processing.analysis.statistical.significance.testing.with.configurable.test.selection","name":"statistical significance testing with configurable test selection","description":"Implements a suite of statistical tests (Kolmogorov-Smirnov, chi-square, Jensen-Shannon divergence, t-test, Mann-Whitney U) that can be applied to detect significant differences between distributions or groups. Tests are encapsulated as metric classes that compute p-values and test statistics, enabling integration into reports and test suites. Users can configure test selection, significance levels, and multiple comparison corrections.","intents":["Determine whether observed metric differences are statistically significant","Validate model performance improvements with statistical rigor","Detect data drift with statistical confidence rather than heuristic thresholds"],"best_for":["Researchers validating experimental results","ML teams requiring statistical rigor in model evaluation","Data scientists assessing data quality with confidence intervals"],"limitations":["Test selection is manual; no automatic test choice based on data characteristics","Multiple comparison correction (e.g., Bonferroni) is not built-in; requires custom implementation","Assumptions (e.g., normality for t-test) are not validated; users must verify manually","Effect size reporting is limited; p-values alone don't indicate practical significance"],"requires":["Python 3.9+","Pandas DataFrame with data","Understanding of statistical test assumptions","Scipy library for statistical computations"],"input_types":["pandas.Series or DataFrame columns","Test configuration (test type, significance level)"],"output_types":["p-value and test statistic","Boolean significance result","JSON metric result with statistical details"],"categories":["data-processing-analysis","testing-quality"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"evidently-ai__headline","uri":"capability://data.processing.analysis.ml.and.llm.observability.framework","name":"ml and llm observability framework","description":"Evidently AI is an open-source framework designed for monitoring and evaluating machine learning and large language model systems, focusing on data drift, model quality, and performance in production environments.","intents":["best ML observability tool","LLM performance monitoring framework","open-source ML evaluation tools","how to track data drift in ML models","best practices for model quality monitoring"],"best_for":["data scientists","ML engineers"],"limitations":[],"requires":[],"input_types":["structured datasets","model predictions"],"output_types":["interactive reports","monitoring dashboards"],"categories":["data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":58,"verified":false,"data_access_risk":"high","permissions":["Python 3.9+","Pandas DataFrame with reference and production datasets","Column mapping configuration (ColumnMapping class) specifying feature types","Pandas DataFrame with predictions and ground truth labels","ColumnMapping with target column specification","Explicit threshold values for test conditions","Pandas DataFrame with text columns","Optional: external NLP libraries (transformers, spaCy, TextBlob)","Optional: API keys for external services (OpenAI, Hugging Face)","CI/CD platform with Python support (GitHub Actions, GitLab CI, Jenkins, etc.)"],"failure_modes":["Statistical tests assume sufficient sample size; small batches (<100 rows) may produce unreliable drift signals","Univariate tests don't capture multivariate correlations — requires custom metric composition for complex drift patterns","Categorical drift detection limited to chi-square; no built-in support for ordinal or hierarchical categorical relationships","Test conditions require explicit threshold definition — no automatic threshold learning from historical data","Binary classification focus; multiclass and regression metrics require custom metric implementation","No built-in support for class imbalance weighting — requires external metric preprocessing","Built-in descriptors use lightweight models; accuracy may be limited for specialized domains","Custom descriptors require external dependencies (e.g., transformers, spaCy); no built-in model management","Descriptor execution is single-threaded; processing large text datasets may be slow","No built-in caching for descriptor results; repeated execution recomputes features","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.7,"quality":0.9,"ecosystem":0.6,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.3,"quality":0.2,"ecosystem":0.15,"match_graph":0.3,"freshness":0.05}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:04.691Z","last_scraped_at":null,"last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=evidently-ai","compare_url":"https://unfragile.ai/compare?artifact=evidently-ai"}},"signature":"IhOA9JASJejWtMERbqIpCtBlct1s7GWGMTM/2JOb1g2UfU5M2+gSY1VzBgPCU004l2Cbnwkdf2+7rL3X9cb4Dw==","signedAt":"2026-06-21T15:43:06.030Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/evidently-ai","artifact":"https://unfragile.ai/evidently-ai","verify":"https://unfragile.ai/api/v1/verify?slug=evidently-ai","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}