Supovia Customer Support

Reply to and resolve customer chats, search your help docs and see which conversations need you.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
84%
Naming quality
96%
Poisoning risk
100%
Permission match
80%
Protocol compliance
100%

Findings (4)

  • LOWTool 'get_unresolved_conversation_counts' name length outside 3-30 rangein get_unresolved_conversation_counts
  • LOWTool 'open_customer_inbox_conversation' name length outside 3-30 rangein open_customer_inbox_conversation
  • LOWTool 'list_websites' suggests web access but openWorldHint=falsein list_websites
  • LOWTool 'get_website' suggests web access but openWorldHint=falsein get_website

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~5,405Tokens (tool definitions)
~3.4 KBTypical response size
Significant attention impact (4.22% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "supovia": {
      "url": "https://mcp.supovia.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.supovia.com/mcpstreamable-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢list_websites(limit, cursor)

List a bounded page of websites in the authenticated Supovia organization. Only safe website identity and status fields are returned; prompts, credentials, integration configuration, organization ids, and arbitrary metadata are excluded.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "maxLength": 4096,
      "description": "Opaque pagination cursor from a previous call"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "websites": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "domain": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 253
              },
              {
                "type": "null"
              }
            ]
          },
          "agentEnabled": {
            "type": "boolean"
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "domain",
          "agentEnabled",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 50
    },
    "page": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "minimum": 0,
          "maximum": 50
        },
        "hasMore": {
          "type": "boolean"
        },
        "nextCursor": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4096
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "count",
        "hasMore",
        "nextCursor"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "websites",
    "page"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_website(idOrName)

Fetch safe metadata for one website owned by the authenticated Supovia organization. Organization ids, agent prompts, credentials, integration configuration, and arbitrary metadata are never returned.

Input Schema

{
  "type": "object",
  "properties": {
    "idOrName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Website id, exact vanity ID, or exact display name"
    }
  },
  "required": [
    "idOrName"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "website": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "domain": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 253
                },
                {
                  "type": "null"
                }
              ]
            },
            "agentEnabled": {
              "type": "boolean"
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "name",
            "domain",
            "agentEnabled",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "website"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_conversations(websiteId, resolved, limit, cursor)

List a bounded newest-first page of conversation activity in the authenticated Supovia organization. Returns only the conversation id needed for an explicit follow-up, website id, channel, resolved state, unread count, and timestamps. Message bodies, message ids, customer identifiers, internal notes, arbitrary metadata, and organization ids are excluded.

Input Schema

{
  "type": "object",
  "properties": {
    "websiteId": {
      "type": "string",
      "maxLength": 200,
      "description": "Filter by website id"
    },
    "resolved": {
      "type": "boolean",
      "description": "Filter by resolved status (true = resolved, false = open)"
    },
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50,
      "description": "Maximum conversations per page (default 20)"
    },
    "cursor": {
      "type": "string",
      "maxLength": 2048,
      "description": "Opaque pagination cursor from a previous call"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "conversations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "maxLength": 200
          },
          "websiteId": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "channel": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "resolved": {
            "type": "boolean"
          },
          "unreadMessageCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "websiteId",
          "channel",
          "resolved",
          "unreadMessageCount",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 50
    },
    "page": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "minimum": 0,
          "maximum": 50
        },
        "hasMore": {
          "type": "boolean"
        },
        "nextCursor": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2048
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "count",
        "hasMore",
        "nextCursor"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "conversations",
    "page"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_conversation(conversationId)

Summarize one organization-owned Supovia conversation using safe status fields and sender-category counts from at most 50 recent records. No message body, preview, message id, customer identifier, staff id, internal note, organization id, or arbitrary metadata is returned.

Input Schema

