# SingChat

> Free live chat and AI support agent. Auto-create a workspace and embed from your AI editor.

- name: org.singchat/singchat
- version: 0.2.0
- connection class: R0 (autonomous)
- trust: 75/100 flags: no-repository
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/org.singchat%2Fsingchat
- tools: https://api.protogrid.dev/v1/servers/org.singchat%2Fsingchat/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "singchat": {
      "type": "http",
      "url": "https://mcp.singchat.org"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 98
- freshness: 65
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-95% ~updated-96d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: ping (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); claim_account (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); fetch (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,400 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 17, about 2,400 tokens to load them all
- tool set hash: 6638fdd5784d479fb39e3e61b28f1b96
- badge: [![protogrid quality](https://protogrid.dev/badge/org.singchat/singchat.svg)](https://protogrid.dev/servers/org.singchat/singchat)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.singchat.org (streamable-http, auth none, reachable true, uptime30d 0.94736844)

## Packages

_none_

## Tools (17)

- `add_knowledge`: Train the AI agent by adding a knowledge source. type='url' crawls a website (up to 50 pages, fewer when the workspace knowledge-base quota is nearly full); type='qa' stores a single question/answer pair. Ingestion is asynchronous, the source starts as PENDING; poll `list_knowledge` for READY status.
- `claim_account`: Return the link to claim (permanently secure) this SingChat workspace by setting an email and password. Use this for workspaces that were auto-created via MCP so the user does not lose access. The link is single-use and expires after 15 minutes. Requires an authenticated legacy workspace.
- `configure_agent`: Configure this workspace's AI support agent. All fields are optional, only the fields you pass are updated; the rest keep their current values. Call with no fields to just read back the current configuration. Does not touch or return any API keys.
- `fetch`: Fetch the full text of a single document by id, using an id returned by the search tool. With a workspace API key this reads a knowledge document from that workspace; without a key it reads a SingChat help article. Returns id, title, text, url, and optional metadata.
- `get_analytics`: Return a compact analytics summary for this workspace over the last `days` days (default 30): conversation counts + resolution rate, message volume + AI share, plus a live snapshot of today (UTC).
- `get_conversation`: Fetch a single conversation with its contact details and the most recent messages (oldest→newest).
- `get_embed_snippet`: Return the SingChat chat-widget embed code for this workspace's web inbox, in three flavors: plain HTML, React (useEffect), and Next.js (next/script). Requires a workspace API key. Optionally pass `platform` to get just one flavor.
- `list_conversations`: List the workspace's support conversations (agent/inbox view), newest activity first. Optionally filter by status or a free-text search over the contact name/email and last message. Returns a compact list: id, contact name, status, unreadCount, last message preview, updatedAt.
- `list_knowledge`: List all knowledge documents for this workspace with their processing status (PENDING | PROCESSING | READY | FAILED) and chunk counts. Use this to check whether items added via add_knowledge have finished training.
- `manage_faq`: List, create, update, or delete this workspace's FAQ items (shown in the chat widget and usable by the AI agent). Set `action` to 'list' | 'create' | 'update' | 'delete'. 'create' needs `question` + `answer`; 'update' and 'delete' need `id`.
- `ping`: Health check for the SingChat MCP server. Returns 'pong' and whether this request is authenticated to a workspace.
- `reply_to_conversation`: Send an agent reply through a supported SingChat real-time inbox. This takes the conversation over from the AI and broadcasts the message to the visitor and agent inbox. Email, Telegram, and WhatsApp conversations are rejected before any change.
- `resolve_conversation`: Mark a conversation as RESOLVED (closes it). The visitor's widget will no longer show it as active.
- `search`: Search SingChat for relevant documents. When called with a workspace API key, this searches that workspace knowledge base; without a key it searches SingChat's own help content (what SingChat is, adding the chat widget, MCP setup, free tier, AI training, channels, white label, pricing). Returns a list of results with id, title, and url. Use the fetch tool with a result id to read the full text.
- `search_knowledge`: Semantic search over the workspace knowledge base. Returns the most relevant chunks (with source document title and similarity score) for a query. Only searches documents that have finished training (status READY).
- `set_keywords`: Add a keyword auto-reply rule: when an inbound message matches any of the keywords, the bot replies with the given text. Good for canned FAQ-style triggers (e.g. keyword 'invoice' -> 'Download it from the billing page').
- `singchat_setup`: Get the user up and running with SingChat live-chat. Call this FIRST. If no authenticated workspace is configured, this creates a brand-new free workspace and returns a short-lived, single-use browser claim link plus the website embed snippet. The user chooses their own sign-in details in the browser; no reusable credentials are returned to the model. If a workspace is already authenticated, it returns THIS workspace's embed snippet and dashboard link (it never creates a duplicate workspace).
