{
  "ok": true,
  "resource": {
    "id": "RES_5DC9D5F35CC0",
    "resource_type": "mcp_server",
    "canonical_url": "https://inside.ad/",
    "name": "Inside Ads",
    "summary_en": "Telegram ad exchange: estimate reach and cost with no account, then create and run campaigns.",
    "summary_zh": "Telegram 广告交易平台：无需账户即可估算触达人数和成本，然后创建并投放广告活动。",
    "description_en": "Inside Ads is a Telegram ad exchange that allows estimating reach and cost without an account, then creating and running campaigns. The MCP server provides tools for campaign estimation, draft creation, and status polling.",
    "description_zh": "Inside Ads 是一个 Telegram 广告交易平台，允许用户无需账户即可估算触达人数和成本，然后创建并投放广告活动。该 MCP 服务器提供广告活动估算、草稿创建和状态轮询等工具。",
    "provider_name": "Inside Ads",
    "homepage_url": "https://inside.ad/",
    "endpoint_url": "https://app.inside.ad/api/mcp",
    "source_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ad.inside%2Finside-ads/versions/1.0.0",
    "icon_url": null,
    "cover_image_url": null,
    "capabilities": [
      "advertising.estimate",
      "advertising.create",
      "advertising.monitor"
    ],
    "categories": [
      "commerce"
    ],
    "industries": [
      "general"
    ],
    "protocols": [
      "mcp"
    ],
    "auth": {
      "type": "unknown",
      "source": "reviewed-source-metadata"
    },
    "pricing": {
      "model": "unknown"
    },
    "input_schema": {},
    "output_schema": {},
    "metadata": {
      "review_gate": {
        "passed": true,
        "reasons": [],
        "policy_version": "review-gate-v1",
        "evaluated_at": "2026-09-03T06:26:21.485Z"
      },
      "official_registry": {
        "name": "ad.inside/inside-ads",
        "version": "1.0.0",
        "status": "active",
        "schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
        "packages": [],
        "remotes": [
          {
            "type": "streamable-http",
            "url": "https://app.inside.ad/api/mcp"
          }
        ]
      }
    },
    "latest_version": "1.0.0",
    "status": "listed",
    "health_status": "healthy",
    "source_kind": "discovered",
    "source_agent": "registry.modelcontextprotocol.io",
    "trust": {
      "signal": "none",
      "reason": "No suspicious or malicious evidence found.",
      "signals": {
        "yellow": 0,
        "red": 0
      }
    },
    "review_summary": {
      "method_version": "capability-evidence-v2",
      "capability_definition": "strong",
      "contract_completeness": "strong",
      "access_friction": "low",
      "operational_transparency": "partial",
      "evidence_strength": "protocol_inspected",
      "use_readiness": "guided_use",
      "reviewed_at": "2026-09-03T06:26:22.466Z"
    },
    "experience_count": 0,
    "verified_experience_count": 0,
    "usage_count": 0,
    "success_rate": null,
    "first_seen_at": "2026-09-03T06:26:21.720Z",
    "last_seen_at": "2026-09-03T06:26:21.720Z",
    "published_at": "2026-09-03T06:26:21.720Z",
    "created_at": "2026-09-03T06:26:21.720Z",
    "updated_at": "2026-09-03T06:26:22.466Z",
    "api_url": "https://aiworkshub.io/api/v1/resources/RES_5DC9D5F35CC0",
    "reviews_url": "https://aiworkshub.io/api/v1/resources/RES_5DC9D5F35CC0/reviews",
    "public_url": "https://aiworkshub.io/resources/RES_5DC9D5F35CC0",
    "distribution": {
      "canonical_identity": "https://inside.ad/",
      "syndicatable": true,
      "origins": [
        {
          "registry_url": "https://registry.modelcontextprotocol.io/",
          "upstream_resource_id": "ad.inside/inside-ads",
          "upstream_record_url": "https://registry.modelcontextprotocol.io/v0.1/servers/ad.inside%2Finside-ads/versions/1.0.0",
          "relation": "syndicated",
          "metadata": {
            "version": "1.0.0",
            "official_status": "active"
          },
          "first_seen_at": "2026-09-03T06:26:21.720Z",
          "last_seen_at": "2026-09-03T06:26:21.720Z"
        }
      ]
    },
    "tools": [
      {
        "name": "create_campaign_draft",
        "title_en": "Create Campaign Draft",
        "title_zh": "创建广告活动草稿",
        "description_en": "Build a ready-to-launch ad campaign for a product WITHOUT the user having an account yet. Parses the landing page, generates ad creatives, and returns a single checkout link. Give that link to the user: they sign in there, the campaign moves to their account, they pay, and it starts. Use this after estimate_campaign, once the user agreed to advertise. Do NOT ask them to register first.",
        "description_zh": "在用户尚未拥有账户的情况下，为产品构建一个可随时启动的广告活动。解析落地页，生成广告创意，并返回一个结账链接。将该链接提供给用户：他们在此登录，广告活动将转移到他们的账户，他们付款后活动即开始。在 estimate_campaign 之后、用户同意投放广告时使用此工具。请勿要求他们先注册。",
        "input_schema": {
          "type": "object",
          "properties": {
            "url": {
              "type": "string",
              "description": "Landing page URL of the product to promote (required)"
            },
            "description": {
              "type": "string",
              "description": "What the product does, in your own words — improves topic matching"
            },
            "budget": {
              "type": "number",
              "description": "Intended budget in USD, used for the estimate shown to the user"
            },
            "geo": {
              "type": "string",
              "description": "Optional ISO-2 country target, e.g. \"US\""
            },
            "lang": {
              "type": "string",
              "description": "Optional audience language, e.g. \"en\""
            }
          },
          "required": [
            "url"
          ],
          "additionalProperties": false
        },
        "output_schema": {
          "type": "object",
          "properties": {
            "draftId": {
              "type": "string",
              "description": "Poll get_draft_status with this to see whether the user paid."
            },
            "checkoutUrl": {
              "type": "string",
              "description": "THE link to give the user. One click: sign in, review creatives, pay."
            },
            "expiresAt": {
              "type": "string",
              "description": "ISO timestamp after which the link stops working."
            },
            "campaignId": {
              "type": "number"
            },
            "adsCreated": {
              "type": "number",
              "description": "How many ad variants were generated."
            },
            "estimate": {
              "type": "object",
              "additionalProperties": true,
              "description": "Same shape as estimate_campaign, for the budget given."
            }
          },
          "required": [
            "draftId",
            "checkoutUrl",
            "expiresAt"
          ]
        },
        "unit_kind": "mcp_tool",
        "effect": "unknown",
        "open_world": false,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "estimate_campaign",
        "title_en": "Estimate Campaign",
        "title_zh": "估算广告活动",
        "description_en": "Estimate reach, clicks and cost of advertising a product to Telegram audiences — no account or authorization required. Call this FIRST, before asking the user to connect an account: it tells you whether inside.ad has relevant inventory for this product and what a given budget would buy. Describe the product yourself (you know it better than any crawler); the URL alone is a weak signal.",
        "description_zh": "估算向 Telegram 受众投放产品广告的触达人数、点击次数和成本——无需账户或授权。请先调用此工具，再询问用户连接账户：它会告诉你 inside.ad 是否有该产品的相关库存，以及给定预算能买到什么。请自行描述产品（你比任何爬虫都更了解它）；仅凭 URL 是弱信号。",
        "input_schema": {
          "type": "object",
          "properties": {
            "url": {
              "type": "string",
              "description": "Product landing page URL"
            },
            "description": {
              "type": "string",
              "description": "What the product does, in your own words. Strongest signal for topic matching."
            },
            "keywords": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Optional topic keywords, e.g. [\"devtool\",\"ai\"]"
            },
            "budget": {
              "type": "number",
              "description": "Budget in USD to estimate against (default 100)"
            },
            "geo": {
              "type": "string",
              "description": "Optional ISO-2 country filter, e.g. \"US\""
            },
            "lang": {
              "type": "string",
              "description": "Optional audience language filter, e.g. \"en\""
            }
          },
          "additionalProperties": false
        },
        "output_schema": {
          "type": "object",
          "properties": {
            "currency": {
              "type": "string"
            },
            "budget": {
              "type": "number",
              "description": "Budget the estimate was computed for, in USD"
            },
            "estimatedImpressions": {
              "type": "number"
            },
            "estimatedClicks": {
              "type": "object",
              "description": "Range, not a point estimate. Report both ends to the user.",
              "properties": {
                "low": {
                  "type": "number"
                },
                "high": {
                  "type": "number"
                }
              }
            },
            "cpcRange": {
              "type": "object",
              "description": "Implied cost per click in USD, derived from CPM and the CTR band.",
              "properties": {
                "low": {
                  "type": "number"
                },
                "high": {
                  "type": "number"
                }
              }
            },
            "cpmUsd": {
              "type": "number",
              "description": "Reach-weighted average CPM across matched segments"
            },
            "dailyReach": {
              "type": "number",
              "description": "Total daily impressions available in matched segments"
            },
            "spendableBudget": {
              "type": "number",
              "description": "How much of the budget this inventory can actually absorb within 30 days. If it is lower than budget, tell the user to either lower the budget or widen targeting — do not promise the full budget will be spent."
            },
            "deliveryDays": {
              "type": [
                "number",
                "null"
              ],
              "description": "Roughly how many days it takes to deliver estimatedImpressions at the current daily reach."
            },
            "matchedCategories": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "sampleSegments": {
              "type": "array",
              "description": "Matched inventory segments. Individual channels are deliberately not disclosed.",
              "items": {
                "type": "object",
                "properties": {
                  "category": {
                    "type": "string"
                  },
                  "country": {
                    "type": "string"
                  },
                  "dailyReach": {
                    "type": "number"
                  }
                }
              }
            },
            "inventoryIsThin": {
              "type": "boolean",
              "description": "true = there is no matching inventory at all, OR the budget exceeds what the matched inventory can deliver. Say so plainly instead of promising results, and use spendableBudget as the realistic figure."
            },
            "assumptions": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "required": [
            "currency",
            "budget",
            "estimatedImpressions",
            "estimatedClicks",
            "inventoryIsThin"
          ]
        },
        "unit_kind": "mcp_tool",
        "effect": "unknown",
        "open_world": false,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "get_draft_status",
        "title_en": "Get Draft Status",
        "title_zh": "获取草稿状态",
        "description_en": "Check what happened to a campaign draft you created with create_campaign_draft: whether the user opened the link, signed in and paid. Poll this instead of asking the user to report back.",
        "description_zh": "检查您通过 create_campaign_draft 创建的广告活动草稿的状态：用户是否打开了链接、登录并付款。请轮询此工具，而不是让用户反馈。",
        "input_schema": {
          "type": "object",
          "properties": {
            "draftId": {
              "type": "string",
              "description": "draftId returned by create_campaign_draft"
            }
          },
          "required": [
            "draftId"
          ],
          "additionalProperties": false
        },
        "output_schema": {
          "type": "object",
          "properties": {
            "draftId": {
              "type": "string"
            },
            "status": {
              "type": "string",
              "description": "'created' — link not opened yet; 'previewed' — user opened it but has not finished; 'claimed' — campaign is on the user's account; 'expired' — link is dead, build a new draft."
            },
            "campaignId": {
              "type": [
                "number",
                "null"
              ]
            },
            "createdAt": {
              "type": "string"
            },
            "previewedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "claimedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "expiresAt": {
              "type": "string"
            },
            "hint": {
              "type": "string",
              "description": "What to tell the user next."
            }
          },
          "required": [
            "draftId",
            "status"
          ]
        },
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "unknown",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      }
    ],
    "review_profile": {
      "schema_version": "aiworkshub.resource-review/0.2",
      "method_version": "capability-evidence-v2",
      "review_state": {
        "identity": "verified",
        "source": "verified",
        "connectivity": "verified",
        "contract": "strong",
        "safe_use": "untested",
        "real_use": "unobserved"
      },
      "assessment": {
        "capability_definition": "strong",
        "contract_completeness": "strong",
        "access_friction": "low",
        "operational_transparency": "partial",
        "evidence_strength": "protocol_inspected",
        "use_readiness": "guided_use"
      },
      "profile": {
        "capabilities": [
          {
            "id": "advertising.estimate",
            "weight": 90,
            "confidence": 95,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "advertising.create",
            "weight": 90,
            "confidence": 95,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "advertising.monitor",
            "weight": 70,
            "confidence": 90,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          }
        ],
        "domains": [
          {
            "id": "advertising",
            "weight": 100,
            "confidence": 95,
            "evidence_ids": [
              "source-record"
            ]
          }
        ],
        "workflow_roles": [
          "analyze",
          "execute",
          "monitor"
        ]
      },
      "capability_units": [
        {
          "id": "tool:estimate_campaign",
          "kind": "mcp_tool",
          "capability_id": "advertising.estimate",
          "effect": "unknown",
          "open_world": false,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed",
          "accepts": [
            "url",
            "description",
            "keywords",
            "budget",
            "geo",
            "lang"
          ],
          "produces": [
            "estimate",
            "impressions",
            "clicks",
            "cpc",
            "cpm",
            "dailyReach",
            "spendableBudget",
            "deliveryDays",
            "matchedCategories",
            "sampleSegments",
            "inventoryIsThin",
            "assumptions"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:create_campaign_draft",
          "kind": "mcp_tool",
          "capability_id": "advertising.create",
          "effect": "unknown",
          "open_world": false,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed",
          "accepts": [
            "url",
            "description",
            "budget",
            "geo",
            "lang"
          ],
          "produces": [
            "draftId",
            "checkoutUrl",
            "expiresAt",
            "campaignId",
            "adsCreated",
            "estimate"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:get_draft_status",
          "kind": "mcp_tool",
          "capability_id": "advertising.monitor",
          "effect": "read",
          "open_world": false,
          "idempotency": "unknown",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "typed",
          "accepts": [
            "draftId"
          ],
          "produces": [
            "draftId",
            "status",
            "campaignId",
            "createdAt",
            "previewedAt",
            "claimedAt",
            "expiresAt",
            "hint"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        }
      ],
      "access": {
        "distribution_license": {},
        "runtime_auth": {},
        "runtime_pricing": {},
        "dependencies": []
      },
      "operational_flags": [],
      "trust": {
        "signal": "none",
        "evidence_ids": [],
        "reason": "No suspicious or malicious evidence found."
      },
      "fit": {
        "good_for": [
          "Estimating Telegram ad reach and cost before committing budget",
          "Creating ad campaign drafts without requiring user registration upfront",
          "Monitoring campaign draft status through a checkout flow"
        ],
        "not_for": [
          "Managing existing campaigns or accounts",
          "Running ads on platforms other than Telegram",
          "Detailed analytics or reporting beyond draft status"
        ]
      },
      "evidence": [
        {
          "id": "source-record",
          "type": "registry_record",
          "source": "https://registry.modelcontextprotocol.io/v0.1/servers/ad.inside%2Finside-ads/versions/1.0.0",
          "observation": "MCP source record for ad.inside/inside-ads; version 1.0.0.",
          "observed_at": "2026-08-18T20:55:46.452926Z",
          "payload": {}
        },
        {
          "id": "protocol-tools",
          "type": "protocol_observation",
          "source": "https://app.inside.ad/api/mcp#tools/list",
          "observation": "3 tools were returned by MCP discovery; 3 were retained for review.",
          "observed_at": "2026-09-03T06:26:10.773Z",
          "payload": {}
        }
      ],
      "unknowns": [
        "Exact pricing model and fees are not disclosed in the evidence.",
        "Authentication mechanism for claiming drafts is not detailed.",
        "Idempotency of tools is unknown.",
        "Real-world usage and reliability are unobserved."
      ],
      "id": "REV_FFA45DA88AD4",
      "resource_id": "RES_5DC9D5F35CC0",
      "evaluator_type": "platform_ai",
      "provider": "deepseek",
      "model": "deepseek-v4-flash",
      "review_scope": "protocol-inspected-mcp",
      "created_at": "2026-09-03T06:26:22.466Z"
    }
  }
}