{
  "type": "object",
  "properties": {
    "conversationId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Conversation id"
    }
  },
  "required": [
    "conversationId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "conversation": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "maxLength": 200
            },
            "websiteId": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "channel": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ]
            },
            "resolved": {
              "type": "boolean"
            },
            "unreadMessageCount": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 100
                },
                {
                  "type": "null"
                }
              ]
            },
            "activity": {
              "type": "object",
              "properties": {
                "sampledPublicMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 50
                },
                "customerMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 50
                },
                "operatorMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 50
                },
                "agentMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 50
                },
                "unknownSenderMessages": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 50
                },
                "latestPublicActivityTime": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 100
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "sampleHasMore": {
                  "type": "boolean"
                },
                "internalNotesExcluded": {
                  "type": "boolean",
                  "const": true
                }
              },
              "required": [
                "sampledPublicMessages",
                "customerMessages",
                "operatorMessages",
                "agentMessages",
                "unknownSenderMessages",
                "latestPublicActivityTime",
                "sampleHasMore",
                "internalNotesExcluded"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "id",
            "websiteId",
            "channel",
            "resolved",
            "unreadMessageCount",
            "creationTime",
            "lastEditTime",
            "activity"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "conversation"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_unresolved_conversation_counts

Count every unresolved conversation in the authenticated Supovia organization, grouped by website. Totals cover all returned count groups; the sorted per-website preview is capped at 100 and reports truncation. Customer identifiers, staff ids, message text, and organization ids are never returned.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "websites": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "websiteId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "websiteName": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "unresolvedCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "websiteId",
          "websiteName",
          "unresolvedCount"
        ],
        "additionalProperties": false
      },
      "maxItems": 100
    },
    "websiteCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "websitesTruncated": {
      "type": "boolean"
    },
    "totalUnresolved": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "totalClamped": {
      "type": "boolean"
    }
  },
  "required": [
    "websites",
    "websiteCount",
    "websitesTruncated",
    "totalUnresolved",
    "totalClamped"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_documents(websiteId, locale, slugOriginal, limit, cursor)

List a bounded newest-first page of safe support-document metadata in the authenticated Supovia organization. Document content, embeddings, prompts, organization ids, and arbitrary metadata are excluded.

Input Schema

{
  "type": "object",
  "properties": {
    "websiteId": {
      "type": "string",
      "pattern": "^[0-9a-f]{24}$",
      "description": "Filter by website id"
    },
    "locale": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20,
      "description": "Filter by locale (e.g. en, it, fr)"
    },
    "slugOriginal": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Filter by original slug (base slug before localization)"
    },
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50
    },
    "cursor": {
      "type": "string",
      "maxLength": 4096,
      "description": "Opaque pagination cursor from a previous call"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$"
          },
          "title": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "slug": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 300
              },
              {
                "type": "null"
              }
            ]
          },
          "locale": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ]
          },
          "websiteId": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[0-9a-f]{24}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "published": {
            "type": "boolean"
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "title",
          "slug",
          "locale",
          "websiteId",
          "published",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 50
    },
    "page": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "minimum": 0,
          "maximum": 50
        },
        "hasMore": {
          "type": "boolean"
        },
        "nextCursor": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4096
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "count",
        "hasMore",
        "nextCursor"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "documents",
    "page"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_document(documentId, slug, locale)

Fetch one support document owned by the authenticated Supovia organization, including its article text (capped at 20000 characters) and the contentFormat naming which syntax that text is written in (html, markdown, plain-text). A document owned by another organization returns the same bounded "not found" result. Organization ids, translator ids, deprecated slugs, embeddings, and arbitrary metadata are never returned.

Input Schema

{
  "type": "object",
  "properties": {
    "documentId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Document id. Preferred over slug."
    },
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Document slug. Used only when documentId is not supplied."
    },
    "locale": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20,
      "description": "Locale for the slug lookup (e.g. en, it, fr). Defaults to en."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "found",
        "not-found"
      ]
    },
    "document": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[0-9a-f]{24}$"
            },
            "title": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "slug": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 300
                },
                {
                  "type": "null"
                }
              ]
            },
            "locale": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 20
                },
                {
                  "type": "null"
                }
              ]
            },
            "websiteId": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[0-9a-f]{24}$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "published": {
              "type": "boolean"
            },
            "content": {
              "type": "string",
              "maxLength": 20000
            },
            "contentFormat": {
              "anyOf": [
                {
                  "type": "string",
                  "enum": [
                    "html",
                    "markdown",
                    "plain-text"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            },
            "contentTruncated": {
              "type": "boolean"
            },
            "creationTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "title",
            "slug",
            "locale",
            "websiteId",
            "published",
            "content",
            "contentFormat",
            "contentTruncated",
            "creationTime",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "document"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_documents(query, websiteId, locale)

Search published support documents for one organization-owned Supovia website. Returns at most 5 safe document identities; content chunks, embeddings, scores, prompts, and arbitrary metadata are excluded.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Semantic search query"
    },
    "websiteId": {
      "type": "string",
      "pattern": "^[0-9a-f]{24}$",
      "description": "Organization-owned website id to search"
    },
    "locale": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20,
      "description": "Filter by locale (e.g. en, it, fr)"
    }
  },
  "required": [
    "query",
    "websiteId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$"
          },
          "title": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "slug": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 300
              },
              {
                "type": "null"
              }
            ]
          },
          "locale": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "title",
          "slug",
          "locale"
        ],
        "additionalProperties": false
      },
      "maxItems": 5
    }
  },
  "required": [
    "documents"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_campaigns(websiteId, limit, cursor)

List a bounded page of campaign identities for one website owned by the authenticated Supovia organization. Recipient lists, subjects, message content, user ids, organization ids, and arbitrary metadata are excluded, and campaigns cannot be sent from this tool.

Input Schema

{
  "type": "object",
  "properties": {
    "websiteId": {
      "type": "string",
      "pattern": "^[0-9a-f]{24}$",
      "description": "Organization-owned website id whose campaigns to list"
    },
    "limit": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 50,
      "description": "Maximum campaigns per page (default 20)"
    },
    "cursor": {
      "type": "string",
      "maxLength": 4096,
      "description": "Opaque pagination cursor from a previous call"
    }
  },
  "required": [
    "websiteId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "campaigns": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9a-f]{24}$"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "websiteId": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[0-9a-f]{24}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "websiteId",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      },
      "maxItems": 50
    },
    "page": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "minimum": 0,
          "maximum": 50
        },
        "hasMore": {
          "type": "boolean"
        },
        "nextCursor": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4096
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "count",
        "hasMore",
        "nextCursor"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "campaigns",
    "page"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴send_message(conversationId, content, idempotencyKey)

