@cesteral/pinterest-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +201 -0
- package/README.md +348 -0
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/pinterest-auth-adapter.d.ts +38 -0
- package/dist/auth/pinterest-auth-adapter.d.ts.map +1 -0
- package/dist/auth/pinterest-auth-adapter.js +117 -0
- package/dist/auth/pinterest-auth-adapter.js.map +1 -0
- package/dist/auth/pinterest-auth-strategy.d.ts +13 -0
- package/dist/auth/pinterest-auth-strategy.d.ts.map +1 -0
- package/dist/auth/pinterest-auth-strategy.js +52 -0
- package/dist/auth/pinterest-auth-strategy.js.map +1 -0
- package/dist/config/index.d.ts +120 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +55 -0
- package/dist/config/index.js.map +1 -0
- package/dist/generated/types.d.ts +18119 -0
- package/dist/generated/types.d.ts.map +1 -0
- package/dist/generated/types.js +2 -0
- package/dist/generated/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js +125 -0
- package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js +105 -0
- package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.js +95 -0
- package/dist/mcp-server/prompts/definitions/creative-upload-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js +301 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js +170 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js +198 -0
- package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js +188 -0
- package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.js +126 -0
- package/dist/mcp-server/prompts/definitions/reporting-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js +197 -0
- package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +93 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js +111 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/index.d.ts +9 -0
- package/dist/mcp-server/prompts/index.d.ts.map +1 -0
- package/dist/mcp-server/prompts/index.js +97 -0
- package/dist/mcp-server/prompts/index.js.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts +4 -0
- package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-examples.resource.js +180 -0
- package/dist/mcp-server/resources/definitions/entity-examples.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js +140 -0
- package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts +4 -0
- package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-schemas.resource.js +125 -0
- package/dist/mcp-server/resources/definitions/entity-schemas.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/index.d.ts +7 -0
- package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/index.js +58 -0
- package/dist/mcp-server/resources/definitions/index.js.map +1 -0
- package/dist/mcp-server/resources/definitions/reporting-reference.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/reporting-reference.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/reporting-reference.resource.js +148 -0
- package/dist/mcp-server/resources/definitions/reporting-reference.resource.js.map +1 -0
- package/dist/mcp-server/resources/index.d.ts +3 -0
- package/dist/mcp-server/resources/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/index.js +2 -0
- package/dist/mcp-server/resources/index.js.map +1 -0
- package/dist/mcp-server/resources/types.d.ts +8 -0
- package/dist/mcp-server/resources/types.d.ts.map +1 -0
- package/dist/mcp-server/resources/types.js +2 -0
- package/dist/mcp-server/resources/types.js.map +1 -0
- package/dist/mcp-server/server.d.ts +5 -0
- package/dist/mcp-server/server.d.ts.map +1 -0
- package/dist/mcp-server/server.js +133 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +209 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.js +141 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts +151 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js +109 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts +193 -0
- package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js +127 -0
- package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts +153 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js +134 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts +119 -0
- package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/check-report-status.tool.js +91 -0
- package/dist/mcp-server/tools/definitions/check-report-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +113 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.js +99 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts +100 -0
- package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/delete-entity.tool.js +110 -0
- package/dist/mcp-server/tools/definitions/delete-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/download-report.tool.d.ts +297 -0
- package/dist/mcp-server/tools/definitions/download-report.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/download-report.tool.js +110 -0
- package/dist/mcp-server/tools/definitions/download-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/duplicate-entity.tool.d.ts +105 -0
- package/dist/mcp-server/tools/definitions/duplicate-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/duplicate-entity.tool.js +85 -0
- package/dist/mcp-server/tools/definitions/duplicate-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +89 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js +74 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.d.ts +85 -0
- package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.js +88 -0
- package/dist/mcp-server/tools/definitions/get-audience-estimate.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +76 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.js +71 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.d.ts +319 -0
- package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.js +183 -0
- package/dist/mcp-server/tools/definitions/get-report-breakdowns.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report.tool.d.ts +301 -0
- package/dist/mcp-server/tools/definitions/get-report.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report.tool.js +176 -0
- package/dist/mcp-server/tools/definitions/get-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts +75 -0
- package/dist/mcp-server/tools/definitions/get-targeting-options.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js +72 -0
- package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/index.d.ts +25 -0
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/index.js +75 -0
- package/dist/mcp-server/tools/definitions/index.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-advertisers.tool.d.ts +54 -0
- package/dist/mcp-server/tools/definitions/list-advertisers.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/list-advertisers.tool.js +58 -0
- package/dist/mcp-server/tools/definitions/list-advertisers.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +180 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.js +116 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts +103 -0
- package/dist/mcp-server/tools/definitions/search-targeting.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/search-targeting.tool.js +98 -0
- package/dist/mcp-server/tools/definitions/search-targeting.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts +164 -0
- package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/submit-report.tool.js +118 -0
- package/dist/mcp-server/tools/definitions/submit-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +111 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.js +89 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/upload-image.tool.d.ts +81 -0
- package/dist/mcp-server/tools/definitions/upload-image.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/upload-image.tool.js +73 -0
- package/dist/mcp-server/tools/definitions/upload-image.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/upload-video.tool.d.ts +82 -0
- package/dist/mcp-server/tools/definitions/upload-video.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/upload-video.tool.js +100 -0
- package/dist/mcp-server/tools/definitions/upload-video.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +169 -0
- package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/validate-entity.tool.js +154 -0
- package/dist/mcp-server/tools/definitions/validate-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/index.d.ts +2 -0
- package/dist/mcp-server/tools/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/index.js +2 -0
- package/dist/mcp-server/tools/index.js.map +1 -0
- package/dist/mcp-server/tools/utils/entity-mapping.d.ts +22 -0
- package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/entity-mapping.js +105 -0
- package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
- package/dist/mcp-server/tools/utils/media-types.d.ts +14 -0
- package/dist/mcp-server/tools/utils/media-types.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/media-types.js +2 -0
- package/dist/mcp-server/tools/utils/media-types.js.map +1 -0
- package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
- package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
- package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
- package/dist/mcp-server/transports/streamable-http-transport.d.ts +59 -0
- package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
- package/dist/mcp-server/transports/streamable-http-transport.js +107 -0
- package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
- package/dist/services/pinterest/pinterest-http-client.d.ts +22 -0
- package/dist/services/pinterest/pinterest-http-client.d.ts.map +1 -0
- package/dist/services/pinterest/pinterest-http-client.js +149 -0
- package/dist/services/pinterest/pinterest-http-client.js.map +1 -0
- package/dist/services/pinterest/pinterest-reporting-service.d.ts +60 -0
- package/dist/services/pinterest/pinterest-reporting-service.d.ts.map +1 -0
- package/dist/services/pinterest/pinterest-reporting-service.js +132 -0
- package/dist/services/pinterest/pinterest-reporting-service.js.map +1 -0
- package/dist/services/pinterest/pinterest-service.d.ts +110 -0
- package/dist/services/pinterest/pinterest-service.d.ts.map +1 -0
- package/dist/services/pinterest/pinterest-service.js +238 -0
- package/dist/services/pinterest/pinterest-service.js.map +1 -0
- package/dist/services/session-services.d.ts +21 -0
- package/dist/services/session-services.d.ts.map +1 -0
- package/dist/services/session-services.js +23 -0
- package/dist/services/session-services.js.map +1 -0
- package/dist/types-global/mcp.d.ts +2 -0
- package/dist/types-global/mcp.d.ts.map +1 -0
- package/dist/types-global/mcp.js +2 -0
- package/dist/types-global/mcp.js.map +1 -0
- package/dist/utils/errors/index.d.ts +2 -0
- package/dist/utils/errors/index.d.ts.map +1 -0
- package/dist/utils/errors/index.js +2 -0
- package/dist/utils/errors/index.js.map +1 -0
- package/dist/utils/platform.d.ts +3 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +5 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/security/rate-limiter.d.ts +3 -0
- package/dist/utils/security/rate-limiter.d.ts.map +1 -0
- package/dist/utils/security/rate-limiter.js +5 -0
- package/dist/utils/security/rate-limiter.js.map +1 -0
- package/dist/utils/telemetry/index.d.ts +2 -0
- package/dist/utils/telemetry/index.d.ts.map +1 -0
- package/dist/utils/telemetry/index.js +2 -0
- package/dist/utils/telemetry/index.js.map +1 -0
- package/dist/utils/telemetry/tracing.d.ts +3 -0
- package/dist/utils/telemetry/tracing.d.ts.map +1 -0
- package/dist/utils/telemetry/tracing.js +4 -0
- package/dist/utils/telemetry/tracing.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { executeBulkConcurrent, McpError, JsonRpcErrorCode, } from "@cesteral/shared";
|
|
2
|
+
import { getEntityConfig, interpolatePath, } from "../../mcp-server/tools/utils/entity-mapping.js";
|
|
3
|
+
export class PinterestService {
|
|
4
|
+
rateLimiter;
|
|
5
|
+
httpClient;
|
|
6
|
+
logger;
|
|
7
|
+
constructor(rateLimiter, httpClient, logger) {
|
|
8
|
+
this.rateLimiter = rateLimiter;
|
|
9
|
+
this.httpClient = httpClient;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
get client() {
|
|
13
|
+
return this.httpClient;
|
|
14
|
+
}
|
|
15
|
+
async listEntities(entityType, filters, bookmark, pageSize = 25, context) {
|
|
16
|
+
const config = getEntityConfig(entityType);
|
|
17
|
+
const path = interpolatePath(config.listPath, { adAccountId: filters.adAccountId });
|
|
18
|
+
const params = { page_size: String(pageSize) };
|
|
19
|
+
if (bookmark)
|
|
20
|
+
params.bookmark = bookmark;
|
|
21
|
+
if (filters.campaignId)
|
|
22
|
+
params.campaign_id = filters.campaignId;
|
|
23
|
+
if (filters.adGroupId)
|
|
24
|
+
params.ad_group_id = filters.adGroupId;
|
|
25
|
+
await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`);
|
|
26
|
+
const data = (await this.httpClient.get(path, params, context));
|
|
27
|
+
return {
|
|
28
|
+
entities: (data?.items ?? []),
|
|
29
|
+
pageInfo: { bookmark: data?.bookmark ?? null },
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async getEntity(entityType, filters, entityId, context) {
|
|
33
|
+
const config = getEntityConfig(entityType);
|
|
34
|
+
await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`);
|
|
35
|
+
if (config.getPath) {
|
|
36
|
+
const path = interpolatePath(config.getPath, {
|
|
37
|
+
adAccountId: filters.adAccountId,
|
|
38
|
+
entityId,
|
|
39
|
+
});
|
|
40
|
+
const result = (await this.httpClient.get(path, {}, context));
|
|
41
|
+
if (!("items" in result)) {
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
const list = result.items ?? [];
|
|
45
|
+
const entity = list.find((e) => e[config.idField] === entityId);
|
|
46
|
+
if (!entity) {
|
|
47
|
+
throw new McpError(JsonRpcErrorCode.NotFound, `${config.displayName} with ID ${entityId} not found`);
|
|
48
|
+
}
|
|
49
|
+
return entity;
|
|
50
|
+
}
|
|
51
|
+
const listPath = interpolatePath(config.listPath, {
|
|
52
|
+
adAccountId: filters.adAccountId,
|
|
53
|
+
});
|
|
54
|
+
const data = (await this.httpClient.get(listPath, { [config.idField]: entityId, page_size: "1" }, context));
|
|
55
|
+
const list = data?.items ?? [];
|
|
56
|
+
if (list.length === 0) {
|
|
57
|
+
throw new McpError(JsonRpcErrorCode.NotFound, `${config.displayName} with ID ${entityId} not found`);
|
|
58
|
+
}
|
|
59
|
+
return list[0];
|
|
60
|
+
}
|
|
61
|
+
async createEntity(entityType, filters, body, context) {
|
|
62
|
+
const config = getEntityConfig(entityType);
|
|
63
|
+
const path = interpolatePath(config.createPath, { adAccountId: filters.adAccountId });
|
|
64
|
+
await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`, 3);
|
|
65
|
+
const data = (await this.httpClient.post(path, [body], context));
|
|
66
|
+
return (data?.items ?? [])[0];
|
|
67
|
+
}
|
|
68
|
+
async updateEntity(entityType, filters, entityId, updates, context) {
|
|
69
|
+
const config = getEntityConfig(entityType);
|
|
70
|
+
const path = interpolatePath(config.updatePath, { adAccountId: filters.adAccountId, entityId });
|
|
71
|
+
await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`, 3);
|
|
72
|
+
const isSingleEntity = config.updatePath.includes("{entityId}");
|
|
73
|
+
if (isSingleEntity) {
|
|
74
|
+
return this.httpClient.patch(path, updates, context);
|
|
75
|
+
}
|
|
76
|
+
const data = (await this.httpClient.patch(path, [{ id: entityId, ...updates }], context));
|
|
77
|
+
return (data?.items ?? [])[0];
|
|
78
|
+
}
|
|
79
|
+
async deleteEntity(entityType, filters, entityIds, context) {
|
|
80
|
+
const config = getEntityConfig(entityType);
|
|
81
|
+
await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`, 3);
|
|
82
|
+
if (config.deletePath.includes("{entityId}")) {
|
|
83
|
+
const results = await Promise.all(entityIds.map((id) => {
|
|
84
|
+
const path = interpolatePath(config.deletePath, {
|
|
85
|
+
adAccountId: filters.adAccountId,
|
|
86
|
+
entityId: id,
|
|
87
|
+
});
|
|
88
|
+
return this.httpClient.delete(path, {}, context);
|
|
89
|
+
}));
|
|
90
|
+
return results.length === 1 ? results[0] : results;
|
|
91
|
+
}
|
|
92
|
+
const path = interpolatePath(config.deletePath, { adAccountId: filters.adAccountId });
|
|
93
|
+
return this.httpClient.delete(path, { [config.deleteIdsParam]: entityIds.join(",") }, context);
|
|
94
|
+
}
|
|
95
|
+
async updateEntityStatus(entityType, filters, entityIds, status, context) {
|
|
96
|
+
return Promise.all(entityIds.map((id) => this.updateEntity(entityType, filters, id, { status }, context)));
|
|
97
|
+
}
|
|
98
|
+
async listAdAccounts(context) {
|
|
99
|
+
await this.rateLimiter.consume("pinterest:default");
|
|
100
|
+
const response = (await this.httpClient.get("/v5/ad_accounts", {}, context));
|
|
101
|
+
const entities = Array.isArray(response.items) ? response.items : [];
|
|
102
|
+
const nextCursor = typeof response.bookmark === "string" ? response.bookmark : undefined;
|
|
103
|
+
return { entities, nextCursor };
|
|
104
|
+
}
|
|
105
|
+
async duplicateEntity(entityType, filters, entityId, options, context) {
|
|
106
|
+
const config = getEntityConfig(entityType);
|
|
107
|
+
if (!config.supportsDuplicate) {
|
|
108
|
+
this.logger.debug({ entityType }, "Duplicate skipped: entity type does not support duplication");
|
|
109
|
+
throw new McpError(JsonRpcErrorCode.InvalidParams, `Entity type ${entityType} does not support duplication`);
|
|
110
|
+
}
|
|
111
|
+
const source = (await this.getEntity(entityType, filters, entityId, context));
|
|
112
|
+
const SYSTEM_FIELDS = [
|
|
113
|
+
"id",
|
|
114
|
+
"created_time",
|
|
115
|
+
"updated_time",
|
|
116
|
+
"ad_account_id",
|
|
117
|
+
"pin_count",
|
|
118
|
+
"view_tags",
|
|
119
|
+
];
|
|
120
|
+
const body = {};
|
|
121
|
+
for (const [key, val] of Object.entries(source)) {
|
|
122
|
+
if (!SYSTEM_FIELDS.includes(key)) {
|
|
123
|
+
body[key] = val;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (options?.name)
|
|
127
|
+
body.name = options.name;
|
|
128
|
+
if (options?.campaign_name)
|
|
129
|
+
body.campaign_name = options.campaign_name;
|
|
130
|
+
Object.assign(body, options);
|
|
131
|
+
return this.createEntity(entityType, filters, body, context);
|
|
132
|
+
}
|
|
133
|
+
async adjustBids(filters, adjustments, context) {
|
|
134
|
+
const results = [];
|
|
135
|
+
for (const adjustment of adjustments) {
|
|
136
|
+
try {
|
|
137
|
+
const entity = await this.getEntity("adGroup", filters, adjustment.adGroupId, context);
|
|
138
|
+
const previousBid = entity.bid_in_micro_currency != null ? Number(entity.bid_in_micro_currency) : undefined;
|
|
139
|
+
await this.updateEntity("adGroup", filters, adjustment.adGroupId, {
|
|
140
|
+
bid_in_micro_currency: adjustment.bidPrice,
|
|
141
|
+
}, context);
|
|
142
|
+
results.push({
|
|
143
|
+
adGroupId: adjustment.adGroupId,
|
|
144
|
+
success: true,
|
|
145
|
+
previousBid,
|
|
146
|
+
newBid: adjustment.bidPrice,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
results.push({
|
|
151
|
+
adGroupId: adjustment.adGroupId,
|
|
152
|
+
success: false,
|
|
153
|
+
error: error instanceof Error ? error.message : String(error),
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return { results };
|
|
158
|
+
}
|
|
159
|
+
async bulkCreateEntities(entityType, filters, items, context) {
|
|
160
|
+
const results = await executeBulkConcurrent(items, async (data) => {
|
|
161
|
+
return this.createEntity(entityType, filters, data, context);
|
|
162
|
+
}, { logger: this.logger });
|
|
163
|
+
return { results };
|
|
164
|
+
}
|
|
165
|
+
async bulkUpdateEntities(entityType, filters, items, context) {
|
|
166
|
+
const bulkResults = await executeBulkConcurrent(items, async (item) => {
|
|
167
|
+
return this.updateEntity(entityType, filters, item.entityId, item.data, context);
|
|
168
|
+
}, { logger: this.logger });
|
|
169
|
+
return {
|
|
170
|
+
results: bulkResults.map((r, i) => ({
|
|
171
|
+
entityId: items[i].entityId,
|
|
172
|
+
success: r.success,
|
|
173
|
+
error: r.error,
|
|
174
|
+
})),
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
async bulkUpdateStatus(entityType, filters, entityIds, status, context) {
|
|
178
|
+
this.logger.debug({ entityType, count: entityIds.length, status }, "Bulk status update");
|
|
179
|
+
const bulkResults = await executeBulkConcurrent(entityIds, async (entityId) => {
|
|
180
|
+
return this.updateEntity(entityType, filters, entityId, { status }, context);
|
|
181
|
+
}, { logger: this.logger });
|
|
182
|
+
return {
|
|
183
|
+
results: bulkResults.map((r, i) => ({
|
|
184
|
+
entityId: entityIds[i],
|
|
185
|
+
success: r.success,
|
|
186
|
+
error: r.error,
|
|
187
|
+
})),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
async searchTargeting(targetingType, query, limit = 20, context) {
|
|
191
|
+
await this.rateLimiter.consume("pinterest:default");
|
|
192
|
+
const params = {
|
|
193
|
+
count: String(limit),
|
|
194
|
+
};
|
|
195
|
+
if (query) {
|
|
196
|
+
params.keyword = query;
|
|
197
|
+
}
|
|
198
|
+
return this.httpClient.get(`/v5/targeting_options/${targetingType}`, params, context);
|
|
199
|
+
}
|
|
200
|
+
async getTargetingOptions(targetingType, context) {
|
|
201
|
+
await this.rateLimiter.consume("pinterest:default");
|
|
202
|
+
if (!targetingType) {
|
|
203
|
+
return {
|
|
204
|
+
targeting_types: [
|
|
205
|
+
"APPTYPE",
|
|
206
|
+
"GENDER",
|
|
207
|
+
"LOCALE",
|
|
208
|
+
"AGE_BUCKET",
|
|
209
|
+
"LOCATION",
|
|
210
|
+
"GEO",
|
|
211
|
+
"INTEREST",
|
|
212
|
+
"KEYWORD",
|
|
213
|
+
"AUDIENCE_INCLUDE",
|
|
214
|
+
"AUDIENCE_EXCLUDE",
|
|
215
|
+
],
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
return this.httpClient.get(`/v5/targeting_options/${targetingType}`, {}, context);
|
|
219
|
+
}
|
|
220
|
+
async getAudienceEstimate(filters, targetingConfig, context) {
|
|
221
|
+
await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`);
|
|
222
|
+
const path = `/v5/ad_accounts/${filters.adAccountId}/audience_sizing`;
|
|
223
|
+
const params = {
|
|
224
|
+
targeting_spec: JSON.stringify(targetingConfig),
|
|
225
|
+
};
|
|
226
|
+
return this.httpClient.get(path, params, context);
|
|
227
|
+
}
|
|
228
|
+
async getAdPreviews(filters, adId, adFormat, context) {
|
|
229
|
+
await this.rateLimiter.consume(`pinterest:${filters.adAccountId}`);
|
|
230
|
+
const params = { ad_id: adId };
|
|
231
|
+
if (adFormat) {
|
|
232
|
+
params.ad_format = adFormat;
|
|
233
|
+
}
|
|
234
|
+
const path = `/v5/ad_accounts/${filters.adAccountId}/ads/previews`;
|
|
235
|
+
return this.httpClient.get(path, params, context);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=pinterest-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinterest-service.js","sourceRoot":"","sources":["../../../src/services/pinterest/pinterest-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Logger } from "pino";
|
|
2
|
+
import type { PinterestAuthAdapter } from "../auth/pinterest-auth-adapter.js";
|
|
3
|
+
import type { RateLimiter } from "@cesteral/shared";
|
|
4
|
+
import { ReportCsvStore, SessionServiceStore } from "@cesteral/shared";
|
|
5
|
+
export { SessionServiceStore } from "@cesteral/shared";
|
|
6
|
+
import { PinterestService } from "./pinterest/pinterest-service.js";
|
|
7
|
+
import { PinterestReportingService } from "./pinterest/pinterest-reporting-service.js";
|
|
8
|
+
export interface SessionServices {
|
|
9
|
+
pinterestService: PinterestService;
|
|
10
|
+
pinterestReportingService: PinterestReportingService;
|
|
11
|
+
}
|
|
12
|
+
export interface PinterestSessionConfig {
|
|
13
|
+
baseUrl: string;
|
|
14
|
+
apiVersion: string;
|
|
15
|
+
reportPollIntervalMs: number;
|
|
16
|
+
reportMaxPollAttempts: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function createSessionServices(authAdapter: PinterestAuthAdapter, config: PinterestSessionConfig, logger: Logger, rateLimiter: RateLimiter): SessionServices;
|
|
19
|
+
export declare const sessionServiceStore: SessionServiceStore<SessionServices>;
|
|
20
|
+
export declare const reportCsvStore: ReportCsvStore;
|
|
21
|
+
//# sourceMappingURL=session-services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-services.d.ts","sourceRoot":"","sources":["../../src/services/session-services.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAEL,cAAc,EACd,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,yBAAyB,EAAE,yBAAyB,CAAC;CACtD;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GACvB,eAAe,CAqBjB;AAED,eAAO,MAAM,mBAAmB,sCAA6C,CAAC;AAiB9E,eAAO,MAAM,cAAc,gBAIzB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { deleteSpilledObjectsForSession, ReportCsvStore, SessionServiceStore, } from "@cesteral/shared";
|
|
2
|
+
export { SessionServiceStore } from "@cesteral/shared";
|
|
3
|
+
import { PinterestHttpClient } from "./pinterest/pinterest-http-client.js";
|
|
4
|
+
import { PinterestService } from "./pinterest/pinterest-service.js";
|
|
5
|
+
import { PinterestReportingService } from "./pinterest/pinterest-reporting-service.js";
|
|
6
|
+
export function createSessionServices(authAdapter, config, logger, rateLimiter) {
|
|
7
|
+
const httpClient = new PinterestHttpClient(authAdapter, authAdapter.adAccountId, config.baseUrl, logger, config.apiVersion);
|
|
8
|
+
const pinterestService = new PinterestService(rateLimiter, httpClient, logger);
|
|
9
|
+
const pinterestReportingService = new PinterestReportingService(rateLimiter, httpClient, logger, config.reportPollIntervalMs, config.reportMaxPollAttempts);
|
|
10
|
+
return {
|
|
11
|
+
pinterestService,
|
|
12
|
+
pinterestReportingService,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export const sessionServiceStore = new SessionServiceStore();
|
|
16
|
+
sessionServiceStore.onDelete((sessionId) => {
|
|
17
|
+
void deleteSpilledObjectsForSession("pinterest", sessionId);
|
|
18
|
+
reportCsvStore.clearForSession(sessionId);
|
|
19
|
+
});
|
|
20
|
+
export const reportCsvStore = new ReportCsvStore({
|
|
21
|
+
mirror: { bucketResolver: () => process.env.REPORT_SPILL_BUCKET },
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=session-services.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-services.js","sourceRoot":"","sources":["../../src/services/session-services.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAcvF,MAAM,UAAU,qBAAqB,CACnC,WAAiC,EACjC,MAA8B,EAC9B,MAAc,EACd,WAAwB;IAExB,MAAM,UAAU,GAAG,IAAI,mBAAmB,CACxC,WAAW,EACX,WAAW,CAAC,WAAW,EACvB,MAAM,CAAC,OAAO,EACd,MAAM,EACN,MAAM,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/E,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAC7D,WAAW,EACX,UAAU,EACV,MAAM,EACN,MAAM,CAAC,oBAAoB,EAC3B,MAAM,CAAC,qBAAqB,CAC7B,CAAC;IAEF,OAAO;QACL,gBAAgB;QAChB,yBAAyB;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAmB,CAAC;AAM9E,mBAAmB,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE;IACzC,KAAK,8BAA8B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5D,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAQH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;IAG/C,MAAM,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE;CAClE,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/types-global/mcp.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/types-global/mcp.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/errors/index.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,YAAY,EACjB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/errors/index.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,QAAQ,EACR,YAAY,EAEZ,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const withPinterestApiSpan: <T>(operation: string, entityType: string | undefined, fn: (span: import("@opentelemetry/api").Span) => Promise<T>) => Promise<T>;
|
|
2
|
+
export declare const rateLimiter: import("@cesteral/shared").RateLimiter;
|
|
3
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,mIAAwC,CAAC;AAC1E,eAAO,MAAM,WAAW,wCAGvB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createPlatformSpanHelper, createPlatformRateLimiter } from "@cesteral/shared";
|
|
2
|
+
import { mcpConfig } from "../config/index.js";
|
|
3
|
+
export const withPinterestApiSpan = createPlatformSpanHelper("pinterest");
|
|
4
|
+
export const rateLimiter = createPlatformRateLimiter("pinterest", mcpConfig.pinterestRateLimitPerMinute);
|
|
5
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAClD,WAAW,EACX,SAAS,CAAC,2BAA2B,CACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/utils/security/rate-limiter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,eAAO,MAAM,WAAW,wCAGvB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { RateLimiter } from "@cesteral/shared";
|
|
2
|
+
import { createPlatformRateLimiter } from "@cesteral/shared";
|
|
3
|
+
import { mcpConfig } from "../../config/index.js";
|
|
4
|
+
export const rateLimiter = createPlatformRateLimiter("pinterest", mcpConfig.pinterestRateLimitPerMinute);
|
|
5
|
+
//# sourceMappingURL=rate-limiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../src/utils/security/rate-limiter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAClD,WAAW,EACX,SAAS,CAAC,2BAA2B,CACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/telemetry/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { initializeOpenTelemetry, shutdownOpenTelemetry, getOpenTelemetrySDK, isOpenTelemetryEnabled, otelLogMixin, getTracer, withSpan, withToolSpan, setSpanAttribute, recordSpanError, createPlatformSpanHelper, type Span, } from "@cesteral/shared";
|
|
2
|
+
export declare const withPinterestApiSpan: <T>(operation: string, entityType: string | undefined, fn: (span: import("@opentelemetry/api").Span) => Promise<T>) => Promise<T>;
|
|
3
|
+
//# sourceMappingURL=tracing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/tracing.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,KAAK,IAAI,GACV,MAAM,kBAAkB,CAAC;AAI1B,eAAO,MAAM,oBAAoB,mIAAwC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { initializeOpenTelemetry, shutdownOpenTelemetry, getOpenTelemetrySDK, isOpenTelemetryEnabled, otelLogMixin, getTracer, withSpan, withToolSpan, setSpanAttribute, recordSpanError, createPlatformSpanHelper, } from "@cesteral/shared";
|
|
2
|
+
import { createPlatformSpanHelper } from "@cesteral/shared";
|
|
3
|
+
export const withPinterestApiSpan = createPlatformSpanHelper("pinterest");
|
|
4
|
+
//# sourceMappingURL=tracing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/utils/telemetry/tracing.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,wBAAwB,GAEzB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cesteral/pinterest-mcp",
|
|
3
|
+
"mcpName": "io.github.cesteral/pinterest-mcp",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"description": "Pinterest Ads MCP Server - Campaign entity management and reporting via Pinterest Ads API v5",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/cesteral/mcp-open-advertising.git",
|
|
10
|
+
"directory": "packages/pinterest-mcp"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/cesteral/mcp-open-advertising#readme",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"mcp",
|
|
15
|
+
"model-context-protocol",
|
|
16
|
+
"advertising",
|
|
17
|
+
"pinterest-ads"
|
|
18
|
+
],
|
|
19
|
+
"files": [
|
|
20
|
+
"dist/",
|
|
21
|
+
"README.md",
|
|
22
|
+
"LICENSE.md"
|
|
23
|
+
],
|
|
24
|
+
"type": "module",
|
|
25
|
+
"main": "./dist/index.js",
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"bin": {
|
|
28
|
+
"pinterest-mcp": "./dist/index.js"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@modelcontextprotocol/sdk": "1.27.1",
|
|
35
|
+
"pino": "^10.1.0",
|
|
36
|
+
"zod": "3.25.76",
|
|
37
|
+
"@cesteral/shared": "1.0.0"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^20.17.6",
|
|
41
|
+
"openapi-typescript": "^7.10.1",
|
|
42
|
+
"tsx": "^4.20.6",
|
|
43
|
+
"typescript": "^5.9.3",
|
|
44
|
+
"vitest": "^1.6.0"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "tsc --build",
|
|
48
|
+
"clean": "rm -rf dist *.tsbuildinfo",
|
|
49
|
+
"dev:http": "tsx watch src/index.ts",
|
|
50
|
+
"generate": "tsx scripts/generate-types.ts",
|
|
51
|
+
"start": "node dist/index.js",
|
|
52
|
+
"typecheck": "tsc --noEmit",
|
|
53
|
+
"lint": "eslint src/",
|
|
54
|
+
"test": "vitest run",
|
|
55
|
+
"test:coverage": "vitest run --coverage"
|
|
56
|
+
}
|
|
57
|
+
}
|