# useSignal

> QR codes, JSON diff/format, hashes, JWT, cron, timestamps, placeholders, flowcharts, forms, regex.

- name: io.github.sanket-naik/usesignal
- version: 0.2.0
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.sanket-naik%2Fusesignal
- tools: https://api.protogrid.dev/v1/servers/io.github.sanket-naik%2Fusesignal/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "usesignal": {
      "type": "http",
      "url": "https://www.usesignal.dev/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-17d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 91/100 (strong)

### 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: 100 (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
- pass `tools.annotations`: 12 of 12 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,406 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: 12, about 2,406 tokens to load them all
- tool set hash: 09e4d6996bca2a43a05195a5bf1c4c5c
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.sanket-naik/usesignal.svg)](https://protogrid.dev/servers/io.github.sanket-naik/usesignal)
- 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://www.usesignal.dev/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (12)

- `usesignal_convert_timestamp`: Convert a Unix timestamp (seconds or milliseconds) or an ISO 8601 date into ISO, UTC, epoch seconds/milliseconds, a relative time and the local time in a given time zone.
- `usesignal_diff_json`: Compare two JSON documents structurally and list every added, removed and changed value with its JSONPath. Numbers compare exactly. Arrays match by content by default, so an inserted item shows as one addition; use arrays:"position" to compare index by index.
- `usesignal_encode_decode`: Exact text transforms: Base64 encode/decode (UTF-8), URL encode/decode, decode a JWT header and payload with readable exp/iat/nbf dates (the signature is not verified), or hash text with MD5, SHA-1, SHA-256 and SHA-512. Use this instead of computing hashes or Base64 by hand.
- `usesignal_explain_cron`: Explain a standard 5-field cron expression (minute hour day-of-month month day-of-week) in plain English and list its next run times in a given time zone, handling daylight saving time.
- `usesignal_flowchart`: Turn JavaScript/TypeScript code, arrow steps or Mermaid-style arrows into a flowchart, returned as Mermaid source and an SVG diagram. Steps mode uses one flow per line: "Start -> Validate -> Save" and branches like "Validate -- No --> Show error".
- `usesignal_format_json`: Validate, pretty-print or minify JSON, optionally sorting keys. Invalid JSON reports the exact line and column; with repair (default on) it fixes common problems such as trailing commas, single quotes, comments and unquoted keys, and lists each fix.
- `usesignal_generate_colors`: Generate light and dark semantic color tokens from a six-digit hex brand color. Returns a shade scale, measured text contrast checks and CSS, JSON and Tailwind exports. This measures listed color pairs only, not whole-page accessibility. Call usesignal_open_workbench with the result input to preview.
- `usesignal_generate_form`: Generate an editable form from a JSON object. Returns nested field paths, JSON Schema, HTML, React JSX and config exports. Arrays and nulls use JSON textareas. Values are processed in memory; avoid secrets. To show an interactive preview, call usesignal_open_workbench with this result input.
- `usesignal_generate_qr`: Generate a scannable QR code for a link, text, Wi-Fi network, contact card (vCard), email, SMS, phone number, WhatsApp chat or UPI payment. Returns the encoded payload, an SVG file and a PNG preview image. values by type: url{url}; text{text}; wifi{ssid,password,security:WPA|WEP|nopass,hidden}; vcard{firstName,lastName,phone,email,org,title,website,address}; email{to,subject,body}; sms{phone,message}; phone{phone}; whatsapp{phone,message}; upi{vpa,name,amount,note}.
- `usesignal_open_workbench`: Show the editable useSignal UI. First call a useSignal data tool, then pass its returned input and matching tool name. Recomputes from validated inputs; no shared state.
- `usesignal_placeholder_image`: Create a placeholder image URL (served by usesignal.dev) plus HTML, Markdown and CSS snippets, for mockups, prototypes, seed data and layouts. Width and height up to 4000 px.
- `usesignal_test_regex`: Execute a JavaScript regular expression against text and expected match/non-match test cases. Returns indexed matches and capture groups. Flags use JavaScript semantics. Execution times out after 500ms. Call usesignal_open_workbench with result input to highlight matches.