Idempotently send one exact operator reply in an organization-owned Supovia conversation. Reuse the same idempotencyKey only when retrying the same conversation and text. The result confirms the target and time without returning a message id or echoing the message body.

Input Schema

{
  "type": "object",
  "properties": {
    "conversationId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Conversation id to send the message in"
    },
    "content": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000,
      "description": "Message text content"
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Stable unique retry key for this exact conversation and reply text"
    }
  },
  "required": [
    "conversationId",
    "content",
    "idempotencyKey"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "const": "sent"
    },
    "conversationId": {
      "type": "string",
      "maxLength": 200
    },
    "creationTime": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "conversationId",
    "creationTime"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴resolve_conversation(conversationId, resolved)

Mark one organization-owned Supovia conversation resolved, or reopen it. This is idempotent: re-sending the same state is a no-op write. It broadcasts a conversation-updated event to the operator dashboard. No other conversation field can be changed through this tool, and customer identifiers, staff ids, and organization ids are never returned.

Input Schema

{
  "type": "object",
  "properties": {
    "conversationId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Conversation id to mark resolved or reopened"
    },
    "resolved": {
      "type": "boolean",
      "description": "true marks the conversation resolved (default), false reopens"
    }
  },
  "required": [
    "conversationId"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "updated",
        "not-found"
      ]
    },
    "conversation": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "maxLength": 200
            },
            "resolved": {
              "type": "boolean"
            },
            "lastEditTime": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 32
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "id",
            "resolved",
            "lastEditTime"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "status",
    "conversation"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢show_support_overview(websiteId)

Render a bounded organization-scoped snapshot of Supovia websites and recent conversations. Customer identifiers, internal record ids, message bodies, prompts, credentials, internal notes, organization ids, and arbitrary metadata are excluded.

Input Schema

{
  "type": "object",
  "properties": {
    "websiteId": {
      "description": "Optionally limit the overview to one organization-owned website",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "websites": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "domain": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 253
              },
              {
                "type": "null"
              }
            ]
          },
          "agentEnabled": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "domain",
          "agentEnabled"
        ],
        "additionalProperties": false
      }
    },
    "websitesHaveMore": {
      "type": "boolean"
    },
    "conversations": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "channel": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "resolved": {
            "type": "boolean"
          },
          "creationTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          },
          "lastEditTime": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 32
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "channel",
          "resolved",
          "creationTime",
          "lastEditTime"
        ],
        "additionalProperties": false
      }
    },
    "conversationsHaveMore": {
      "type": "boolean"
    },
    "openConversationCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20
    }
  },
  "required": [
    "websites",
    "websitesHaveMore",
    "conversations",
    "conversationsHaveMore",
    "openConversationCount"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢show_customer_inbox

Open a metadata-only Supovia inbox and report only how many conversations have unread activity. The embedded view receives conversation ids needed for an explicit follow-up plus channel, status, unread count, and timestamps. It never receives message bodies, previews, message ids, customer details, or internal notes.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "unreadConversationCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 50
    },
    "conversationsHaveMore": {
      "type": "boolean"
    }
  },
  "required": [
    "unreadConversationCount",
    "conversationsHaveMore"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢open_customer_inbox_conversation(conversationId)

Refresh safe activity metadata for one conversation selected in the embedded Supovia inbox. This app-only tool reads no thread and returns no message body, preview, message id, customer detail, or internal note.

Input Schema

{
  "type": "object",
  "properties": {
    "conversationId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "conversationId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "opened",
        "not-found"
      ]
    }
  },
  "required": [
    "status"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools
verifiedversion not recorded14 tools