@cesteral/amazon-dsp-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 +59 -0
- package/dist/auth/amazon-dsp-auth-adapter.d.ts +42 -0
- package/dist/auth/amazon-dsp-auth-adapter.d.ts.map +1 -0
- package/dist/auth/amazon-dsp-auth-adapter.js +126 -0
- package/dist/auth/amazon-dsp-auth-adapter.js.map +1 -0
- package/dist/auth/amazon-dsp-auth-strategy.d.ts +14 -0
- package/dist/auth/amazon-dsp-auth-strategy.d.ts.map +1 -0
- package/dist/auth/amazon-dsp-auth-strategy.js +58 -0
- package/dist/auth/amazon-dsp-auth-strategy.js.map +1 -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/config/index.d.ts +116 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +49 -0
- package/dist/config/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -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 +127 -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 +120 -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 +116 -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 +299 -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 +200 -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 +183 -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 +198 -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 +96 -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 +121 -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 +58 -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 +51 -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 +53 -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 +50 -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 +137 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +215 -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 +147 -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 +152 -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 +111 -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 +136 -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 +112 -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 +87 -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 +111 -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 +96 -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 +152 -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 +142 -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 +107 -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 +75 -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 +63 -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 +91 -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 +289 -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 +181 -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 +271 -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 +174 -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 +75 -0
- package/dist/mcp-server/tools/definitions/get-targeting-options.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/index.d.ts +21 -0
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/index.js +63 -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 +171 -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 +112 -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 +89 -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 +93 -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 +134 -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 +119 -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 +114 -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/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 +104 -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 +24 -0
- package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/entity-mapping.js +42 -0
- package/dist/mcp-server/tools/utils/entity-mapping.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 +57 -0
- package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
- package/dist/mcp-server/transports/streamable-http-transport.js +105 -0
- package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
- package/dist/services/amazon-dsp/amazon-dsp-api-contract.d.ts +43 -0
- package/dist/services/amazon-dsp/amazon-dsp-api-contract.d.ts.map +1 -0
- package/dist/services/amazon-dsp/amazon-dsp-api-contract.js +193 -0
- package/dist/services/amazon-dsp/amazon-dsp-api-contract.js.map +1 -0
- package/dist/services/amazon-dsp/amazon-dsp-http-client.d.ts +15 -0
- package/dist/services/amazon-dsp/amazon-dsp-http-client.d.ts.map +1 -0
- package/dist/services/amazon-dsp/amazon-dsp-http-client.js +138 -0
- package/dist/services/amazon-dsp/amazon-dsp-http-client.js.map +1 -0
- package/dist/services/amazon-dsp/amazon-dsp-reporting-service.d.ts +63 -0
- package/dist/services/amazon-dsp/amazon-dsp-reporting-service.d.ts.map +1 -0
- package/dist/services/amazon-dsp/amazon-dsp-reporting-service.js +134 -0
- package/dist/services/amazon-dsp/amazon-dsp-reporting-service.js.map +1 -0
- package/dist/services/amazon-dsp/amazon-dsp-service.d.ts +85 -0
- package/dist/services/amazon-dsp/amazon-dsp-service.d.ts.map +1 -0
- package/dist/services/amazon-dsp/amazon-dsp-service.js +182 -0
- package/dist/services/amazon-dsp/amazon-dsp-service.js.map +1 -0
- package/dist/services/amazon-dsp/types.d.ts +142 -0
- package/dist/services/amazon-dsp/types.d.ts.map +1 -0
- package/dist/services/amazon-dsp/types.js +24 -0
- package/dist/services/amazon-dsp/types.js.map +1 -0
- package/dist/services/session-services.d.ts +20 -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 +55 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const ConfigSchema: z.ZodObject<{
|
|
3
|
+
host: z.ZodDefault<z.ZodString>;
|
|
4
|
+
nodeEnv: z.ZodDefault<z.ZodEnum<["development", "production", "test"]>>;
|
|
5
|
+
mcpStatefulSessionTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
mcpAuthSecretKey: z.ZodOptional<z.ZodString>;
|
|
7
|
+
mcpAllowedOrigins: z.ZodOptional<z.ZodString>;
|
|
8
|
+
logLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "notice", "warning", "error"]>>;
|
|
9
|
+
mcpLogLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "notice", "warning", "error"]>>;
|
|
10
|
+
otelEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
11
|
+
otelExporterOtlpTracesEndpoint: z.ZodOptional<z.ZodString>;
|
|
12
|
+
otelExporterOtlpMetricsEndpoint: z.ZodOptional<z.ZodString>;
|
|
13
|
+
gcsBucketName: z.ZodOptional<z.ZodString>;
|
|
14
|
+
} & {
|
|
15
|
+
serviceName: z.ZodDefault<z.ZodString>;
|
|
16
|
+
port: z.ZodDefault<z.ZodNumber>;
|
|
17
|
+
otelServiceName: z.ZodDefault<z.ZodString>;
|
|
18
|
+
mcpAuthMode: z.ZodDefault<z.ZodEnum<["amazon-dsp-bearer", "jwt", "none"]>>;
|
|
19
|
+
amazonDspApiBaseUrl: z.ZodDefault<z.ZodString>;
|
|
20
|
+
amazonDspApiVersion: z.ZodDefault<z.ZodString>;
|
|
21
|
+
amazonDspRateLimitPerMinute: z.ZodDefault<z.ZodNumber>;
|
|
22
|
+
amazonDspAccessToken: z.ZodOptional<z.ZodString>;
|
|
23
|
+
amazonDspProfileId: z.ZodOptional<z.ZodString>;
|
|
24
|
+
amazonDspClientId: z.ZodOptional<z.ZodString>;
|
|
25
|
+
amazonDspAppId: z.ZodOptional<z.ZodString>;
|
|
26
|
+
amazonDspAppSecret: z.ZodOptional<z.ZodString>;
|
|
27
|
+
amazonDspRefreshToken: z.ZodOptional<z.ZodString>;
|
|
28
|
+
amazonDspReportPollIntervalMs: z.ZodDefault<z.ZodNumber>;
|
|
29
|
+
amazonDspReportMaxPollAttempts: z.ZodDefault<z.ZodNumber>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
serviceName: string;
|
|
32
|
+
port: number;
|
|
33
|
+
otelServiceName: string;
|
|
34
|
+
mcpAuthMode: "amazon-dsp-bearer" | "jwt" | "none";
|
|
35
|
+
amazonDspApiBaseUrl: string;
|
|
36
|
+
amazonDspApiVersion: string;
|
|
37
|
+
amazonDspRateLimitPerMinute: number;
|
|
38
|
+
amazonDspReportPollIntervalMs: number;
|
|
39
|
+
amazonDspReportMaxPollAttempts: number;
|
|
40
|
+
host: string;
|
|
41
|
+
nodeEnv: "development" | "production" | "test";
|
|
42
|
+
mcpStatefulSessionTimeoutMs: number;
|
|
43
|
+
logLevel: "debug" | "info" | "notice" | "warning" | "error";
|
|
44
|
+
mcpLogLevel: "debug" | "info" | "notice" | "warning" | "error";
|
|
45
|
+
otelEnabled: boolean;
|
|
46
|
+
amazonDspAccessToken?: string | undefined;
|
|
47
|
+
amazonDspProfileId?: string | undefined;
|
|
48
|
+
amazonDspClientId?: string | undefined;
|
|
49
|
+
amazonDspAppId?: string | undefined;
|
|
50
|
+
amazonDspAppSecret?: string | undefined;
|
|
51
|
+
amazonDspRefreshToken?: string | undefined;
|
|
52
|
+
mcpAuthSecretKey?: string | undefined;
|
|
53
|
+
mcpAllowedOrigins?: string | undefined;
|
|
54
|
+
otelExporterOtlpTracesEndpoint?: string | undefined;
|
|
55
|
+
otelExporterOtlpMetricsEndpoint?: string | undefined;
|
|
56
|
+
gcsBucketName?: string | undefined;
|
|
57
|
+
}, {
|
|
58
|
+
serviceName?: string | undefined;
|
|
59
|
+
port?: number | undefined;
|
|
60
|
+
otelServiceName?: string | undefined;
|
|
61
|
+
mcpAuthMode?: "amazon-dsp-bearer" | "jwt" | "none" | undefined;
|
|
62
|
+
amazonDspApiBaseUrl?: string | undefined;
|
|
63
|
+
amazonDspApiVersion?: string | undefined;
|
|
64
|
+
amazonDspRateLimitPerMinute?: number | undefined;
|
|
65
|
+
amazonDspAccessToken?: string | undefined;
|
|
66
|
+
amazonDspProfileId?: string | undefined;
|
|
67
|
+
amazonDspClientId?: string | undefined;
|
|
68
|
+
amazonDspAppId?: string | undefined;
|
|
69
|
+
amazonDspAppSecret?: string | undefined;
|
|
70
|
+
amazonDspRefreshToken?: string | undefined;
|
|
71
|
+
amazonDspReportPollIntervalMs?: number | undefined;
|
|
72
|
+
amazonDspReportMaxPollAttempts?: number | undefined;
|
|
73
|
+
host?: string | undefined;
|
|
74
|
+
nodeEnv?: "development" | "production" | "test" | undefined;
|
|
75
|
+
mcpStatefulSessionTimeoutMs?: number | undefined;
|
|
76
|
+
mcpAuthSecretKey?: string | undefined;
|
|
77
|
+
mcpAllowedOrigins?: string | undefined;
|
|
78
|
+
logLevel?: "debug" | "info" | "notice" | "warning" | "error" | undefined;
|
|
79
|
+
mcpLogLevel?: "debug" | "info" | "notice" | "warning" | "error" | undefined;
|
|
80
|
+
otelEnabled?: boolean | undefined;
|
|
81
|
+
otelExporterOtlpTracesEndpoint?: string | undefined;
|
|
82
|
+
otelExporterOtlpMetricsEndpoint?: string | undefined;
|
|
83
|
+
gcsBucketName?: string | undefined;
|
|
84
|
+
}>;
|
|
85
|
+
export type AppConfig = z.infer<typeof ConfigSchema>;
|
|
86
|
+
export declare function parseConfig(): AppConfig;
|
|
87
|
+
export declare const mcpConfig: {
|
|
88
|
+
serviceName: string;
|
|
89
|
+
port: number;
|
|
90
|
+
otelServiceName: string;
|
|
91
|
+
mcpAuthMode: "amazon-dsp-bearer" | "jwt" | "none";
|
|
92
|
+
amazonDspApiBaseUrl: string;
|
|
93
|
+
amazonDspApiVersion: string;
|
|
94
|
+
amazonDspRateLimitPerMinute: number;
|
|
95
|
+
amazonDspReportPollIntervalMs: number;
|
|
96
|
+
amazonDspReportMaxPollAttempts: number;
|
|
97
|
+
host: string;
|
|
98
|
+
nodeEnv: "development" | "production" | "test";
|
|
99
|
+
mcpStatefulSessionTimeoutMs: number;
|
|
100
|
+
logLevel: "debug" | "info" | "notice" | "warning" | "error";
|
|
101
|
+
mcpLogLevel: "debug" | "info" | "notice" | "warning" | "error";
|
|
102
|
+
otelEnabled: boolean;
|
|
103
|
+
amazonDspAccessToken?: string | undefined;
|
|
104
|
+
amazonDspProfileId?: string | undefined;
|
|
105
|
+
amazonDspClientId?: string | undefined;
|
|
106
|
+
amazonDspAppId?: string | undefined;
|
|
107
|
+
amazonDspAppSecret?: string | undefined;
|
|
108
|
+
amazonDspRefreshToken?: string | undefined;
|
|
109
|
+
mcpAuthSecretKey?: string | undefined;
|
|
110
|
+
mcpAllowedOrigins?: string | undefined;
|
|
111
|
+
otelExporterOtlpTracesEndpoint?: string | undefined;
|
|
112
|
+
otelExporterOtlpMetricsEndpoint?: string | undefined;
|
|
113
|
+
gcsBucketName?: string | undefined;
|
|
114
|
+
};
|
|
115
|
+
export {};
|
|
116
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BhB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAErD,wBAAgB,WAAW,IAAI,SAAS,CAsCvC;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAgB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { loadDotEnv, BaseConfigSchema, getBaseEnvConfig, parseConfigWithSchema, getDefaultHost, } from "@cesteral/shared";
|
|
3
|
+
loadDotEnv();
|
|
4
|
+
const ConfigSchema = BaseConfigSchema.extend({
|
|
5
|
+
serviceName: z.string().default("amazon-dsp-mcp"),
|
|
6
|
+
port: z.number().int().min(1).max(65535).default(3012),
|
|
7
|
+
otelServiceName: z.string().default("amazon-dsp-mcp"),
|
|
8
|
+
mcpAuthMode: z.enum(["amazon-dsp-bearer", "jwt", "none"]).default("amazon-dsp-bearer"),
|
|
9
|
+
amazonDspApiBaseUrl: z.string().url().default("https://advertising-api.amazon.com"),
|
|
10
|
+
amazonDspApiVersion: z.string().default("dsp"),
|
|
11
|
+
amazonDspRateLimitPerMinute: z.number().default(10),
|
|
12
|
+
amazonDspAccessToken: z.string().optional(),
|
|
13
|
+
amazonDspProfileId: z.string().optional(),
|
|
14
|
+
amazonDspClientId: z.string().optional(),
|
|
15
|
+
amazonDspAppId: z.string().optional(),
|
|
16
|
+
amazonDspAppSecret: z.string().optional(),
|
|
17
|
+
amazonDspRefreshToken: z.string().optional(),
|
|
18
|
+
amazonDspReportPollIntervalMs: z.number().default(2_000),
|
|
19
|
+
amazonDspReportMaxPollAttempts: z.number().default(30),
|
|
20
|
+
});
|
|
21
|
+
export function parseConfig() {
|
|
22
|
+
const defaultHost = getDefaultHost();
|
|
23
|
+
const rawConfig = {
|
|
24
|
+
...getBaseEnvConfig(defaultHost),
|
|
25
|
+
serviceName: process.env.SERVICE_NAME,
|
|
26
|
+
...(process.env.AMAZON_DSP_MCP_PORT ? { port: Number(process.env.AMAZON_DSP_MCP_PORT) } : {}),
|
|
27
|
+
host: process.env.AMAZON_DSP_MCP_HOST || defaultHost,
|
|
28
|
+
amazonDspApiBaseUrl: process.env.AMAZON_DSP_API_BASE_URL,
|
|
29
|
+
amazonDspApiVersion: process.env.AMAZON_DSP_API_VERSION,
|
|
30
|
+
amazonDspRateLimitPerMinute: process.env.AMAZON_DSP_RATE_LIMIT_PER_MINUTE
|
|
31
|
+
? Number(process.env.AMAZON_DSP_RATE_LIMIT_PER_MINUTE)
|
|
32
|
+
: undefined,
|
|
33
|
+
amazonDspAccessToken: process.env.AMAZON_DSP_ACCESS_TOKEN,
|
|
34
|
+
amazonDspProfileId: process.env.AMAZON_DSP_PROFILE_ID,
|
|
35
|
+
amazonDspClientId: process.env.AMAZON_DSP_CLIENT_ID,
|
|
36
|
+
amazonDspAppId: process.env.AMAZON_DSP_APP_ID,
|
|
37
|
+
amazonDspAppSecret: process.env.AMAZON_DSP_APP_SECRET,
|
|
38
|
+
amazonDspRefreshToken: process.env.AMAZON_DSP_REFRESH_TOKEN,
|
|
39
|
+
amazonDspReportPollIntervalMs: process.env.AMAZON_DSP_REPORT_POLL_INTERVAL_MS
|
|
40
|
+
? Number(process.env.AMAZON_DSP_REPORT_POLL_INTERVAL_MS)
|
|
41
|
+
: undefined,
|
|
42
|
+
amazonDspReportMaxPollAttempts: process.env.AMAZON_DSP_REPORT_MAX_POLL_ATTEMPTS
|
|
43
|
+
? Number(process.env.AMAZON_DSP_REPORT_MAX_POLL_ATTEMPTS)
|
|
44
|
+
: undefined,
|
|
45
|
+
};
|
|
46
|
+
return parseConfigWithSchema(ConfigSchema, rawConfig);
|
|
47
|
+
}
|
|
48
|
+
export const mcpConfig = parseConfig();
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { mcpConfig } from "./config/index.js";
|
|
3
|
+
import { createMcpServer, runStdioServer } from "./mcp-server/server.js";
|
|
4
|
+
import { startHttpServer } from "./mcp-server/transports/streamable-http-transport.js";
|
|
5
|
+
import { initializeOpenTelemetry, otelLogMixin } from "@cesteral/shared";
|
|
6
|
+
import { AmazonDspAccessTokenAdapter, AmazonDspRefreshTokenAdapter, } from "./auth/amazon-dsp-auth-adapter.js";
|
|
7
|
+
import { detectTransportMode, createServerLogger, bootstrapMcpServer } from "@cesteral/shared";
|
|
8
|
+
import { createSessionServices, sessionServiceStore } from "./services/session-services.js";
|
|
9
|
+
import { rateLimiter } from "./utils/platform.js";
|
|
10
|
+
const transportMode = detectTransportMode();
|
|
11
|
+
const logger = createServerLogger("amazon-dsp-mcp", transportMode, otelLogMixin());
|
|
12
|
+
async function setupStdioCredentials(sessionId) {
|
|
13
|
+
const profileId = mcpConfig.amazonDspProfileId;
|
|
14
|
+
if (!profileId) {
|
|
15
|
+
logger.warn("No AmazonDsp credentials found in env vars. " +
|
|
16
|
+
"Set AMAZON_DSP_PROFILE_ID plus either (AMAZON_DSP_APP_ID + AMAZON_DSP_APP_SECRET + " +
|
|
17
|
+
"AMAZON_DSP_REFRESH_TOKEN) for the refresh-token flow, or AMAZON_DSP_ACCESS_TOKEN " +
|
|
18
|
+
"for a short-lived static token.");
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
let authAdapter;
|
|
22
|
+
if (mcpConfig.amazonDspAppId && mcpConfig.amazonDspAppSecret && mcpConfig.amazonDspRefreshToken) {
|
|
23
|
+
authAdapter = new AmazonDspRefreshTokenAdapter({
|
|
24
|
+
appId: mcpConfig.amazonDspAppId,
|
|
25
|
+
appSecret: mcpConfig.amazonDspAppSecret,
|
|
26
|
+
refreshToken: mcpConfig.amazonDspRefreshToken,
|
|
27
|
+
}, profileId, mcpConfig.amazonDspApiBaseUrl);
|
|
28
|
+
logger.info("Using LwA refresh-token flow (auto-refreshing access tokens)");
|
|
29
|
+
}
|
|
30
|
+
else if (mcpConfig.amazonDspAccessToken) {
|
|
31
|
+
authAdapter = new AmazonDspAccessTokenAdapter(mcpConfig.amazonDspAccessToken, profileId, mcpConfig.amazonDspApiBaseUrl, mcpConfig.amazonDspClientId);
|
|
32
|
+
logger.warn("Using static access-token flow — token expires after 60 minutes. " +
|
|
33
|
+
"For long-running sessions, configure AMAZON_DSP_APP_ID + AMAZON_DSP_APP_SECRET + AMAZON_DSP_REFRESH_TOKEN instead.");
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
logger.warn("No AmazonDsp credentials found. Set AMAZON_DSP_APP_ID + AMAZON_DSP_APP_SECRET + " +
|
|
37
|
+
"AMAZON_DSP_REFRESH_TOKEN (recommended) or AMAZON_DSP_ACCESS_TOKEN.");
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
await authAdapter.validate();
|
|
41
|
+
const services = createSessionServices(authAdapter, {
|
|
42
|
+
baseUrl: mcpConfig.amazonDspApiBaseUrl,
|
|
43
|
+
reportPollIntervalMs: mcpConfig.amazonDspReportPollIntervalMs,
|
|
44
|
+
reportMaxPollAttempts: mcpConfig.amazonDspReportMaxPollAttempts,
|
|
45
|
+
}, logger, rateLimiter);
|
|
46
|
+
sessionServiceStore.set(sessionId, services);
|
|
47
|
+
logger.info("Stdio session services created successfully");
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
bootstrapMcpServer({
|
|
51
|
+
serviceName: "amazon-dsp-mcp",
|
|
52
|
+
config: mcpConfig,
|
|
53
|
+
logger,
|
|
54
|
+
transportMode,
|
|
55
|
+
initOtel: initializeOpenTelemetry,
|
|
56
|
+
setupStdioSession: setupStdioCredentials,
|
|
57
|
+
createMcpServer,
|
|
58
|
+
runStdio: runStdioServer,
|
|
59
|
+
startHttp: startHttpServer,
|
|
60
|
+
onShutdown: () => rateLimiter.destroy(),
|
|
61
|
+
}).catch((err) => {
|
|
62
|
+
logger.fatal({ err }, "Failed to start amazon-dsp-mcp");
|
|
63
|
+
process.exit(1);
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,sDAAsD,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,GAE7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;AAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;AAcnF,KAAK,UAAU,qBAAqB,CAAC,SAAiB;IACpD,MAAM,SAAS,GAAG,SAAS,CAAC,kBAAkB,CAAC;IAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CACT,8CAA8C;YAC5C,qFAAqF;YACrF,mFAAmF;YACnF,iCAAiC,CACpC,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,WAAiC,CAAC;IAEtC,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,kBAAkB,IAAI,SAAS,CAAC,qBAAqB,EAAE,CAAC;QAChG,WAAW,GAAG,IAAI,4BAA4B,CAC5C;YACE,KAAK,EAAE,SAAS,CAAC,cAAc;YAC/B,SAAS,EAAE,SAAS,CAAC,kBAAkB;YACvC,YAAY,EAAE,SAAS,CAAC,qBAAqB;SAC9C,EACD,SAAS,EACT,SAAS,CAAC,mBAAmB,CAC9B,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;SAAM,IAAI,SAAS,CAAC,oBAAoB,EAAE,CAAC;QAC1C,WAAW,GAAG,IAAI,2BAA2B,CAC3C,SAAS,CAAC,oBAAoB,EAC9B,SAAS,EACT,SAAS,CAAC,mBAAmB,EAC7B,SAAS,CAAC,iBAAiB,CAC5B,CAAC;QACF,MAAM,CAAC,IAAI,CACT,mEAAmE;YACjE,oHAAoH,CACvH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CACT,kFAAkF;YAChF,oEAAoE,CACvE,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;IAE7B,MAAM,QAAQ,GAAG,qBAAqB,CACpC,WAAW,EACX;QACE,OAAO,EAAE,SAAS,CAAC,mBAAmB;QACtC,oBAAoB,EAAE,SAAS,CAAC,6BAA6B;QAC7D,qBAAqB,EAAE,SAAS,CAAC,8BAA8B;KAChE,EACD,MAAM,EACN,WAAW,CACZ,CAAC;IAEF,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kBAAkB,CAAC;IACjB,WAAW,EAAE,gBAAgB;IAC7B,MAAM,EAAE,SAAS;IACjB,MAAM;IACN,aAAa;IACb,QAAQ,EAAE,uBAAuB;IACjC,iBAAiB,EAAE,qBAAqB;IACxC,eAAe;IACf,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE;CACxC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACf,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,gCAAgC,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
export declare const bulkOperationsWorkflowPrompt: Prompt;
|
|
3
|
+
export declare function getBulkOperationsWorkflowMessage(args?: Record<string, string>): string;
|
|
4
|
+
//# sourceMappingURL=bulk-operations-workflow.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk-operations-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE,eAAO,MAAM,4BAA4B,EAAE,MAgB1C,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA8GtF"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
export const bulkOperationsWorkflowPrompt = {
|
|
2
|
+
name: "amazon_dsp_bulk_operations_workflow",
|
|
3
|
+
description: "Guide for performing bulk create, update, and status operations on AmazonDsp Ads entities",
|
|
4
|
+
arguments: [
|
|
5
|
+
{
|
|
6
|
+
name: "profileId",
|
|
7
|
+
description: "AmazonDsp Advertiser ID",
|
|
8
|
+
required: true,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: "entityType",
|
|
12
|
+
description: "Entity type to operate on (campaign, adGroup, ad)",
|
|
13
|
+
required: false,
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
export function getBulkOperationsWorkflowMessage(args) {
|
|
18
|
+
const profileId = args?.profileId || "{profileId}";
|
|
19
|
+
const entityType = args?.entityType || "campaign";
|
|
20
|
+
return `# AmazonDsp Bulk Operations Workflow
|
|
21
|
+
|
|
22
|
+
## Advertiser ID: \`${profileId}\`
|
|
23
|
+
## Entity Type: \`${entityType}\`
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Option 1: Bulk Status Update (most common)
|
|
28
|
+
|
|
29
|
+
Pause, enable, or delete multiple entities in one call:
|
|
30
|
+
|
|
31
|
+
\`\`\`json
|
|
32
|
+
amazon_dsp_bulk_update_status({
|
|
33
|
+
"entityType": "${entityType}",
|
|
34
|
+
"profileId": "${profileId}",
|
|
35
|
+
"entityIds": ["ID_1", "ID_2", "ID_3"],
|
|
36
|
+
"operationStatus": "PAUSED"
|
|
37
|
+
})
|
|
38
|
+
\`\`\`
|
|
39
|
+
|
|
40
|
+
**Operation status values:**
|
|
41
|
+
- \`ENABLED\` — Activate entities
|
|
42
|
+
- \`PAUSED\` — Pause entities
|
|
43
|
+
- \`ARCHIVED\` — Soft delete (Amazon DSP has no hard delete)
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Option 2: Bulk Create Entities (up to 50)
|
|
48
|
+
|
|
49
|
+
Create multiple entities of the same type in one call:
|
|
50
|
+
|
|
51
|
+
\`\`\`json
|
|
52
|
+
amazon_dsp_bulk_create_entities({
|
|
53
|
+
"entityType": "${entityType}",
|
|
54
|
+
"profileId": "${profileId}",
|
|
55
|
+
"items": [
|
|
56
|
+
{
|
|
57
|
+
"campaign_name": "Campaign A",
|
|
58
|
+
"objective_type": "TRAFFIC",
|
|
59
|
+
"budget_mode": "BUDGET_MODE_DAY",
|
|
60
|
+
"budget": 100
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"campaign_name": "Campaign B",
|
|
64
|
+
"objective_type": "CONVERSIONS",
|
|
65
|
+
"budget_mode": "BUDGET_MODE_DAY",
|
|
66
|
+
"budget": 200
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
})
|
|
70
|
+
\`\`\`
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Option 3: Bulk Update Entities (up to 50)
|
|
75
|
+
|
|
76
|
+
Update specific fields on multiple entities:
|
|
77
|
+
|
|
78
|
+
\`\`\`json
|
|
79
|
+
amazon_dsp_bulk_update_entities({
|
|
80
|
+
"entityType": "${entityType}",
|
|
81
|
+
"profileId": "${profileId}",
|
|
82
|
+
"items": [
|
|
83
|
+
{ "entityId": "ID_1", "data": { "budget": 150 } },
|
|
84
|
+
{ "entityId": "ID_2", "data": { "budget": 250 } }
|
|
85
|
+
]
|
|
86
|
+
})
|
|
87
|
+
\`\`\`
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Option 4: Bulk Bid Adjustment (ad groups only)
|
|
92
|
+
|
|
93
|
+
Safe read-modify-write bid adjustment:
|
|
94
|
+
|
|
95
|
+
\`\`\`json
|
|
96
|
+
amazon_dsp_adjust_bids({
|
|
97
|
+
"profileId": "${profileId}",
|
|
98
|
+
"adjustments": [
|
|
99
|
+
{ "adGroupId": "ADGROUP_ID_1", "bidPrice": 1.5 },
|
|
100
|
+
{ "adGroupId": "ADGROUP_ID_2", "bidPrice": 2.0 }
|
|
101
|
+
],
|
|
102
|
+
"reason": "Increase bids to improve delivery"
|
|
103
|
+
})
|
|
104
|
+
\`\`\`
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Tips for Bulk Operations
|
|
109
|
+
|
|
110
|
+
1. **List first**: Use \`amazon_dsp_list_entities\` to get entity IDs before bulk operations
|
|
111
|
+
2. **Validate first**: Use \`amazon_dsp_validate_entity\` to check payloads before bulk create
|
|
112
|
+
3. **Status update is batched**: AmazonDsp accepts IDs array in one API call
|
|
113
|
+
4. **Create/Update is sequential**: Processed concurrently (5 at a time) by the MCP tool
|
|
114
|
+
5. **Max 50 items**: Per bulk create/update call (more = multiple calls)
|
|
115
|
+
6. **Error handling**: Partial failures are reported — some may succeed while others fail
|
|
116
|
+
|
|
117
|
+
## Workflow: Pause all campaigns → Adjust → Re-enable
|
|
118
|
+
|
|
119
|
+
\`\`\`
|
|
120
|
+
1. amazon_dsp_list_entities (get campaign IDs)
|
|
121
|
+
2. amazon_dsp_bulk_update_status (DISABLE all)
|
|
122
|
+
3. amazon_dsp_bulk_update_entities (adjust budgets/settings)
|
|
123
|
+
4. amazon_dsp_bulk_update_status (ENABLE selected)
|
|
124
|
+
\`\`\`
|
|
125
|
+
`;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=bulk-operations-workflow.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk-operations-workflow.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,4BAA4B,GAAW;IAClD,IAAI,EAAE,qCAAqC;IAC3C,WAAW,EACT,2FAA2F;IAC7F,SAAS,EAAE;QACT;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,mDAAmD;YAChE,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,IAA6B;IAC5E,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,aAAa,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,UAAU,CAAC;IAElD,OAAO;;sBAEa,SAAS;oBACX,UAAU;;;;;;;;;;mBAUX,UAAU;kBACX,SAAS;;;;;;;;;;;;;;;;;;;mBAmBR,UAAU;kBACX,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;mBA0BR,UAAU;kBACX,SAAS;;;;;;;;;;;;;;;;kBAgBT,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B1B,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
export declare const campaignSetupWorkflowPrompt: Prompt;
|
|
3
|
+
export declare function getCampaignSetupWorkflowMessage(args?: Record<string, string>): string;
|
|
4
|
+
//# sourceMappingURL=campaign-setup-workflow.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaign-setup-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE,eAAO,MAAM,2BAA2B,EAAE,MAiBzC,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAuGrF"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
export const campaignSetupWorkflowPrompt = {
|
|
2
|
+
name: "amazon_dsp_campaign_setup_workflow",
|
|
3
|
+
description: "Step-by-step guide for creating a complete Amazon DSP campaign structure (Order > Line Item > Creative)",
|
|
4
|
+
arguments: [
|
|
5
|
+
{
|
|
6
|
+
name: "profileId",
|
|
7
|
+
description: "Amazon DSP Entity ID / Profile ID (from Amazon-Advertising-API-Scope header)",
|
|
8
|
+
required: true,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: "objective",
|
|
12
|
+
description: "Campaign goal (e.g., REACH, REMARKETING, BEHAVIORAL_RETARGETING, CONTEXTUAL_TARGETING)",
|
|
13
|
+
required: false,
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
export function getCampaignSetupWorkflowMessage(args) {
|
|
18
|
+
const profileId = args?.profileId || "{profileId}";
|
|
19
|
+
const objective = args?.objective || "REACH";
|
|
20
|
+
return `# Amazon DSP Campaign Setup Workflow
|
|
21
|
+
|
|
22
|
+
## Prerequisites
|
|
23
|
+
- DSP Entity ID (Profile ID): \`${profileId}\`
|
|
24
|
+
- Ensure \`Amazon-Advertising-API-Scope\` header is set to your DSP entity ID
|
|
25
|
+
- Verify advertiser access: \`amazon_dsp_list_advertisers\`
|
|
26
|
+
|
|
27
|
+
⚠️ **GOTCHA: Amazon-Advertising-API-Scope header must contain your DSP entity ID (profile ID).**
|
|
28
|
+
⚠️ **GOTCHA: Budget amounts are numeric values, not micro-currency. Keep them aligned with the advertiser account currency returned by Amazon.**
|
|
29
|
+
⚠️ **GOTCHA: Amazon DSP has no DELETE endpoint. Use state: "ARCHIVED" to remove entities.**
|
|
30
|
+
|
|
31
|
+
## Step 1: Create Order (Campaign)
|
|
32
|
+
|
|
33
|
+
Orders are the top-level campaign entity in Amazon DSP.
|
|
34
|
+
|
|
35
|
+
\`\`\`json
|
|
36
|
+
amazon_dsp_create_entity({
|
|
37
|
+
"entityType": "order",
|
|
38
|
+
"profileId": "${profileId}",
|
|
39
|
+
"data": {
|
|
40
|
+
"name": "Q1 Brand Awareness Campaign",
|
|
41
|
+
"advertiserId": "ADVERTISER_ID",
|
|
42
|
+
"budget": 50000.00,
|
|
43
|
+
"startDateTime": "2026-01-01T00:00:00Z",
|
|
44
|
+
"endDateTime": "2026-03-31T23:59:59Z",
|
|
45
|
+
"state": "ENABLED"
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
\`\`\`
|
|
49
|
+
|
|
50
|
+
**Campaign Goals / Objectives:** REACH, REMARKETING, BEHAVIORAL_RETARGETING, CONTEXTUAL_TARGETING
|
|
51
|
+
|
|
52
|
+
## Step 2: Create Line Item (Ad Group)
|
|
53
|
+
|
|
54
|
+
Line Items define targeting, bidding, and budget allocation within an Order.
|
|
55
|
+
|
|
56
|
+
\`\`\`json
|
|
57
|
+
amazon_dsp_create_entity({
|
|
58
|
+
"entityType": "lineItem",
|
|
59
|
+
"profileId": "${profileId}",
|
|
60
|
+
"data": {
|
|
61
|
+
"name": "Prospecting - Desktop Display",
|
|
62
|
+
"orderId": "ORDER_ID_FROM_STEP_1",
|
|
63
|
+
"budget": { "budgetType": "DAILY", "budget": 10000.00 },
|
|
64
|
+
"state": "ENABLED",
|
|
65
|
+
"bidding": {
|
|
66
|
+
"bidOptimization": "${objective === "REACH" ? "AUTO" : "MANUAL"}",
|
|
67
|
+
"bidAmount": 2.50
|
|
68
|
+
},
|
|
69
|
+
"targetingCriteria": {
|
|
70
|
+
"audience": {
|
|
71
|
+
"include": [{ "type": "BEHAVIORAL", "value": ["in-market-auto"] }]
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
\`\`\`
|
|
77
|
+
|
|
78
|
+
## Step 3: Create Creative
|
|
79
|
+
|
|
80
|
+
Creatives define the ad format and click-through destination.
|
|
81
|
+
|
|
82
|
+
\`\`\`json
|
|
83
|
+
amazon_dsp_create_entity({
|
|
84
|
+
"entityType": "creative",
|
|
85
|
+
"profileId": "${profileId}",
|
|
86
|
+
"data": {
|
|
87
|
+
"name": "300x250 Banner - Brand",
|
|
88
|
+
"advertiserId": "ADVERTISER_ID",
|
|
89
|
+
"clickThroughUrl": "https://example.com/landing",
|
|
90
|
+
"creativeType": "STANDARD_DISPLAY",
|
|
91
|
+
"state": "ENABLED"
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
\`\`\`
|
|
95
|
+
|
|
96
|
+
**Creative Types:** STANDARD_DISPLAY, VIDEO, RICH_MEDIA
|
|
97
|
+
|
|
98
|
+
## Step 4: Verify & Activate
|
|
99
|
+
|
|
100
|
+
1. Review entities: \`amazon_dsp_get_entity\` for each created entity
|
|
101
|
+
2. Activate if paused: \`amazon_dsp_bulk_update_status\` with operationStatus: "ENABLED"
|
|
102
|
+
|
|
103
|
+
## Common Errors
|
|
104
|
+
|
|
105
|
+
| Error | Cause | Fix |
|
|
106
|
+
|-------|-------|-----|
|
|
107
|
+
| 401 Unauthorized | Missing or invalid access token | Check Authorization: Bearer header |
|
|
108
|
+
| 403 Forbidden | Missing API scope header | Set Amazon-Advertising-API-Scope to your DSP entity ID |
|
|
109
|
+
| 400 Bad Request | Invalid date format | Use ISO 8601: YYYY-MM-DDTHH:mm:ssZ |
|
|
110
|
+
| 400 Bad Request | Budget too low | Amazon DSP requires minimum budget thresholds |
|
|
111
|
+
|
|
112
|
+
## Success Criteria
|
|
113
|
+
|
|
114
|
+
- [ ] Order created with correct budget and date range
|
|
115
|
+
- [ ] Line Item linked to Order via orderId
|
|
116
|
+
- [ ] Creative linked to correct advertiserId
|
|
117
|
+
- [ ] All entities in ENABLED state
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=campaign-setup-workflow.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaign-setup-workflow.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,2BAA2B,GAAW;IACjD,IAAI,EAAE,oCAAoC;IAC1C,WAAW,EACT,yGAAyG;IAC3G,SAAS,EAAE;QACT;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,8EAA8E;YAC3F,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EACT,wFAAwF;YAC1F,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,+BAA+B,CAAC,IAA6B;IAC3E,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,aAAa,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,OAAO,CAAC;IAE7C,OAAO;;;kCAGyB,SAAS;;;;;;;;;;;;;;;kBAezB,SAAS;;;;;;;;;;;;;;;;;;;;;kBAqBT,SAAS;;;;;;;4BAOC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;kBAmBnD,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiC1B,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
export declare const amazonDspCreativeUploadWorkflowPrompt: Prompt;
|
|
3
|
+
export declare function getAmazonDspCreativeUploadWorkflowMessage(args?: Record<string, string>): string;
|
|
4
|
+
//# sourceMappingURL=creative-upload-workflow.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creative-upload-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/creative-upload-workflow.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE,eAAO,MAAM,qCAAqC,EAAE,MAgBnD,CAAC;AAEF,wBAAgB,yCAAyC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAqG/F"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
export const amazonDspCreativeUploadWorkflowPrompt = {
|
|
2
|
+
name: "amazon_dsp_creative_upload_workflow",
|
|
3
|
+
description: "Step-by-step guide for uploading creative assets and creating AmazonDsp Ads creatives",
|
|
4
|
+
arguments: [
|
|
5
|
+
{
|
|
6
|
+
name: "profileId",
|
|
7
|
+
description: "AmazonDsp Advertiser ID",
|
|
8
|
+
required: true,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: "creativeType",
|
|
12
|
+
description: "Type of creative: image or video",
|
|
13
|
+
required: false,
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
export function getAmazonDspCreativeUploadWorkflowMessage(args) {
|
|
18
|
+
const profileId = args?.profileId || "{profileId}";
|
|
19
|
+
const creativeType = args?.creativeType || "video";
|
|
20
|
+
return `# AmazonDsp Ads Creative Upload Workflow
|
|
21
|
+
|
|
22
|
+
## Prerequisites
|
|
23
|
+
- Advertiser ID: \`${profileId}\`
|
|
24
|
+
- A publicly accessible URL for your media file
|
|
25
|
+
|
|
26
|
+
## Overview
|
|
27
|
+
AmazonDsp creative workflow: Upload media → Create Ad Group → Create Ad with creative
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Step 1: Upload ${creativeType === "image" ? "Image" : "Video"}
|
|
32
|
+
|
|
33
|
+
${creativeType === "image"
|
|
34
|
+
? `
|
|
35
|
+
\`\`\`json
|
|
36
|
+
amazon_dsp_upload_image({
|
|
37
|
+
"profileId": "${profileId}",
|
|
38
|
+
"mediaUrl": "https://example.com/your-image.jpg"
|
|
39
|
+
})
|
|
40
|
+
\`\`\`
|
|
41
|
+
|
|
42
|
+
**Returns:** \`imageId\`
|
|
43
|
+
|
|
44
|
+
**Image requirements:**
|
|
45
|
+
- Formats: JPEG, PNG
|
|
46
|
+
- Max 100KB for feed ads
|
|
47
|
+
- Recommended: 1200x628px, 1080x1080px, 720x1280px
|
|
48
|
+
`
|
|
49
|
+
: `
|
|
50
|
+
\`\`\`json
|
|
51
|
+
amazon_dsp_upload_video({
|
|
52
|
+
"profileId": "${profileId}",
|
|
53
|
+
"mediaUrl": "https://example.com/your-video.mp4",
|
|
54
|
+
"videoName": "Campaign Video"
|
|
55
|
+
})
|
|
56
|
+
\`\`\`
|
|
57
|
+
|
|
58
|
+
**Returns:** \`videoId\`
|
|
59
|
+
|
|
60
|
+
⚠️ **GOTCHA**: Video processing takes 20-120 seconds. The tool polls automatically (20s intervals, up to 10 min).
|
|
61
|
+
When \`video_status == "bind_success"\`, the video is ready.
|
|
62
|
+
|
|
63
|
+
**Video requirements:**
|
|
64
|
+
- Formats: MP4, MOV, AVI
|
|
65
|
+
- Max 500MB
|
|
66
|
+
- Min resolution: 540x960 (9:16), 960x540 (16:9), or 640x640 (1:1)
|
|
67
|
+
- Duration: 5-60 seconds for In-Feed ads
|
|
68
|
+
`}
|
|
69
|
+
|
|
70
|
+
## Step 2: Create Creative
|
|
71
|
+
|
|
72
|
+
\`\`\`json
|
|
73
|
+
amazon_dsp_create_entity({
|
|
74
|
+
"entityType": "creative",
|
|
75
|
+
"advertiserId": "${profileId}",
|
|
76
|
+
"data": {
|
|
77
|
+
"name": "Your Creative Name",
|
|
78
|
+
"advertiserId": "${profileId}",
|
|
79
|
+
"creativeType": "${creativeType === "image" ? "IMAGE" : "VIDEO"}",
|
|
80
|
+
${creativeType === "image" ? `"imageId": "{imageId_from_step_1}",` : `"videoId": "{videoId_from_step_1}",`}
|
|
81
|
+
"clickUrl": "https://yoursite.com",
|
|
82
|
+
"state": "paused"
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
\`\`\`
|
|
86
|
+
|
|
87
|
+
⚠️ **GOTCHA**: Amazon DSP creatives go through a review process. Initial state should be \`paused\` until ready to launch.
|
|
88
|
+
|
|
89
|
+
## Step 3: Preview Creative
|
|
90
|
+
|
|
91
|
+
\`\`\`json
|
|
92
|
+
amazon_dsp_get_ad_preview({
|
|
93
|
+
"advertiserId": "${profileId}",
|
|
94
|
+
"adId": "{creative_id_from_step_2}",
|
|
95
|
+
"adFormat": "DISPLAY"
|
|
96
|
+
})
|
|
97
|
+
\`\`\`
|
|
98
|
+
|
|
99
|
+
## Common Errors
|
|
100
|
+
|
|
101
|
+
| Error | Cause | Fix |
|
|
102
|
+
|-------|-------|-----|
|
|
103
|
+
| "Video processing failed" | Unsupported codec | Re-encode to H.264 MP4 |
|
|
104
|
+
| "Image size exceeded" | File too large | Compress to < 100KB |
|
|
105
|
+
| "Ad review rejected" | Policy violation | Review AmazonDsp ad policies |
|
|
106
|
+
| "bind_success timeout" | Slow processing | Check video_status manually |
|
|
107
|
+
|
|
108
|
+
## Success Criteria
|
|
109
|
+
- [ ] Media uploaded (imageId or videoId obtained)
|
|
110
|
+
- [ ] Creative created with paused state
|
|
111
|
+
- [ ] Preview reviewed
|
|
112
|
+
- [ ] State changed to delivering when ready to launch
|
|
113
|
+
|
|
114
|
+
`;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=creative-upload-workflow.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creative-upload-workflow.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/creative-upload-workflow.prompt.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,qCAAqC,GAAW;IAC3D,IAAI,EAAE,qCAAqC;IAC3C,WAAW,EACT,uFAAuF;IACzF,SAAS,EAAE;QACT;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,yBAAyB;YACtC,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,yCAAyC,CAAC,IAA6B;IACrF,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,aAAa,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC;IAEnD,OAAO;;;qBAGY,SAAS;;;;;;;;oBAQV,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;;EAG9D,YAAY,KAAK,OAAO;QACtB,CAAC,CAAC;;;kBAGY,SAAS;;;;;;;;;;;CAW1B;QACG,CAAC,CAAC;;;kBAGY,SAAS;;;;;;;;;;;;;;;;CAiB3B;;;;;;;qBAOqB,SAAS;;;uBAGP,SAAS;uBACT,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;MAC7D,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,qCAAqC;;;;;;;;;;;;;qBAazF,SAAS;;;;;;;;;;;;;;;;;;;;;CAqB7B,CAAC;AACF,CAAC"}
|