User Showcase
Immutable Catalog Entry
This descriptor comes from the active versioned Portal catalog.
- Contract tier:
legacy - Risk:
read - Catalog version:
scrape-creators-2026.07.12.1 - Descriptor hash:
295e7b681ec1751686847fb1940e5ba86effccfea109d083cdc2e673a7bd54d3
Use this when you need ScrapeCreators TikTok Shop data from GET /v1/tiktok/user/showcase for User Showcase. Fetches products featured in a TikTok user's public showcase — the products a creator promotes on their profile. Returns an array of product objects each with title, price, images, and shop details. Use POST request if pagination is cutting off too early. Just send the query params in the body. Returns the ScrapeCreators response in the standard MCP envelope with ok/data/error/meta. This is read-only. Requires the portal grant header and a ScrapeCreators BYOK API key.
Request Body
{
"jsonrpc": "2.0",
"id": "scrape-creators-scrape-creators-tiktok-shop-get-v1-tiktok-user-showcase-example",
"method": "tools/call",
"params": {
"name": "scrape-creators.scrape_creators_tiktok_shop_get_v1_tiktok_user_showcase",
"arguments": {
"body": "",
"cursor": "",
"handle": "",
"params": "",
"region": "",
"compact": "",
"username": "",
"max_items": "",
"include_raw": false,
"path_params": ""
}
}
}
Arguments Schema
{
"type": "object",
"properties": {
"body": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "array",
"items": {}
},
{
"type": "null"
}
],
"title": "Body",
"default": null,
"description": "JSON request body for provider endpoints that accept one."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"default": null,
"description": "The cursor to the next page of products"
},
"handle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Handle",
"default": null,
"description": "The handle of the user"
},
"params": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Params",
"default": null,
"description": "Optional advanced query parameter object. Prefer the documented top-level parameters when available."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "Region to put the proxy in"
},
"compact": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Compact",
"default": null,
"description": "When true, trims large list payloads before returning them to the agent."
},
"username": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Username",
"default": null,
"description": "Alias for handle: The handle of the user"
},
"max_items": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Max Items",
"default": null,
"description": "Maximum number of list items to return when compacting provider responses."
},
"include_raw": {
"type": "boolean",
"title": "Include Raw",
"default": false,
"description": "When true, returns both compact normalized data and the raw provider payload; this can be large."
},
"path_params": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Path Params",
"default": null,
"description": "Path template values for endpoints that expose path placeholders."
},
"cache_ttl_seconds": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Cache Ttl Seconds",
"default": null,
"description": "Optional cache lifetime for idempotent GET requests."
},
"confirm_high_cost": {
"type": "boolean",
"title": "Confirm High Cost",
"default": false,
"description": "Set true only when intentionally running a high-credit or write-intent request."
}
},
"additionalProperties": false
}
Output Schema
{
"type": "object",
"required": [
"ok",
"data",
"error",
"meta"
],
"properties": {
"ok": {
"type": "boolean",
"description": "Whether the local or provider operation completed successfully."
},
"data": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "array",
"items": {}
},
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
],
"description": "Bounded operation result when ok is true."
},
"meta": {
"type": "object",
"description": "Safe request, pagination, cache, and timing metadata.",
"additionalProperties": true
},
"error": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"description": "Safe structured error when ok is false."
}
},
"description": "Scrape Creators MCP normalized response envelope.",
"additionalProperties": false
}
Code Examples
- cURL
- Node.js
- Python
curl -X POST 'https://portal.madpanda3d.com/api/mcp' \
-H 'Authorization: Bearer mad_live_***' \
-H 'Content-Type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "scrape-creators-scrape-creators-tiktok-shop-get-v1-tiktok-user-showcase-example",
"method": "tools/call",
"params": {
"name": "scrape-creators.scrape_creators_tiktok_shop_get_v1_tiktok_user_showcase",
"arguments": {
"body": "",
"cursor": "",
"handle": "",
"params": "",
"region": "",
"compact": "",
"username": "",
"max_items": "",
"include_raw": false,
"path_params": ""
}
}
}'
const response = await fetch('https://portal.madpanda3d.com/api/mcp', {
method: 'POST',
headers: {
Authorization: 'Bearer mad_live_***',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"jsonrpc": "2.0",
"id": "scrape-creators-scrape-creators-tiktok-shop-get-v1-tiktok-user-showcase-example",
"method": "tools/call",
"params": {
"name": "scrape-creators.scrape_creators_tiktok_shop_get_v1_tiktok_user_showcase",
"arguments": {
"body": "",
"cursor": "",
"handle": "",
"params": "",
"region": "",
"compact": "",
"username": "",
"max_items": "",
"include_raw": false,
"path_params": ""
}
}
}),
});
const data = await response.json();
console.log(data);
import requests
url = 'https://portal.madpanda3d.com/api/mcp'
headers = {
'Authorization': 'Bearer mad_live_***',
'Content-Type': 'application/json',
}
payload = {
"jsonrpc": "2.0",
"id": "scrape-creators-scrape-creators-tiktok-shop-get-v1-tiktok-user-showcase-example",
"method": "tools/call",
"params": {
"name": "scrape-creators.scrape_creators_tiktok_shop_get_v1_tiktok_user_showcase",
"arguments": {
"body": "",
"cursor": "",
"handle": "",
"params": "",
"region": "",
"compact": "",
"username": "",
"max_items": "",
"include_raw": false,
"path_params": ""
}
}
}
response = requests.post(url, headers=headers, json=payload, timeout=60)
print(response.json())
Example Responses
- 200 Success
- 502 Upstream Error
{
"ok": true,
"message": "Tool scrape-creators.scrape_creators_tiktok_shop_get_v1_tiktok_user_showcase executed successfully.",
"note": "Response shape varies by MCP tool. Inspect live responses for exact fields."
}
{
"ok": false,
"classification": "upstream_http_error",
"message": "Upstream MCP returned a non-success status."
}