{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-last9","slug":"last9","name":"Last9","type":"mcp","url":"https://github.com/last9/last9-mcp-server","page_url":"https://unfragile.ai/last9","categories":["mcp-servers","deployment-infra"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-last9__cap_0","uri":"capability://tool.use.integration.production.context.aware.code.debugging.via.mcp","name":"production-context-aware code debugging via mcp","description":"Bridges AI agents (Claude Desktop, Cursor, Windsurf) directly to Last9 observability platform using the Model Context Protocol, enabling LLMs to query live production logs, metrics, traces, and alerts without context switching. Implements a dual-transport architecture (HTTP for managed mode, STDIO for local/air-gapped) that translates natural language intent into structured Last9 API calls, with background attribute caching to optimize LLM token usage and reduce round-trip latency.","intents":["I need to debug a production error without leaving my IDE—show me the relevant logs and traces","Correlate a recent deployment with performance regression using metrics and change events","Identify error patterns across services by querying distributed traces and aggregated exceptions","Find which services are affected by a firing alert and what changed recently"],"best_for":["DevOps engineers and SREs debugging incidents in real-time within their IDE","Full-stack developers integrating production observability into AI-assisted development workflows","Teams using Claude Desktop, Cursor, or Windsurf as their primary development interface"],"limitations":["Requires active Last9 subscription and valid API credentials (Refresh Token for local mode, API Token for HTTP mode)","Result chunking strategy may truncate large log/trace datasets—configurable but impacts completeness of context","HTTP mode depends on Last9's hosted endpoint availability; local STDIO mode requires Node.js binary installation","No built-in persistence of query results—each LLM context window must re-query for historical data","Rate limiting applies per API token; high-frequency queries may hit throttling thresholds"],"requires":["Node.js 16+ (for local STDIO mode) or HTTP client support (for managed HTTP mode)","Last9 account with valid organization slug and API credentials","MCP-compatible AI agent (Claude Desktop, Cursor, Windsurf, or custom MCP client)","Network access to Last9 API (https://app.last9.io) for HTTP mode, or local process isolation for STDIO mode"],"input_types":["natural language queries from LLM","service names and identifiers","time ranges (ISO 8601 or relative)","filter expressions (Last9 JSON-pipeline syntax)"],"output_types":["structured JSON telemetry data (logs, metrics, traces)","alert firing status and metadata","deployment and configuration change events","deep links to Last9 UI for manual investigation"],"categories":["tool-use-integration","observability","mcp-server"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_1","uri":"capability://data.processing.analysis.red.metrics.querying.with.promql.execution","name":"red metrics querying with promql execution","description":"Exposes high-level service summaries and RED metrics (Rate, Error, Duration) through structured MCP tools that execute PromQL queries against Last9's metrics backend. Abstracts Prometheus query complexity by providing pre-built metric templates while allowing raw PromQL execution for advanced use cases, with automatic time-range normalization and result formatting for LLM consumption.","intents":["Get request rate, error rate, and latency percentiles for a service over the last hour","Execute a custom PromQL query to correlate CPU usage with request latency","Retrieve service dependency graph and health status across microservices","Identify which service has the highest error rate in the last 24 hours"],"best_for":["SREs and platform engineers analyzing service health metrics programmatically","Developers debugging performance regressions with quantitative metric data","Teams building automated incident response workflows that need metric context"],"limitations":["PromQL execution requires understanding of Prometheus query syntax—LLM may generate invalid queries without proper instruction prompts","Metric resolution and retention depend on Last9 backend configuration; high-cardinality metrics may be downsampled","Time-range queries are bounded by Last9's data retention policy (typically 30-90 days)","No real-time streaming—queries return point-in-time snapshots, not continuous metric feeds"],"requires":["Last9 account with metrics data ingestion enabled","Valid API credentials with metrics query permissions","Service names and metric labels must be discoverable in Last9's attribute cache"],"input_types":["service name (string)","time range (ISO 8601 or relative like '1h', '24h')","PromQL query string (optional, for raw metric execution)","metric aggregation level (p50, p95, p99)"],"output_types":["JSON array of metric data points with timestamps","aggregated statistics (min, max, avg, percentiles)","service health status enum","formatted text summary for LLM interpretation"],"categories":["data-processing-analysis","observability"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_10","uri":"capability://automation.workflow.deep.link.generation.to.last9.ui.for.manual.investigation","name":"deep link generation to last9 ui for manual investigation","description":"Generates contextual deep links to Last9 UI that preserve query parameters (service, time range, filters) enabling users to seamlessly transition from LLM-assisted analysis to manual investigation. Links include pre-filled filters, time ranges, and service selections, reducing manual re-entry of context. Supports links to logs, metrics, traces, and alerts views.","intents":["Provide a link to the exact log query in Last9 UI so I can manually explore results","Generate a trace link that shows the specific trace ID the LLM analyzed","Create a metrics dashboard link with the time range and service the LLM queried","Enable one-click navigation from LLM analysis to Last9 UI for deeper investigation"],"best_for":["Incident responders who need to transition from LLM-assisted analysis to manual investigation","Teams building LLM agents that should provide escape hatches to UI","Developers integrating Last9 MCP with other tools that need Last9 links"],"limitations":["Deep links depend on Last9 UI URL structure; changes to UI routing break links","Links may not preserve all query context if Last9 UI doesn't support all parameters","URL encoding of complex filters may produce very long links","Links are time-sensitive; if data retention expires, links may show no results","No link validation; broken links are only discovered when clicked"],"requires":["Last9 organization slug and base URL","Knowledge of Last9 UI routing structure","Query parameters that Last9 UI supports (service, time range, filters)"],"input_types":["query context (service, time range, filters)","view type (logs, metrics, traces, alerts)","Last9 organization slug"],"output_types":["HTTPS URL to Last9 UI with pre-filled parameters","markdown-formatted link for LLM output","link validity status"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_11","uri":"capability://safety.moderation.authentication.and.credential.management.api.token.vs.refresh.token","name":"authentication and credential management (api token vs refresh token)","description":"Manages two authentication modes: API Token for HTTP mode (long-lived, suitable for service accounts) and Refresh Token for STDIO mode (short-lived, suitable for user sessions). Implements token validation, expiration handling, and secure credential storage. Abstracts authentication differences between modes, allowing same tool implementations to work with either credential type.","intents":["Authenticate to Last9 API using API Token in HTTP mode without user interaction","Authenticate using Refresh Token in STDIO mode with automatic token refresh","Validate credentials before executing queries to provide early error feedback","Securely store and manage credentials without exposing them in logs or error messages"],"best_for":["DevOps teams deploying Last9 MCP in service/daemon environments (API Token)","Individual developers running Last9 MCP locally (Refresh Token)","Teams managing multiple authentication modes across environments"],"limitations":["API Token has no expiration; compromised tokens require manual rotation","Refresh Token expiration requires automatic refresh logic; failed refresh breaks queries","No built-in credential rotation; teams must manage token lifecycle externally","Credentials must be passed via environment variables or config files; risk of accidental exposure","No support for OAuth2 or other modern auth flows; limited to token-based auth"],"requires":["Last9 API Token (for HTTP mode) or Refresh Token (for STDIO mode)","Secure credential storage (environment variables, config files, or secrets manager)","Last9 API endpoint for token validation"],"input_types":["API Token (string) or Refresh Token (string)","authentication mode (HTTP or STDIO)","token validation request"],"output_types":["authentication status (valid/invalid/expired)","error messages for invalid credentials","token refresh response (if applicable)"],"categories":["safety-moderation","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_2","uri":"capability://search.retrieval.advanced.log.filtering.and.attribute.discovery","name":"advanced log filtering and attribute discovery","description":"Enables LLMs to query logs using Last9's JSON-pipeline filter syntax, with automatic attribute discovery that surfaces available log fields and their cardinality. Implements a chunking strategy to handle large result sets, manages drop-rule configuration for sensitive data filtering, and generates deep links to Last9 UI for manual log exploration. Abstracts complex log query DSL through structured tool parameters while exposing raw query capability for advanced filtering.","intents":["Find all error logs from a specific service in the last 30 minutes with stack trace context","Discover what log attributes are available for a given service to construct better queries","Filter logs by multiple conditions (error level, service, user ID) and get aggregated error counts","Identify which log drop rules are active and why certain logs are being filtered"],"best_for":["Incident responders needing rapid log context during active incidents","Developers debugging application errors with full log context from production","Teams managing sensitive data who need to understand and configure log drop rules"],"limitations":["JSON-pipeline syntax has a learning curve; LLM-generated queries may be syntactically invalid without proper instruction prompts","Large result sets are chunked for token efficiency, potentially losing context across chunks","Attribute discovery is cached and may not reflect real-time schema changes in log sources","Drop rules are applied server-side; cannot query logs that have already been dropped","Query performance degrades with very broad time ranges or high-cardinality filters"],"requires":["Last9 account with log ingestion enabled","Valid API credentials with log query permissions","Log sources configured and actively sending data to Last9"],"input_types":["service name (string)","time range (ISO 8601 or relative)","filter expression (Last9 JSON-pipeline syntax)","log level filter (ERROR, WARN, INFO, DEBUG)","limit and offset for pagination"],"output_types":["JSON array of log entries with full context","attribute metadata (field names, types, cardinality)","aggregated log statistics (count by level, by service)","deep links to Last9 UI for manual exploration"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_3","uri":"capability://search.retrieval.distributed.trace.retrieval.and.exception.aggregation","name":"distributed trace retrieval and exception aggregation","description":"Retrieves distributed traces by trace ID or service name, with automatic exception aggregation across trace spans. Implements span-level filtering, service dependency visualization, and correlation of trace data with deployment events. Generates structured trace summaries optimized for LLM analysis, including root cause indicators and latency attribution across service boundaries.","intents":["Get the full distributed trace for a specific request ID to understand end-to-end latency","Find all traces for a service that experienced errors in the last hour and aggregate exception types","Identify which service in a trace chain is causing the slowdown by analyzing span durations","Correlate trace data with recent deployments to determine if a code change introduced latency"],"best_for":["Microservices teams debugging cross-service request failures","Performance engineers analyzing end-to-end latency and identifying bottlenecks","Incident responders correlating trace data with deployment events"],"limitations":["Trace availability depends on sampling rate; high-traffic services may have incomplete trace data","Trace retention is limited by Last9 backend (typically 7-30 days); historical trace analysis is constrained","Exception aggregation may not capture all error types if traces are sampled or truncated","Large traces with many spans may exceed LLM context windows even after chunking","Service dependency graph is derived from trace data; missing traces lead to incomplete dependency visualization"],"requires":["Last9 account with distributed tracing enabled","Services instrumented with OpenTelemetry or compatible tracing SDK","Valid API credentials with trace query permissions"],"input_types":["trace ID (string)","service name (string)","time range (ISO 8601 or relative)","span filter criteria (operation name, status, duration threshold)"],"output_types":["JSON trace structure with span hierarchy and timing","aggregated exception list with stack traces","service dependency graph (nodes and edges)","latency attribution by service (which service consumed most time)","deep links to Last9 trace UI"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_4","uri":"capability://search.retrieval.real.time.alert.status.and.change.event.correlation","name":"real-time alert status and change event correlation","description":"Exposes firing alerts and system change events (deployments, configuration changes) through structured MCP tools, enabling LLMs to correlate alert triggers with recent infrastructure changes. Implements event timeline visualization and alert metadata enrichment, allowing agents to construct incident narratives by linking alerts to deployment events and metric anomalies.","intents":["Show me all currently firing alerts and which services are affected","Did a recent deployment cause this alert to fire? Show me the timeline of changes and alert triggers","What configuration changes happened in the last 2 hours that might explain this metric spike?","Get alert details including threshold, current value, and how long it's been firing"],"best_for":["On-call engineers responding to active incidents and needing rapid context","DevOps teams investigating whether deployments caused service degradation","Incident commanders building post-mortem timelines with correlated events"],"limitations":["Alert firing status is point-in-time; historical alert state transitions require separate query","Change event retention depends on Last9 backend configuration; older deployments may not be queryable","Correlation is temporal only (time-based); no semantic understanding of whether a change actually caused an alert","Alert metadata depends on proper instrumentation; poorly configured alerts may lack context","Real-time alert updates require polling; no native streaming/webhook support"],"requires":["Last9 account with alerting configured","Alert rules defined in Last9 or integrated monitoring system","Deployment tracking enabled (via CI/CD integration or manual event ingestion)","Valid API credentials with alert and event query permissions"],"input_types":["service name (optional, to filter alerts)","time range for change events (ISO 8601 or relative)","alert status filter (firing, resolved, all)","event type filter (deployment, config_change, etc.)"],"output_types":["JSON array of firing alerts with threshold, current value, duration","JSON array of change events with timestamp, type, and metadata","event timeline (chronologically ordered alerts and changes)","alert-to-deployment correlation summary","deep links to Last9 alert and event details"],"categories":["search-retrieval","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_5","uri":"capability://tool.use.integration.mcp.tool.registration.with.dynamic.attribute.caching","name":"mcp tool registration with dynamic attribute caching","description":"Implements the Model Context Protocol tool registration system with a background attribute cache that discovers and maintains available log fields, metric labels, and service names. Dynamically updates tool schemas based on cached attributes, enabling LLMs to construct valid queries without prior knowledge of data structure. Handles tool lifecycle (registration, discovery, invocation) and maintains an internal state machine for cache synchronization.","intents":["Discover what log attributes are available for a service so I can construct a valid filter query","Get a list of all services and their metric labels to enable dynamic query construction","Ensure tool schemas are always up-to-date with the latest Last9 data structure","Enable LLM to auto-complete or suggest valid filter values based on cached attributes"],"best_for":["MCP client developers building LLM agents that need dynamic tool discovery","Teams deploying Last9 MCP in environments where data schema changes frequently","Developers building custom MCP clients that need to adapt to schema changes automatically"],"limitations":["Attribute cache is eventually consistent; real-time schema changes may not be reflected immediately","Cache refresh frequency is configurable but introduces latency between schema changes and tool availability","High-cardinality attributes (e.g., user IDs) may not be fully cached due to memory constraints","Cache invalidation is time-based; no event-driven cache updates when Last9 schema changes","Tool schema updates require MCP client re-discovery; clients may cache stale schemas"],"requires":["MCP-compatible client implementation","Last9 API credentials with attribute discovery permissions","Network connectivity to Last9 API for cache synchronization"],"input_types":["MCP tool discovery requests","MCP tool invocation with parameters","cache refresh signals (manual or time-based)"],"output_types":["MCP tool list with schemas","attribute metadata (field names, types, cardinality)","tool invocation results","cache status and last-update timestamp"],"categories":["tool-use-integration","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_6","uri":"capability://tool.use.integration.dual.transport.mcp.server.with.http.and.stdio.modes","name":"dual-transport mcp server with http and stdio modes","description":"Implements Model Context Protocol server with two transport modes: managed HTTP (connects to Last9's hosted endpoint via HTTPS) and local STDIO (runs as local process with stdin/stdout communication). Abstracts transport layer differences, allowing same tool implementations to work across both modes. Handles authentication differently per mode (API Token for HTTP, Refresh Token for STDIO) and manages connection lifecycle, error handling, and graceful shutdown.","intents":["Deploy Last9 MCP in a managed environment without running a local binary","Run Last9 MCP locally in an air-gapped environment with no external HTTP dependencies","Switch between HTTP and STDIO modes without changing client code","Integrate Last9 MCP with custom CLI tools or non-standard MCP clients"],"best_for":["Teams deploying MCP in managed/containerized environments (HTTP mode)","Organizations with air-gapped networks or strict egress policies (STDIO mode)","Developers building custom MCP clients that need flexible transport options"],"limitations":["HTTP mode depends on Last9's hosted endpoint availability; no fallback if endpoint is down","STDIO mode requires Node.js binary installation and process management; adds operational complexity","Authentication methods differ per mode; credential management must account for both token types","STDIO mode has no built-in load balancing; single process is a potential bottleneck","HTTP mode adds network latency; STDIO mode adds process startup overhead"],"requires":["Node.js 16+ (for STDIO mode only)","Last9 API credentials (API Token for HTTP, Refresh Token for STDIO)","MCP-compatible client (Claude Desktop, Cursor, Windsurf, or custom)","Network access to Last9 API (HTTP mode) or local process isolation (STDIO mode)"],"input_types":["MCP protocol messages (tool discovery, invocation)","transport mode configuration (HTTP URL or STDIO process)","authentication credentials (API Token or Refresh Token)"],"output_types":["MCP protocol responses (tool schemas, invocation results)","error messages and status codes","connection lifecycle events (connected, disconnected, error)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_7","uri":"capability://planning.reasoning.llm.instruction.and.prompt.optimization.for.observability.queries","name":"llm instruction and prompt optimization for observability queries","description":"Provides structured LLM prompt instructions that guide AI agents in constructing valid observability queries (logs, metrics, traces) without requiring deep domain expertise. Includes query syntax guidance, attribute discovery instructions, and examples of common query patterns. Optimizes prompts for token efficiency and includes instructions for handling chunked results and interpreting observability data.","intents":["Guide the LLM to construct valid Last9 JSON-pipeline log queries","Teach the LLM how to interpret RED metrics and identify anomalies","Help the LLM correlate trace data with deployment events to find root causes","Enable the LLM to ask clarifying questions when observability queries are ambiguous"],"best_for":["MCP client developers building LLM agents that need guidance on observability query construction","Teams fine-tuning LLM behavior for incident response workflows","Developers optimizing LLM token usage in observability contexts"],"limitations":["Prompt instructions are static; they don't adapt to LLM model changes or new query patterns","LLMs may still generate invalid queries despite instructions; requires validation and error handling","Instructions are English-language; non-English LLMs may not follow guidance as effectively","Prompt length impacts LLM token budget; detailed instructions reduce space for actual queries","Instructions don't cover all edge cases; LLMs may encounter novel query scenarios not covered"],"requires":["LLM with instruction-following capability (Claude, GPT-4, etc.)","Understanding of Last9 query syntax and observability concepts","Integration of prompts into MCP client's system prompt or tool descriptions"],"input_types":["LLM system prompt or tool description","query context (service name, time range, symptom description)","user intent (natural language request)"],"output_types":["structured observability queries (PromQL, JSON-pipeline, trace filters)","query validation results (valid/invalid with error messages)","LLM reasoning about query construction","clarifying questions when intent is ambiguous"],"categories":["planning-reasoning","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_8","uri":"capability://data.processing.analysis.time.range.normalization.and.query.utility.functions","name":"time-range normalization and query utility functions","description":"Provides utility functions for normalizing time ranges (ISO 8601, relative like '1h', '24h', Unix timestamps) into Last9 API-compatible formats. Implements time-zone handling, relative-to-absolute time conversion, and query window alignment. Handles edge cases like daylight saving time and ensures consistent time semantics across logs, metrics, and traces queries.","intents":["Convert user-specified time ranges (e.g., 'last hour', 'today', '2024-01-15T10:00Z') into API-compatible format","Align query windows to metric resolution boundaries for consistent aggregation","Handle time-zone conversions when users specify local times","Validate time ranges to prevent invalid queries (e.g., future dates, inverted ranges)"],"best_for":["MCP server developers building time-aware observability queries","Teams handling multi-timezone incident response","Developers building LLM agents that need to interpret natural language time expressions"],"limitations":["Relative time expressions are evaluated at query time; results may differ if query is delayed","Time-zone handling depends on system configuration; may not work correctly in all environments","Daylight saving time transitions can cause ambiguous time ranges; requires explicit handling","No support for business hours or custom calendar logic; only absolute and relative times","Metric resolution alignment may truncate user-specified time ranges"],"requires":["JavaScript/Node.js runtime with Date/Time support","Last9 API time format specification (ISO 8601 or Unix timestamp)"],"input_types":["time range string (ISO 8601, relative like '1h', Unix timestamp)","time-zone identifier (IANA time-zone name)","metric resolution (for alignment, e.g., '1m', '5m')"],"output_types":["normalized start and end timestamps (ISO 8601 or Unix)","duration in milliseconds","validation status (valid/invalid with error messages)","aligned time range (if metric resolution specified)"],"categories":["data-processing-analysis","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-last9__cap_9","uri":"capability://data.processing.analysis.result.chunking.strategy.for.llm.token.efficiency","name":"result chunking strategy for llm token efficiency","description":"Implements intelligent result chunking that breaks large observability datasets (logs, metrics, traces) into LLM-consumable chunks while preserving semantic context. Chunks are sized to fit within LLM context windows, with configurable chunk size and overlap strategy. Includes chunk metadata (sequence number, total chunks, context summary) to help LLMs reconstruct full results and understand data continuity.","intents":["Return 10,000 log entries without exceeding LLM context window limits","Provide metric time-series data in chunks that preserve temporal continuity","Break large traces into manageable chunks while maintaining span relationships","Enable LLM to request specific chunks of results without re-querying"],"best_for":["MCP servers handling large result sets from observability queries","Teams optimizing LLM token usage in observability contexts","Developers building multi-turn LLM conversations that reference large datasets"],"limitations":["Chunking strategy is fixed; no adaptive chunking based on actual LLM context window size","Chunk boundaries may split related data (e.g., trace spans, log events); requires careful boundary selection","Chunk metadata adds overhead; very small chunks become inefficient","LLM must understand chunking semantics to reconstruct results; requires instruction support","No streaming support; all chunks must be generated upfront before returning first chunk"],"requires":["Configurable chunk size parameter (default likely 4KB-8KB)","Result data in structured format (JSON)","LLM with understanding of chunk metadata and reconstruction"],"input_types":["large result dataset (logs, metrics, traces)","chunk size configuration (bytes or token count)","overlap strategy (none, sliding window, etc.)"],"output_types":["JSON array of chunks with metadata (sequence, total, summary)","chunk content (subset of original results)","reconstruction instructions for LLM"],"categories":["data-processing-analysis","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":33,"verified":false,"data_access_risk":"high","permissions":["Node.js 16+ (for local STDIO mode) or HTTP client support (for managed HTTP mode)","Last9 account with valid organization slug and API credentials","MCP-compatible AI agent (Claude Desktop, Cursor, Windsurf, or custom MCP client)","Network access to Last9 API (https://app.last9.io) for HTTP mode, or local process isolation for STDIO mode","Last9 account with metrics data ingestion enabled","Valid API credentials with metrics query permissions","Service names and metric labels must be discoverable in Last9's attribute cache","Last9 organization slug and base URL","Knowledge of Last9 UI routing structure","Query parameters that Last9 UI supports (service, time range, filters)"],"failure_modes":["Requires active Last9 subscription and valid API credentials (Refresh Token for local mode, API Token for HTTP mode)","Result chunking strategy may truncate large log/trace datasets—configurable but impacts completeness of context","HTTP mode depends on Last9's hosted endpoint availability; local STDIO mode requires Node.js binary installation","No built-in persistence of query results—each LLM context window must re-query for historical data","Rate limiting applies per API token; high-frequency queries may hit throttling thresholds","PromQL execution requires understanding of Prometheus query syntax—LLM may generate invalid queries without proper instruction prompts","Metric resolution and retention depend on Last9 backend configuration; high-cardinality metrics may be downsampled","Time-range queries are bounded by Last9's data retention policy (typically 30-90 days)","No real-time streaming—queries return point-in-time snapshots, not continuous metric feeds","Deep links depend on Last9 UI URL structure; changes to UI routing break links","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.49,"ecosystem":0.49999999999999994,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"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:03.577Z","last_scraped_at":"2026-05-03T14:00:15.503Z","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=last9","compare_url":"https://unfragile.ai/compare?artifact=last9"}},"signature":"h1mpgCvgbA25yecoCC4xhqTS40xGpxuLTkp8YvANPcaN6AK+4pHkbHmyIxnqIzzf6ieso5t9KK8Seoxb7KeZDQ==","signedAt":"2026-06-22T05:14:26.551Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/last9","artifact":"https://unfragile.ai/last9","verify":"https://unfragile.ai/api/v1/verify?slug=last9","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"}}