# Resemble AI

> Resemble AI: deepfake detection, media intelligence, and watermarking actions, plus docs tools.

- name: io.github.resemble-ai/resemble-mcp
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 87/100
- quality: 70/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.resemble-ai%2Fresemble-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.resemble-ai%2Fresemble-mcp/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "resemble-mcp": {
      "type": "http",
      "url": "https://mcp.resemble.ai/mcp"
    }
  }
}
```


## Trust

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

## Quality 70/100 (needs work)

### 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: 64 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- 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: trace_audio_source (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_detect_agent_run (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); agent_detection_list_sites (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 3,890 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 12 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: 24, about 3,890 tokens to load them all
- tool set hash: dc066febc8aa6c948660570949906d38
- tools last changed: 2026-09-24T03:13:55.001Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.resemble-ai/resemble-mcp.svg)](https://protogrid.dev/servers/io.github.resemble-ai/resemble-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-09-24 `agent_detection_create_site` changed (description)
  - before: Create an Agent Detection integration for a website and return its publishable key (pk_live_...) and the script snippet to install. domain is the site's domain, e.g. example.com. If the team already has an integration for that domain, the existing one is returned instead of a duplicate. The publishable key is safe to put in a public web page: it only sends telemetry, only from the listed domains. Never put the Resemble API key in a page. Paste the snippet into the <head> of every page to cover; the page can then listen for the 'porter:verdict' event or call Porter.onVerdict().
  - after: Create an Agent Detection integration for a website and return its publishable key (pk_live_...) and the script snippet to install. domain is the site's domain, e.g. example.com. If the team already has an integration for that domain, the existing one is returned instead of a duplicate. The publishable key is safe to put in a public web page: it only sends telemetry, only from the listed domains. Never put the Resemble API key in a page. Paste the snippet into the <head> of every page to cover; the page can then listen for the 'resemble:verdict' event or call ResembleAgentDetection.onVerdict().
- 2026-09-23 `agent_detection_get_session` added
  - Get one website visit and the evidence behind its verdict: the feature vector it was decided from, plain-language observations, and each model read. When the visit was recorded, the raw event stream is available; it is omitted unless include_events is true, and then capped at the first 200 events. The verdict is advisory: it comes from browser signals, which a determined attacker can fake.
- 2026-09-23 `agent_detection_list_sessions` added
  - List individual website visits, newest first, each with its verdict (settled: human, agent, or null while still open), visitor_class, p_person, the page, referrer, user agent, and duration. Same filters as agent_detection_get_analytics plus a free-text search. per_page max 100.
- 2026-09-23 `agent_detection_get_analytics` added
  - Summarise who is visiting a website: people vs AI agents. Returns totals (visits, decided, agents, people, agent_share, gated), counts per visitor class (human, computer_use_agent, browser_automation, scripted_client), and breakdowns by page, day, and network. Use this to show how much traffic comes from agents and which pages they use, so the site can be made easier for helpful agents and protected from harmful ones. Filters are optional: site_id (one integration), settled ('human' or 'agent'), page_path, and since/until as ISO 8601 times. agent_share is agents / decided visits, or null when nothing is decided yet.
- 2026-09-23 `agent_detection_update_site` added
  - Replace the list of domains an Agent Detection integration's publishable key is valid on (for example to add a staging or www host), and optionally rename it. domains replaces the whole list, so include every domain to keep; at least one is required.
- 2026-09-23 `agent_detection_create_site` added
  - Create an Agent Detection integration for a website and return its publishable key (pk_live_...) and the script snippet to install. domain is the site's domain, e.g. example.com. If the team already has an integration for that domain, the existing one is returned instead of a duplicate. The publishable key is safe to put in a public web page: it only sends telemetry, only from the listed domains. Never put the Resemble API key in a page. Paste the snippet into the <head> of every page to cover; the page can then listen for the 'porter:verdict' event or call Porter.onVerdict().
- 2026-09-23 `agent_detection_list_sites` added
  - List this team's Agent Detection integrations. Agent Detection tells a website whether each visitor is a person or an AI agent (for example a personal assistant browsing on someone's behalf). Each integration is one website, with the domains its publishable key works on and the one-line script snippet to paste into the site's <head>.
- 2026-09-23 `get_detect_agent_run` added
  - Fetch a persisted Detect Agent investigation by run_id, including its full event transcript. Use after run_detect_agent_investigation reported timed_out, or to re-read an earlier investigation.
- 2026-09-23 `run_detect_agent_investigation` added
  - Run a managed Detect Agent investigation against media at a public HTTPS URL and return its verdict. preset_id is one of: investigate_social_content, review_insurance_claim, verify_breaking_news, verify_document, verify_evidence, verify_id (confirm with list_detect_agents). query states the investigation objective; check_urls adds URLs for the agent to check. Consumes a run of the team's allowance. `label`/`score` are the Detect evidence and are the only basis for an authenticity claim; `verdict` is the agent's written assessment. If timed_out is true the investigation is still running server-side — retrieve it later with get_detect_agent_run.
- 2026-09-23 `list_detect_agents` added
  - List the managed Detect Agents — investigators that wrap detection in a multi-step workflow ending in a written assessment. Returns each agent's preset_id plus this team's run allowance (free_runs_remaining, entitled), which is worth checking before starting a run.

Full history: https://api.protogrid.dev/v1/servers/io.github.resemble-ai%2Fresemble-mcp/changes

## Remotes

- https://mcp.resemble.ai/mcp (streamable-http, auth none, reachable true, uptime30d 1)
- https://mcp.resemble.ai/sse (sse, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (24)

- `agent_detection_create_site`: Create an Agent Detection integration for a website and return its
    publishable key (pk_live_...) and the script snippet to install. domain is
    the site's domain, e.g. example.com. If the team already has an integration
    for that domain, the existing one is returned instead of a duplicate.

    The publishable key is safe to put in a public web page: it only sends
    telemetry, only from the listed domains. Never put the Resemble API key in
    a page. Paste the snippet into the <head> of every page to cover; the page
    can then listen for the 'resemble:verdict' event or call ResembleAgentDetection.onVerdict().
- `agent_detection_get_analytics`: Summarise who is visiting a website: people vs AI agents. Returns totals
    (visits, decided, agents, people, agent_share, gated), counts per visitor
    class (human, computer_use_agent, browser_automation, scripted_client), and
    breakdowns by page, day, and network. Use this to show how much traffic
    comes from agents and which pages they use, so the site can be made easier
    for helpful agents and protected from harmful ones.

    Filters are optional: site_id (one integration), settled ('human' or
    'agent'), page_path, and since/until as ISO 8601 times. agent_share is
    agents / decided visits, or null when nothing is decided yet.
- `agent_detection_get_session`: Get one website visit and the evidence behind its verdict: the feature
    vector it was decided from, plain-language observations, and each model
    read. When the visit was recorded, the raw event stream is available;
    it is omitted unless include_events is true, and then capped at the first
    200 events. The verdict is advisory: it comes from browser signals, which
    a determined attacker can fake.
- `agent_detection_list_sessions`: List individual website visits, newest first, each with its verdict
    (settled: human, agent, or null while still open), visitor_class,
    p_person, the page, referrer, user agent, and duration. Same filters as
    agent_detection_get_analytics plus a free-text search. per_page max 100.
- `agent_detection_list_sites`: List this team's Agent Detection integrations. Agent Detection tells a
    website whether each visitor is a person or an AI agent (for example a
    personal assistant browsing on someone's behalf). Each integration is one
    website, with the domains its publishable key works on and the one-line
    script snippet to paste into the site's <head>.
- `agent_detection_update_site`: Replace the list of domains an Agent Detection integration's publishable
    key is valid on (for example to add a staging or www host), and optionally
    rename it. domains replaces the whole list, so include every domain to keep;
    at least one is required.
- `analyze_media`: Analyze media for structured intelligence: transcription, translation,
    language, speaker info, emotion, scene description, abnormalities, and
    misinformation analysis. media_type: auto | audio | video | image.
- `apply_watermark`: Embed an invisible Resemble provenance watermark into media (audio-first)
    and return the watermarked media URL. strength 0.0-1.0 (image/video only).
- `ask_about_detection`: Ask a natural-language question about a COMPLETED detection (e.g. 'how
    confident is the model that this is fake?'). Returns the grounded answer.
- `detect_ai_text`: Detect whether TEXT (an essay, email, post, review, comment, article) was
    written by an AI language model. Needs at least 25 words: shorter text comes
    back as prediction 'uncertain' with no model call - concatenate several
    messages from the same author to reach the minimum. Returns prediction
    ('ai' | 'human'), confidence (how sure the model is of that prediction; it
    is NOT an AI probability, so 'human' at 0.95 means strongly human), and the
    full result. Only the first ~400 words are read; chunk longer documents.
    A result can take several minutes when the model is cold or jobs are
    queued - if status is still 'processing' when the wait budget ends, resume
    with get_text_detection(uuid). Detection is probabilistic, not proof of authorship.
- `detect_deepfake`: Detect whether media (audio, image, or video) at a public HTTPS URL is a
    deepfake / AI-generated. Polls to completion and returns the verdict label,
    confidence score, and full result. Optional flags add media intelligence,
    audio source tracing, visualization, reverse image search (images),
    out-of-distribution detection, and zero-retention (auto-delete media after
    analysis). model_type: auto | image | talking_head.
- `detect_watermark`: Check whether media at a public HTTPS URL carries a Resemble invisible
    watermark (audio-first; per-channel verdict for audio).
- `get_detect_agent_run`: Fetch a persisted Detect Agent investigation by run_id, including its full
    event transcript. Use after run_detect_agent_investigation reported
    timed_out, or to re-read an earlier investigation.
- `get_detection`: Fetch a detection by UUID, polling until it completes (bounded). Use after
    detect_deepfake when a long job exceeded its wait budget.
- `get_text_detection`: Fetch a text detection by UUID, polling until it completes (bounded). Use
    after detect_ai_text returned status 'processing' - typically a cold start.
- `list_detect_agents`: List the managed Detect Agents — investigators that wrap detection in a
    multi-step workflow ending in a written assessment. Returns each agent's
    preset_id plus this team's run allowance (free_runs_remaining, entitled),
    which is worth checking before starting a run.
- `resemble_api_endpoint`: Get detailed OpenAPI specification for a specific API endpoint.
Returns request/response schemas, parameters, and examples.
Use this when you need exact API details for implementation.

Examples:
- method: "POST", path: "/synthesize" → TTS synthesis endpoint
- method: "GET", path: "/voices" → List voices endpoint
- method: "POST", path: "/speech-to-text" → Transcription endpoint
- `resemble_api_search`: Search the OpenAPI specification for endpoints matching a query.
Use this to find which API endpoints are available for a feature.

Examples:
- "voice" → All voice-related endpoints
- "streaming" → Streaming endpoints
- "agent" → Agent-related endpoints
- `resemble_docs_lookup`: Get comprehensive documentation about a Resemble AI topic. 
This is the PRIMARY tool - use it first for any question about Resemble AI.
Returns complete, aggregated documentation in a single call.

Supports flexible matching - use topic IDs, names, or keywords:

Topics (use these IDs or related keywords):
- voice-cloning: clone, custom voice, train, recordings, dataset
- text-to-speech: tts, synthesize, generate speech, audio generation
- speech-to-speech: s2s, voice conversion
- speech-to-text: stt, transcribe, transcription
- getting-started: auth, api key, quickstart, rate limit
- voice-design: design voice, generate voice, candidate
- streaming: websocket, real-time, low latency
- detect: deepfake, watermark, identity, source tracing, intelligence
- agents: conversational, phone, call, webhook, knowledge base
- sdks: python, node, npm, pip, library
- projects-clips: project, clip, manage
- audio-tools: enhance, edit, improve audio
- ssml: markup, prosody, emphasis, phoneme
- custom-pronunciations: pronunciation, phoneme, bulk, zip
- duets: multi-speaker, conversation, dialogue, voice pair
- account: billing, usage, team, subscription
- voice-settings: preset, pace, temperature, pitch, exaggeration
- term-substitutions: term, substitution, replacement

Examples:
- "voice-cloning" → Everything about cloning voices
- "watermark" → Watermarking docs (matched via 'detect' topic)
- "tts" → Text-to-speech documentation
- "pronunciation" → Custom pronunciations documentation
- "duets" → Multi-speaker conversational audio
- `resemble_get_page`: Get the full content of a specific documentation page.
Use this when you know the exact page path from a previous search.
- `resemble_list_topics`: List all available documentation topics with descriptions.
Use this to discover what topics are available.
- `resemble_search`: Search across all Resemble AI documentation.
Use this when you need to find specific information not covered by topic lookup,
or when exploring what documentation exists.

Returns matching pages with snippets.
- `run_detect_agent_investigation`: Run a managed Detect Agent investigation against media at a public HTTPS
    URL and return its verdict. preset_id is one of: investigate_social_content,
    review_insurance_claim, verify_breaking_news, verify_document,
    verify_evidence, verify_id (confirm with list_detect_agents). query states
    the investigation objective; check_urls adds URLs for the agent to check.

    Consumes a run of the team's allowance. `label`/`score` are the Detect
    evidence and are the only basis for an authenticity claim; `verdict` is the
    agent's written assessment. If timed_out is true the investigation is still
    running server-side — retrieve it later with get_detect_agent_run.
- `trace_audio_source`: Get the audio source-tracing report for a detection (which AI platform
    generated the fake audio). Only available when detection ran with
    audio_source_tracing and labeled the audio fake.
