{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github-tiledesk--tiledesk-server","slug":"tiledesk--tiledesk-server","name":"tiledesk-server","type":"api","url":"http://www.tiledesk.com","page_url":"https://unfragile.ai/tiledesk--tiledesk-server","categories":["ai-agents"],"tags":["ai-agents","ai-assistant","ai-automation","api","bot","chat","customer-service","customer-support","firebase","firestore","human-in-the-loop","javascript","mongodb","nodejs","open-source","opensource","rest","rest-api","retrieved-augmented-generation","workflow-automation"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"github-tiledesk--tiledesk-server__cap_0","uri":"capability://automation.workflow.rest.api.driven.request.lifecycle.management.with.department.routing","name":"rest api-driven request lifecycle management with department routing","description":"Tiledesk exposes a comprehensive REST API built on Express.js that manages the full lifecycle of customer support requests (tickets) from creation through closure. The system implements configurable department-based routing logic that automatically assigns incoming requests to appropriate departments based on rules, availability, and skill matching. Request state transitions (open → assigned → closed) are tracked in MongoDB with real-time WebSocket notifications to connected agents, enabling synchronous multi-agent awareness of request status changes without polling.","intents":["I need to programmatically create and manage customer support tickets with automatic department assignment","I want to route incoming requests to the right team based on department rules and agent availability","I need to track request lifecycle state changes and notify agents in real-time when requests are assigned or closed"],"best_for":["Customer support teams building custom ticketing integrations","Developers building omnichannel support platforms with multiple communication channels","Teams migrating from REST-only systems to real-time-aware request management"],"limitations":["Department routing logic is server-side only — no client-side routing preview or simulation","Request assignment algorithms are fixed (no custom ML-based assignment without server modification)","WebSocket notifications require persistent client connections; no fallback to polling for disconnected clients"],"requires":["Node.js 16.17.0+","MongoDB instance for request persistence","Express.js middleware stack (included)","JWT authentication token or API key for REST endpoints"],"input_types":["JSON request body with customer metadata, message content, department ID","URL parameters for request filtering and pagination"],"output_types":["JSON response with request object (ID, status, assigned agent, timestamps)","WebSocket events for real-time state changes"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_1","uri":"capability://tool.use.integration.multi.channel.message.routing.and.persistence.with.chat21.integration","name":"multi-channel message routing and persistence with chat21 integration","description":"Tiledesk implements a message handling layer that abstracts multiple communication channels (web chat, WhatsApp, Telegram, Facebook Messenger) through a unified message model stored in MongoDB. Messages are routed through the Chat21 integration layer, which normalizes incoming messages from different channels into a standard format, persists them with full conversation history, and broadcasts them to connected agents via WebSocket. The system maintains channel-specific metadata (phone numbers, user IDs, platform-specific fields) while presenting a unified conversation interface to support agents.","intents":["I need to receive and send messages across multiple channels (WhatsApp, Telegram, Facebook) through a single API","I want to maintain a unified conversation history across all channels for a single customer","I need to route incoming messages from different channels to the same request/ticket without manual intervention"],"best_for":["Omnichannel customer support teams managing conversations across 3+ platforms","Developers building unified messaging dashboards that abstract channel complexity","Organizations needing channel-agnostic message archival and compliance"],"limitations":["Channel-specific features (e.g., WhatsApp media templates, Telegram inline keyboards) require custom handler code","Message normalization loses some platform-specific metadata; full channel data available only in raw message object","Chat21 integration requires separate Chat21 deployment; no built-in fallback for Chat21 unavailability"],"requires":["MongoDB instance for message persistence","Chat21 server deployment and API credentials","Channel-specific API keys (WhatsApp Business API, Telegram Bot Token, Facebook Page Access Token)","WebSocket client library for real-time message reception"],"input_types":["JSON message objects from Chat21 with channel type, sender ID, message text/media","Platform-specific webhook payloads (WhatsApp, Telegram, Facebook)"],"output_types":["Normalized JSON message objects with unified schema","WebSocket events for new messages","Message history queries returning paginated conversation threads"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_10","uri":"capability://automation.workflow.system.services.and.background.job.execution.with.event.driven.triggers","name":"system services and background job execution with event-driven triggers","description":"Tiledesk implements a system services layer that executes background jobs triggered by internal events or scheduled intervals. Services include request cleanup (archiving old closed requests), email digest generation, webhook retry processing, and knowledge base indexing. Services are implemented as Node.js modules that subscribe to events (via EventEmitter or RabbitMQ) or run on schedules (via node-cron or similar). Services are decoupled from the main request processing path, allowing long-running operations to complete without blocking API responses. The system maintains a service registry that tracks which services are running and their health status, enabling monitoring and restart capabilities.","intents":["I need to run background jobs (cleanup, indexing, reporting) without blocking API requests","I want to automatically retry failed webhooks or process message queues","I need to schedule periodic tasks (daily reports, weekly cleanup) without external job schedulers"],"best_for":["Teams needing background job processing without external job queues (Celery, Bull)","Developers building event-driven systems with asynchronous task processing","Organizations needing built-in job scheduling without additional infrastructure"],"limitations":["Services run in-process; no horizontal scaling across multiple server instances without RabbitMQ","No built-in job persistence; jobs are lost if server crashes before completion","Service execution is best-effort; no guaranteed execution or transaction semantics"],"requires":["Node.js EventEmitter or RabbitMQ for event subscription","node-cron or similar for scheduled job execution","MongoDB for job state persistence (optional)"],"input_types":["Event object with event type and data (e.g., {event: 'request:closed', data: {requestId: '...'}})","Cron schedule expression (e.g., '0 0 * * *' for daily at midnight)"],"output_types":["Service execution result (success/failure) logged to console or MongoDB","Side effects (database updates, emails sent, webhooks retried)"],"categories":["automation-workflow","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_11","uri":"capability://automation.workflow.docker.containerization.with.environment.based.configuration","name":"docker containerization with environment-based configuration","description":"Tiledesk provides a Dockerfile and Docker Compose configuration for containerized deployment. The Docker image includes Node.js 16.17.0, all npm dependencies, and the Tiledesk application code. Configuration is managed through environment variables (loaded from .env file or Docker secrets), allowing the same image to be deployed across development, staging, and production without rebuilding. The Dockerfile supports both standalone deployment (with embedded MongoDB) and integration with external MongoDB and Redis instances. Docker Compose templates are provided for quick local development with MongoDB and Redis services pre-configured.","intents":["I need to deploy Tiledesk in a containerized environment (Docker, Kubernetes)","I want to configure Tiledesk for different environments (dev, staging, prod) without rebuilding images","I need to run Tiledesk with external MongoDB and Redis services"],"best_for":["DevOps teams deploying Tiledesk to Kubernetes or Docker Swarm","Developers using Docker for local development and testing","Organizations needing reproducible deployments across environments"],"limitations":["Dockerfile is Node.js-specific; no support for other runtimes (Python, Go)","Environment variable configuration requires careful secret management (no built-in secret encryption)","Docker image size is large (~500MB+) due to Node.js and dependencies"],"requires":["Docker 20.10+ or Docker Compose 1.29+","Environment variables for database credentials, API keys, JWT secret","External MongoDB and Redis instances (or use Docker Compose to run them)"],"input_types":[".env file with environment variables (DATABASE_URL, REDIS_URL, JWT_SECRET, etc.)","Docker Compose YAML with service definitions"],"output_types":["Docker image with Tiledesk application and dependencies","Running container with Tiledesk API server listening on port 3000"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_2","uri":"capability://safety.moderation.jwt.and.passport.js.based.authentication.with.role.based.access.control","name":"jwt and passport.js-based authentication with role-based access control","description":"Tiledesk implements a multi-strategy authentication system using Passport.js that supports JWT tokens, basic authentication, and OAuth (including Google OAuth). The system validates credentials against MongoDB user records and issues JWT tokens for stateless API access. Role-based access control (RBAC) is enforced at the middleware level, with roles including admin, agent, and guest, combined with project-level permissions to create fine-grained authorization rules. Each protected route checks both the user's role and their project membership before allowing access.","intents":["I need to authenticate API clients using JWT tokens without server-side session storage","I want to support multiple authentication methods (JWT, basic auth, OAuth) for different client types","I need to enforce role-based permissions so agents can only access their assigned projects and requests"],"best_for":["Teams building stateless REST APIs that scale horizontally","Organizations needing OAuth integration for SSO (e.g., Google Workspace)","Multi-tenant SaaS platforms with per-project permission isolation"],"limitations":["JWT tokens are stateless — token revocation requires external blacklist (Redis) or waiting for expiration","Role hierarchy is flat (admin/agent/guest); no nested role inheritance or dynamic permission assignment","OAuth integration limited to Google; custom OAuth providers require code modification"],"requires":["Passport.js middleware (included in package.json)","MongoDB user collection with hashed passwords","JWT_SECRET environment variable for token signing","Optional: Redis for token blacklist if revocation is needed"],"input_types":["HTTP Authorization header with Bearer token (JWT) or Basic credentials","OAuth callback with authorization code from Google"],"output_types":["JSON response with JWT token, user ID, role, and project list","Authenticated request context (req.user) passed to downstream middleware"],"categories":["safety-moderation","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_3","uri":"capability://memory.knowledge.faq.and.general.knowledge.base.retrieval.with.semantic.search.integration","name":"faq and general knowledge base retrieval with semantic search integration","description":"Tiledesk provides a dual knowledge base system: FAQ knowledge bases (structured Q&A pairs) and general knowledge bases (unstructured documents). Both are stored in MongoDB and indexed for retrieval. The system integrates with retrieval-augmented generation (RAG) capabilities, allowing bots and agents to query knowledge bases semantically to find relevant answers before responding to customers. Knowledge base entries are tagged, categorized, and versioned, with support for enabling/disabling entries without deletion. The retrieval layer supports both keyword matching and semantic similarity (via embeddings) to find the most relevant knowledge base articles.","intents":["I need to build a searchable FAQ that bots can query to answer common customer questions","I want to augment bot responses with relevant knowledge base articles retrieved semantically","I need to manage multiple knowledge bases per project with versioning and enable/disable controls"],"best_for":["Customer support teams with large FAQ databases that need semantic search","Developers building RAG-augmented chatbots that ground responses in company knowledge","Organizations needing knowledge base versioning and audit trails"],"limitations":["Semantic search requires pre-computed embeddings; no real-time embedding generation (requires external embedding service)","Knowledge base updates are not immediately reflected in bot responses if embeddings are cached","No built-in knowledge base conflict resolution if multiple entries match the same query"],"requires":["MongoDB instance with knowledge base collections","Optional: Embedding service (OpenAI, Hugging Face) for semantic search","Knowledge base entries with title, content, tags, and category fields"],"input_types":["JSON knowledge base entry with title, content, tags, category, enabled flag","Query string for keyword or semantic search"],"output_types":["JSON array of matching knowledge base entries ranked by relevance","Metadata including match score, tags, and category for filtering"],"categories":["memory-knowledge","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_4","uri":"capability://planning.reasoning.bot.handler.execution.with.llm.integration.and.context.injection","name":"bot handler execution with llm integration and context injection","description":"Tiledesk implements a bot handler system that executes custom bot logic in response to incoming messages. Bot handlers are JavaScript functions that receive the full request context (customer message, conversation history, request metadata) and can call external LLMs (OpenAI, Anthropic, etc.) or execute custom logic. The system injects context from the request (customer name, department, previous messages) into the bot handler, allowing bots to make context-aware decisions. Bot handlers can query knowledge bases, call external APIs, or escalate to human agents based on custom conditions. The execution is asynchronous and supports timeout handling to prevent hung bots from blocking request processing.","intents":["I need to execute custom bot logic that responds to customer messages with LLM-generated answers","I want to inject conversation context and customer metadata into bot responses for personalization","I need to implement conditional escalation logic that routes complex queries to human agents"],"best_for":["Teams building custom chatbots with LLM integration (OpenAI, Anthropic, Hugging Face)","Developers needing context-aware bot responses that reference customer history","Organizations implementing intelligent escalation rules (e.g., escalate if confidence < 0.7)"],"limitations":["Bot handlers are synchronous JavaScript functions; long-running operations (API calls) can block message processing if not properly async/await","No built-in timeout enforcement; runaway bots can consume resources; requires external monitoring","Context injection is limited to request metadata; no access to external data sources unless explicitly queried in handler code"],"requires":["Node.js 16.17.0+ for async/await support","LLM API credentials (OpenAI API key, Anthropic key, etc.) if using external models","Bot handler code deployed to Tiledesk server (no serverless/FaaS execution)","MongoDB request collection for context retrieval"],"input_types":["JavaScript function with signature (request, message, context) => Promise<response>","Request object containing customer ID, conversation history, department, metadata"],"output_types":["JSON response object with bot message text, confidence score, escalation flag","Async function result (Promise) resolved within timeout window"],"categories":["planning-reasoning","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_5","uri":"capability://automation.workflow.real.time.websocket.communication.with.event.driven.message.broadcasting","name":"real-time websocket communication with event-driven message broadcasting","description":"Tiledesk uses WebSockets (via Socket.io or native WebSocket) to enable real-time bidirectional communication between the server and connected clients (agents, customers, dashboards). The system implements an event-driven architecture where message events, request state changes, and agent status updates are broadcast to all subscribed clients. Events are published through a central event emitter (Node.js EventEmitter or RabbitMQ if configured), and clients subscribe to specific event channels (e.g., 'request:123:message', 'agent:status'). The WebSocket layer maintains a registry of connected clients and their subscriptions, allowing selective broadcasting to avoid flooding all clients with irrelevant events.","intents":["I need agents to receive new messages and request updates in real-time without polling","I want to broadcast agent status changes (online/offline/busy) to all connected clients","I need to implement a live chat widget that receives messages as they arrive without page refresh"],"best_for":["Live chat and customer support dashboards requiring sub-second message delivery","Teams building real-time agent status indicators and presence awareness","Multi-agent teams needing synchronized view of request state across all connected agents"],"limitations":["WebSocket connections are stateful and require persistent TCP connections; mobile clients may experience disconnections","Event broadcasting is in-memory; scaling to multiple server instances requires RabbitMQ or Redis pub/sub (not built-in)","No automatic message queuing for disconnected clients; messages sent while offline are lost unless persisted separately"],"requires":["WebSocket-capable client library (Socket.io, native WebSocket API)","Node.js EventEmitter for single-instance deployments, or RabbitMQ for multi-instance","Persistent TCP connection from client to server (firewall/proxy must allow WebSocket upgrade)"],"input_types":["WebSocket frame with event name and JSON payload (e.g., {event: 'message:send', data: {text: '...', requestId: '...'}})"],"output_types":["WebSocket frame with event name and JSON payload (e.g., {event: 'message:received', data: {id: '...', timestamp: ...}})","Multiple events broadcast to subscribed clients"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_6","uri":"capability://automation.workflow.email.notification.system.with.template.rendering.and.smtp.integration","name":"email notification system with template rendering and smtp integration","description":"Tiledesk includes an email notification system that sends transactional emails to customers and agents based on request events (new message, request assigned, request closed, etc.). The system uses HTML email templates stored in the filesystem (template/email/ directory) and renders them with dynamic data (customer name, request ID, message content) using a template engine. Emails are sent via SMTP using configurable credentials (Gmail, SendGrid, custom SMTP servers). The notification system is event-driven, triggered by request state changes or message arrivals, and supports conditional sending (e.g., only email if agent is offline). Email sending is asynchronous to avoid blocking request processing.","intents":["I need to send transactional emails to customers when their support request is assigned or closed","I want to notify agents of new messages via email if they're offline or haven't responded","I need to customize email templates with customer data and request context"],"best_for":["Customer support teams needing email notifications for request lifecycle events","Developers building notification systems with customizable email templates","Organizations requiring compliance with email audit trails (all emails logged)"],"limitations":["Email templates are stored on filesystem; no database-driven template management or A/B testing","SMTP configuration is global (single SMTP server); no per-project or per-customer email provider selection","Email delivery is fire-and-forget; no built-in retry logic for failed sends or bounce handling"],"requires":["SMTP server credentials (Gmail, SendGrid, custom SMTP) in environment variables","HTML email templates in template/email/ directory","Template engine (e.g., EJS, Handlebars) for dynamic content rendering","Nodemailer or similar SMTP client library"],"input_types":["Event object with event type (message, request_assigned, request_closed), recipient email, and context data"],"output_types":["Email sent via SMTP with rendered HTML body","Async function result (Promise) indicating send success/failure"],"categories":["automation-workflow","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_7","uri":"capability://tool.use.integration.webhook.management.and.outbound.event.delivery.with.retry.logic","name":"webhook management and outbound event delivery with retry logic","description":"Tiledesk implements a webhook system that allows external systems to subscribe to internal events (message received, request assigned, request closed, etc.). Webhooks are configured per-project with a target URL and event filters. When a subscribed event occurs, Tiledesk sends an HTTP POST request to the webhook URL with a JSON payload containing the event data. The system implements retry logic with exponential backoff for failed webhook deliveries, and maintains a webhook delivery log for debugging and compliance. Webhooks are delivered asynchronously to avoid blocking request processing, and support signature verification (HMAC) to allow webhook consumers to validate that requests originated from Tiledesk.","intents":["I need to push Tiledesk events to external systems (CRM, analytics, custom workflows) in real-time","I want to integrate Tiledesk with third-party tools without building a custom API client","I need to verify that webhook requests are authentic and originated from Tiledesk"],"best_for":["Teams integrating Tiledesk with external CRM, analytics, or workflow platforms","Developers building event-driven architectures that consume Tiledesk events","Organizations needing audit trails of all outbound webhook deliveries"],"limitations":["Webhook delivery is best-effort with exponential backoff; no guaranteed delivery if external system is permanently down","Webhook payload size is limited by HTTP request size limits; large payloads may be truncated","No built-in webhook transformation or filtering; all subscribed events are sent with full payload"],"requires":["Webhook URL accessible from Tiledesk server (must be publicly routable or on same network)","HTTP endpoint that accepts POST requests with JSON body","Optional: HMAC secret for signature verification"],"input_types":["Webhook configuration with target URL, event filters, and optional secret","Internal event object (message, request state change) that matches webhook filters"],"output_types":["HTTP POST request to webhook URL with JSON payload","Webhook delivery log entry with status code, response body, and retry count"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_8","uri":"capability://automation.workflow.project.and.user.management.with.multi.tenancy.and.permission.scoping","name":"project and user management with multi-tenancy and permission scoping","description":"Tiledesk implements a multi-tenant architecture where each project is an isolated workspace with its own requests, knowledge bases, agents, and settings. Users are assigned to projects with specific roles (admin, agent, guest) that determine their permissions within that project. The system maintains a project-to-user mapping in MongoDB, allowing a single user to have different roles across multiple projects. Project settings (name, description, settings) are stored separately from user data, enabling project-level configuration without affecting other projects. The permission system is enforced at the middleware level, checking both user role and project membership before allowing access to project resources.","intents":["I need to support multiple independent customer support projects within a single Tiledesk instance","I want to assign different roles to users across different projects (e.g., admin in Project A, agent in Project B)","I need to isolate data between projects so agents can only see requests from their assigned projects"],"best_for":["SaaS platforms offering white-label customer support to multiple customers","Enterprises with multiple business units needing separate support workspaces","Agencies managing support for multiple client projects"],"limitations":["Project isolation is enforced at the application level; no database-level isolation (all projects share MongoDB instance)","Cross-project queries are not supported; analytics across projects require separate aggregation","Project deletion is not implemented; archived projects remain in database consuming storage"],"requires":["MongoDB with project and project_user collections","User authentication system (JWT, OAuth) to identify current user","Project ID in request context (URL parameter or JWT claim)"],"input_types":["JSON project configuration with name, description, settings","User-to-project assignment with role (admin, agent, guest)"],"output_types":["JSON project object with ID, name, settings, and user list","Filtered request/message lists scoped to current user's projects"],"categories":["automation-workflow","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github-tiledesk--tiledesk-server__cap_9","uri":"capability://safety.moderation.quota.management.and.rate.limiting.with.per.project.enforcement","name":"quota management and rate limiting with per-project enforcement","description":"Tiledesk implements a quota system that limits resource usage per project, including API requests, message volume, and knowledge base entries. Quotas are configured per project and enforced at the API middleware level, returning HTTP 429 (Too Many Requests) when limits are exceeded. The system tracks quota usage in Redis (for fast lookups) and MongoDB (for persistence), with configurable quota windows (per minute, per hour, per day). Quota enforcement is transparent to the application logic; middleware checks quota before processing requests and increments counters after successful completion. The system supports different quota tiers (free, pro, enterprise) with different limits per tier.","intents":["I need to prevent API abuse by limiting requests per project","I want to enforce different usage limits for different subscription tiers","I need to track quota usage and notify users when approaching limits"],"best_for":["SaaS platforms offering tiered pricing with usage-based limits","Teams protecting APIs from abuse or runaway bots","Organizations needing fair resource allocation across multiple projects"],"limitations":["Quota enforcement is per-instance; distributed deployments require Redis for shared quota state","No built-in quota notifications; applications must implement separate notification system","Quota windows are fixed (minute/hour/day); no sliding window or custom window support"],"requires":["Redis instance for quota counter storage (or in-memory fallback for single-instance)","MongoDB for quota configuration and historical tracking","Quota configuration per project (API request limit, message limit, etc.)"],"input_types":["HTTP request with project ID in header or JWT claim","Quota configuration with limits and time windows"],"output_types":["HTTP 429 response if quota exceeded, with Retry-After header","Quota usage metrics in response headers (X-RateLimit-Remaining, X-RateLimit-Reset)"],"categories":["safety-moderation","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":39,"verified":false,"data_access_risk":"high","permissions":["Node.js 16.17.0+","MongoDB instance for request persistence","Express.js middleware stack (included)","JWT authentication token or API key for REST endpoints","MongoDB instance for message persistence","Chat21 server deployment and API credentials","Channel-specific API keys (WhatsApp Business API, Telegram Bot Token, Facebook Page Access Token)","WebSocket client library for real-time message reception","Node.js EventEmitter or RabbitMQ for event subscription","node-cron or similar for scheduled job execution"],"failure_modes":["Department routing logic is server-side only — no client-side routing preview or simulation","Request assignment algorithms are fixed (no custom ML-based assignment without server modification)","WebSocket notifications require persistent client connections; no fallback to polling for disconnected clients","Channel-specific features (e.g., WhatsApp media templates, Telegram inline keyboards) require custom handler code","Message normalization loses some platform-specific metadata; full channel data available only in raw message object","Chat21 integration requires separate Chat21 deployment; no built-in fallback for Chat21 unavailability","Services run in-process; no horizontal scaling across multiple server instances without RabbitMQ","No built-in job persistence; jobs are lost if server crashes before completion","Service execution is best-effort; no guaranteed execution or transaction semantics","Dockerfile is Node.js-specific; no support for other runtimes (Python, Go)","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.1836517762267928,"quality":0.49,"ecosystem":0.6000000000000001,"match_graph":0.25,"freshness":0.75,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.1,"match_graph":0.28,"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-05-24T12:16:22.064Z","last_scraped_at":"2026-05-03T13:59:57.743Z","last_commit":"2026-04-30T15:49:03Z"},"community":{"stars":380,"forks":145,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=tiledesk--tiledesk-server","compare_url":"https://unfragile.ai/compare?artifact=tiledesk--tiledesk-server"}},"signature":"e9yXRjo+XucusxJNcOOlMggbPAieYmPdG6tQzO2di0Om7Yz1fI2eW5jRsN0uboc4rbPIe07MHogAybxcEBdOCw==","signedAt":"2026-06-20T22:36:32.262Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/tiledesk--tiledesk-server","artifact":"https://unfragile.ai/tiledesk--tiledesk-server","verify":"https://unfragile.ai/api/v1/verify?slug=tiledesk--tiledesk-server","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"}}