OpenSincera MCP Server
OpenSincera MCP 服务器
一个模型上下文协议 (MCP) 服务器,提供对 OpenSincera API 的访问,用于检索发布商元数据、验证信息和广告质量分析。
概述
OpenSincera 是一个为数字广告发布商提供透明度和验证数据的平台。此 MCP 服务器允许 AI 助手和其他工具访问 OpenSincera 的发布商信息,包括验证状态、元数据、运营指标、设备级广告质量信号和竞争基准测试。
Related MCP server: mcp-samsclub-ads
功能
发布商查询:通过域名或发布商 ID 搜索发布商
元数据检索:获取详细的发布商信息,包括验证状态、类别和运营指标
设备级指标:比较移动端与桌面端的 A2CR、广告可见度、广告刷新率等
竞争基准测试:并排比较发布商与类似发布商的指标
媒体评估:为广告主媒体选择对多个发布商进行评分和排名
健康监测:检查 OpenSincera API 连接的状态
错误处理:具有详细错误信息的全面错误处理
输入验证:使用 Zod 模式进行稳健的输入验证
安装
使用 npm 全局安装该包:
npm install -g opensincera-mcp-server先决条件
Node.js 18.0.0 或更高版本
OpenSincera API 密钥
设置
克隆仓库:
git clone https://github.com/miyaichi/opensincera-mcp-server.git
cd opensincera-mcp-server安装依赖:
npm install构建项目:
npm run build设置环境变量:
export OPENSINCERA_API_KEY="your-api-key-here"
export OPENSINCERA_BASE_URL="https://open.sincera.io/api" # Optional
export OPENSINCERA_TIMEOUT="10000" # Optional (milliseconds)使用方法
运行服务器
npm start开发
npm run devClaude Desktop 配置
根据您的安装方法,将以下内容添加到您的 Claude Desktop 配置文件中。
该文件位于:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.json
选项 1:如果全局安装
如果您通过 npm install -g 全局安装了该包,该命令可直接在您的系统路径中使用。
{
"mcpServers": {
"opensincera": {
"command": "opensincera-mcp-server",
"env": {
"OPENSINCERA_API_KEY": "your-api-key-here"
}
}
}
}选项 2:如果使用本地克隆
如果您在本地克隆了仓库,则必须提供脚本的完整路径。请记住将 /path/to/ 替换为项目目录的实际绝对路径。
{
"mcpServers": {
"opensincera": {
"command": "node",
"args": ["/path/to/opensincera-mcp-server/dist/index.js"],
"env": {
"OPENSINCERA_API_KEY": "your-api-key-here"
}
}
}
}Claude Desktop 示例提示词
配置完成后,您可以在 Claude Desktop 中使用这些自然语言提示词:
基本健康检查
Check the OpenSincera API connection status发布商域名查询
Get publisher information for yahoo.com from OpenSincera详细分析请求
Analyze the publisher metrics for cnn.com and explain:
- Their verification status
- Ad to content ratio and what it means
- Supply chain complexity
- Overall advertising quality设备级比较
Show me the mobile vs desktop ad quality metrics for nytimes.com竞争基准测试
Compare businessinsider.com against its similar publishers移动端媒体评估
Evaluate these publishers for a mobile branding campaign:
- nytimes.com
- washingtonpost.com
- reuters.com
Use device: mobile发布商 ID 查询
Get detailed information for OpenSincera Publisher ID 2737业务背景问题
I'm considering running ad campaigns on forbes.com.
Can you check their OpenSincera profile and tell me:
- Is this a verified publisher?
- What's their ad refresh rate and is it good or bad?
- How many supply paths do they have?
- Would you recommend this publisher for quality ad placement?这些提示词将自动触发相应的 OpenSincera MCP 工具,并返回带有详细指标解释的格式化响应。
可用工具
get_publisher_metadata
从 OpenSincera API 获取发布商元数据。
参数:
publisherId(可选):要搜索的发布商 IDpublisherDomain(可选):要搜索的发布商域名limit(可选):结果的最大数量 (1-100)offset(可选):要跳过的结果数量
注意: 必须提供 publisherId 或 publisherDomain 中的一个。
示例:
{
"publisherDomain": "example.com"
}get_publisher_by_domain
通过域名获取单个发布商。
参数:
domain(必需):要搜索的发布商域名
示例:
{
"domain": "example.com"
}get_publisher_by_id
通过发布商 ID 获取单个发布商。
参数:
publisherId(必需):要搜索的发布商 ID
示例:
{
"publisherId": "12345"
}compare_publishers
将发布商与其类似发布商进行比较(竞争基准测试)。检索目标发布商及其由 OpenSincera 策划的类似发布商,然后生成关键指标的并排比较。
参数:
domain(必需):要进行基准测试的发布商域名device(可选):用于指标比较的设备类型 —overall(默认)、mobile或desktop
示例:
{
"domain": "businessinsider.com",
"device": "mobile"
}evaluate_media
为广告主媒体选择对多个发布商域名进行评分和排名。每个发布商根据广告质量指标、供应链健康状况和身份覆盖范围获得一个分数(0-100),并根据广告活动目标进行加权。
参数:
domains(必需):要评估的发布商域名列表campaignGoal(可选):branding(品牌推广)、performance(效果营销)或balanced(平衡,默认)language(可选):输出语言 —en(默认)或jadevice(可选):用于评分的设备类型 —overall(默认)、mobile或desktop
示例:
{
"domains": ["nytimes.com", "washingtonpost.com", "reuters.com"],
"campaignGoal": "branding",
"device": "desktop"
}health_check
检查 OpenSincera API 连接的健康状态。
参数: 无
响应格式
发布商元数据响应
{
"publishers": [
{
"publisherId": "1",
"publisherName": "Business Insider",
"ownerDomain": "insider-inc.com",
"domain": "businessinsider.com",
"status": "active",
"lastUpdated": "2026-04-14T01:00:25.419Z",
"categories": [],
"verificationStatus": "verified",
"parentEntityId": 59072,
"similarPublishers": [41, 67, 405],
"deviceMetrics": {
"mobile": {
"avgAdsToContentRatio": 0.265,
"maxAdsToContentRatio": 1.0,
"minAdsToContentRatio": 0.0,
"avgAdUnitsInView": 1.611,
"maxAdUnitsInView": 4.0,
"averageRefreshRate": 58.441,
"maxRefreshRate": 420.0,
"minRefreshRate": 5.0,
"percentageOfAdSlotsWithRefresh": 98.78
},
"desktop": {
"avgAdsToContentRatio": 0.231,
"maxAdsToContentRatio": 1.0,
"minAdsToContentRatio": 0.0,
"avgAdUnitsInView": 2.577,
"maxAdUnitsInView": 9.0,
"averageRefreshRate": 81.096,
"maxRefreshRate": 590.0,
"minRefreshRate": 5.0,
"percentageOfAdSlotsWithRefresh": 84.99
}
},
"metadata": {
"description": "Business Insider tells the global tech, finance...",
"primarySupplyType": "web",
"avgAdsToContentRatio": 0.249,
"avgAdsInView": 2.088,
"avgAdRefresh": 72.489,
"totalUniqueGpids": 946,
"idAbsorptionRate": 0.5,
"avgPageWeight": 27.843,
"avgCpu": 254.671,
"totalSupplyPaths": 118,
"resellerCount": 69,
"slug": "business-insider"
}
}
],
"totalCount": 1,
"hasMore": false
}健康检查响应
{
"healthy": true,
"timestamp": "2026-04-14T10:00:00Z"
}环境变量
变量 | 描述 | 默认值 | 必需 |
| 您的 OpenSincera API 密钥 | - | 是 |
| OpenSincera API 基础 URL |
| 否 |
| 请求超时时间(毫秒) |
| 否 |
错误处理
服务器为常见场景提供了全面的错误处理:
身份验证错误 (401):API 密钥无效或缺失
授权错误 (403):权限不足
未找到错误 (404):未找到发布商
速率限制 (429):超过 API 速率限制
网络错误:连接问题或超时
验证错误:输入参数无效
开发
脚本
npm run build- 构建 TypeScript 项目npm run dev- 在开发模式下运行并热重载npm test- 运行测试npm run lint- 运行 ESLintnpm run format- 使用 Prettier 格式化代码
项目结构
src/
├── index.ts # Main MCP server entry point and tool definitions
├── opensincera-service.ts # OpenSincera API client and data models
├── metadata-descriptions.ts # Field descriptions and formatted output
└── analysis.ts # Scoring, comparison, and evaluation logic贡献
Fork 仓库
创建功能分支
进行更改
为新功能添加测试
运行测试套件
提交 Pull Request
许可证
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。
支持
有关此 MCP 服务器的问题,请在 GitHub 上提交 Issue。
有关 OpenSincera API 的问题,请直接联系 OpenSincera 支持团队。
更新日志
v1.0.4
添加了
device_level_metrics支持:A2CR、广告可见度、广告刷新率(平均/最小/最大)以及带有刷新的广告位百分比的移动端和桌面端细分数据添加了
compare_publishers工具:针对类似发布商的并排竞争基准测试添加了
evaluate_media工具:根据广告活动目标(品牌推广/效果营销/平衡)对多个发布商进行评分和排名为
compare_publishers和evaluate_media添加了device参数,用于移动端/桌面端特定分析添加了用于评分和报告逻辑的
analysis.ts模块
v1.0.3
添加了发布商比较和评级功能
更新了发布商元数据结构,包含
owner_domain、domain、parent_entity_id和similar_publishers
v1.0.2
版本升级和稳定性改进
v1.0.0
初始版本
基本发布商查询功能
健康检查端点
全面的错误处理
输入验证
Available Tools
4 toolsget_publisher_by_domainB
Get detailed publisher information by domain name with comprehensive metric descriptions. Returns formatted data including performance metrics, supply chain information, and detailed explanations of each field's meaning and business impact.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Publisher domain to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does mention the comprehensive nature of the returned data ('performance metrics, supply chain information, detailed explanations'), which adds useful context about output richness. However, it doesn't address important behavioral aspects like error handling, rate limits, authentication requirements, or whether this is a read-only operation (though 'get' implies it likely is).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise with two sentences that pack substantial information. The first sentence states the core functionality, while the second elaborates on the return data. There's no obvious fluff or redundancy. However, it could be slightly more front-loaded by mentioning the comprehensive return data earlier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter with full schema coverage and no output schema, the description provides adequate but incomplete context. It helpfully describes the richness of the return data ('comprehensive metric descriptions', 'performance metrics', 'supply chain information'), which compensates for the missing output schema. However, for a tool that returns complex data structures, more detail about the response format would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single 'domain' parameter clearly documented. The description doesn't add any parameter-specific information beyond what the schema already provides. It mentions 'domain name' but doesn't elaborate on format requirements, validation rules, or examples. The baseline score of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get detailed publisher information by domain name' which is a specific verb+resource combination. It distinguishes itself from sibling tools like 'get_publisher_by_id' by specifying the domain-based lookup approach. However, it doesn't explicitly contrast with 'get_publisher_metadata' which might have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While it mentions domain-based lookup, it doesn't specify when to choose this over 'get_publisher_by_id' (ID-based lookup) or 'get_publisher_metadata' (which might provide different metadata). There's no mention of prerequisites, error conditions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_publisher_by_idC
Get detailed publisher information by Publisher ID with comprehensive metric descriptions. Returns formatted data including performance metrics, supply chain information, and detailed explanations of each field's meaning and business impact.
| Name | Required | Description | Default |
|---|---|---|---|
| publisherId | Yes | Publisher ID to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the return content ('formatted data including performance metrics, supply chain information, and detailed explanations') but lacks critical behavioral details such as error handling (e.g., what happens if the ID is invalid), authentication requirements, rate limits, or data freshness. For a read operation with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose. Both sentences earn their place: the first defines the action and scope, and the second elaborates on the return data. There's no unnecessary verbosity, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a single-parameter read operation) and the absence of annotations and output schema, the description is moderately complete. It covers the purpose and return content but misses behavioral aspects like error handling or prerequisites. Without an output schema, it should ideally detail the return structure more explicitly, but it provides enough context for basic use, albeit with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'publisherId' documented as 'Publisher ID to search for.' The description adds minimal value beyond this, only implying the parameter is used to fetch data. Since the schema already does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't provide additional syntax, format, or usage details for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get detailed publisher information by Publisher ID with comprehensive metric descriptions.' It specifies the verb ('Get'), resource ('publisher information'), and key identifier ('Publisher ID'). However, it doesn't explicitly differentiate from sibling tools like get_publisher_by_domain or get_publisher_metadata, which likely retrieve similar data using different identifiers or scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions the tool retrieves data by Publisher ID but doesn't compare it to siblings like get_publisher_by_domain (which might use a domain instead) or get_publisher_metadata (which could offer different data types). Without such context, an agent might struggle to choose the correct tool for a given scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_publisher_metadataA
Get detailed publisher metadata from OpenSincera API with comprehensive field descriptions. Requires either publisherId or publisherDomain.
Returns publisher information including:
Basic Info: Publisher ID, name, domain, status, verification status, contact info, categories
Performance Metrics: Ads to Content Ratio (A2CR), Ads in View, Ad Refresh Rate, Page Weight, CPU Usage
Supply Chain: Total Supply Paths, Reseller Count, Global Publisher IDs (GPIDs)
Identity: ID Absorption Rate
Each metric includes detailed explanations of what it measures and its business implications.
| Name | Required | Description | Default |
|---|---|---|---|
| publisherId | No | Publisher ID to search for | |
| publisherDomain | No | Publisher domain to search for | |
| limit | No | Maximum number of results to return (1-100) | |
| offset | No | Number of results to skip |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns detailed publisher information with metrics and explanations, which adds behavioral context. However, it lacks details on error handling, rate limits, authentication needs, or response format structure, leaving gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose and requirements. The bullet-point list efficiently organizes return information, but some sentences could be more concise (e.g., 'Each metric includes detailed explanations...' might be implied). Overall, it earns its place with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description provides good context on what the tool does and returns, including metric explanations. However, it lacks details on error cases, response format, or pagination behavior (implied by limit/offset but not explained), making it incomplete for full agent understanding without structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (publisherId, publisherDomain, limit, offset). The description adds value by specifying that either publisherId or publisherDomain is required, which clarifies semantics beyond the schema's optional parameters. However, it does not provide additional details on parameter interactions or usage examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('detailed publisher metadata from OpenSincera API'), including comprehensive field descriptions. It distinguishes from sibling tools (get_publisher_by_domain, get_publisher_by_id) by emphasizing comprehensive metadata rather than basic lookup, and explicitly mentions it accepts either publisherId or publisherDomain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Requires either publisherId or publisherDomain') and implies usage for detailed metadata. However, it does not explicitly state when to use this vs. the sibling tools (e.g., get_publisher_by_domain/get_publisher_by_id), which might be for simpler lookups, nor does it mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkB
Check the health status of the OpenSincera API connection
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe what 'health status' means (e.g., returns success/failure, latency metrics, error details), whether it requires authentication, or what happens on failure. This leaves significant behavioral gaps for a monitoring tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no wasted words. It's front-loaded with the core purpose and efficiently communicates the essential information without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a health check tool with no annotations and no output schema, the description is insufficient. It doesn't explain what constitutes 'health status' or what the return values might be (e.g., boolean status, detailed diagnostics, error messages). Given the lack of structured fields, the description should provide more operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. Baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Check') and target ('health status of the OpenSincera API connection'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools (which are all publisher-related), though this may not be necessary since health_check serves a distinct monitoring purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for verifying API connectivity, but provides no explicit guidance on when to use it versus alternatives or prerequisites. It doesn't mention if this should be used before other operations or as a diagnostic tool, leaving usage context somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- Changed
get_publisher_by_domain1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_publisher_by_id1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_publisher_metadata1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
health_check1 field changed- added
Input schema / additionalPropertiesAdded value: +false
4 tool updates
- First observed
get_publisher_by_domain - First observed
get_publisher_by_id - First observed
get_publisher_metadata - First observed
health_check
TDQS
Scored across 4 tools
The first three tools (get_publisher_by_domain, get_publisher_by_id, get_publisher_metadata) have overlapping purposes, as they all retrieve publisher information with only slight variations in input parameters, which could cause confusion for an agent. However, the health_check tool is clearly distinct, providing a separate API connection check function.
The tool names follow a consistent verb_noun pattern (e.g., get_publisher_by_domain, health_check), with all using snake_case. The only minor deviation is that health_check uses a compound noun without a preceding verb like 'get', but it still fits the general naming convention.
With only 4 tools, the server feels thin for its apparent domain of publisher analytics, as it lacks operations for updating, creating, or deleting data, which limits functionality. However, the count is reasonable for a basic read-only interface.
The tool set is severely incomplete for a publisher analytics domain, as it only provides read operations (get and health check) without any create, update, or delete capabilities. This creates significant gaps that could lead to agent failures when full lifecycle management is needed.
Maintenance
Related MCP Connectors
One API for public web data across social, directories and real estate, as clean JSON.
Enrich and search people and companies, resolve identities, and enrich IP addresses.
ScrapeCreators MCP — wraps the ScrapeCreators social-media + ad-library
Programmatic-advertising supply verification: ads.txt, schain, ATAP receipts, cross_lens_verify.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables programmatic management of NewsBreak advertising campaigns, ad sets, ads, and assets via the NewsBreak Advertising API.141-
- AlicenseNot gradedqualityBmaintenanceDeprecated. This server has merged into mcp-walmart-ads (>= 0.2.0), which serves the same 28 Walmart Marketplace domains alongside Walmart Connect Ads and Sam's Club Sponsored Ads.MIT
- -licenseNot gradedqualityNot gradedmaintenanceProvides access to the OpenAlex API, enabling search and retrieval of scholarly works, authors, sources, and more.-
- AlicenseNot gradedqualityAmaintenanceEnables searching and retrieving researcher profiles, works, affiliations, funding, and peer review records from the ORCID registry via MCP, supporting STDIO or Streamable HTTP.394 npm5Apache 2.0