@cesteral/ttd-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 +308 -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/ttd-auth-adapter.d.ts +21 -0
- package/dist/auth/ttd-auth-adapter.d.ts.map +1 -0
- package/dist/auth/ttd-auth-adapter.js +70 -0
- package/dist/auth/ttd-auth-adapter.js.map +1 -0
- package/dist/auth/ttd-auth-strategy.d.ts +10 -0
- package/dist/auth/ttd-auth-strategy.d.ts.map +1 -0
- package/dist/auth/ttd-auth-strategy.js +28 -0
- package/dist/auth/ttd-auth-strategy.js.map +1 -0
- package/dist/config/index.d.ts +100 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +47 -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 +45 -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 +286 -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 +245 -0
- package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.js +102 -0
- package/dist/mcp-server/prompts/definitions/creative-setup-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 +215 -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 +162 -0
- package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.js +163 -0
- package/dist/mcp-server/prompts/definitions/report-generation-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 +259 -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 +193 -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 +119 -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 +388 -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 +145 -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 +318 -0
- package/dist/mcp-server/resources/definitions/entity-schemas.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/field-rules.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/field-rules.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/field-rules.resource.js +28 -0
- package/dist/mcp-server/resources/definitions/field-rules.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/graphql-reference.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/graphql-reference.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/graphql-reference.resource.js +442 -0
- package/dist/mcp-server/resources/definitions/graphql-reference.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/index.d.ts +8 -0
- package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/index.js +108 -0
- package/dist/mcp-server/resources/definitions/index.js.map +1 -0
- package/dist/mcp-server/resources/definitions/report-reference.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/report-reference.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/report-reference.resource.js +291 -0
- package/dist/mcp-server/resources/definitions/report-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/resources/utils/field-rules.d.ts +18 -0
- package/dist/mcp-server/resources/utils/field-rules.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/field-rules.js +117 -0
- package/dist/mcp-server/resources/utils/field-rules.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 +162 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +1137 -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 +165 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/archive-entities.tool.d.ts +145 -0
- package/dist/mcp-server/tools/definitions/archive-entities.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/archive-entities.tool.js +120 -0
- package/dist/mcp-server/tools/definitions/archive-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.d.ts +174 -0
- package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.js +141 -0
- package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bid-list.tool.d.ts +225 -0
- package/dist/mcp-server/tools/definitions/bid-list.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bid-list.tool.js +169 -0
- package/dist/mcp-server/tools/definitions/bid-list.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts +198 -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 +135 -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 +258 -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 +187 -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 +170 -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 +137 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.d.ts +109 -0
- package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.js +134 -0
- package/dist/mcp-server/tools/definitions/cancel-report-execution.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 +94 -0
- package/dist/mcp-server/tools/definitions/check-report-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.d.ts +181 -0
- package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.js +52 -0
- package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.d.ts +300 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.js +63 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups.tool.d.ts +482 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups.tool.js +121 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.d.ts +172 -0
- package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.js +55 -0
- package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.d.ts +286 -0
- package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.js +63 -0
- package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaigns.tool.d.ts +458 -0
- package/dist/mcp-server/tools/definitions/create-campaigns.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaigns.tool.js +124 -0
- package/dist/mcp-server/tools/definitions/create-campaigns.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +196 -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 +126 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-report-schedule.tool.d.ts +147 -0
- package/dist/mcp-server/tools/definitions/create-report-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-report-schedule.tool.js +171 -0
- package/dist/mcp-server/tools/definitions/create-report-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-report-template.tool.d.ts +370 -0
- package/dist/mcp-server/tools/definitions/create-report-template.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-report-template.tool.js +224 -0
- package/dist/mcp-server/tools/definitions/create-report-template.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-template-schedule.tool.d.ts +316 -0
- package/dist/mcp-server/tools/definitions/create-template-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-template-schedule.tool.js +247 -0
- package/dist/mcp-server/tools/definitions/create-template-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts +147 -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 +112 -0
- package/dist/mcp-server/tools/definitions/delete-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.d.ts +79 -0
- package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.js +89 -0
- package/dist/mcp-server/tools/definitions/delete-report-schedule.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 +160 -0
- package/dist/mcp-server/tools/definitions/download-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/execute-entity-report.tool.d.ts +147 -0
- package/dist/mcp-server/tools/definitions/execute-entity-report.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/execute-entity-report.tool.js +134 -0
- package/dist/mcp-server/tools/definitions/execute-entity-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +80 -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 +82 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-campaign-version.tool.d.ts +61 -0
- package/dist/mcp-server/tools/definitions/get-campaign-version.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-campaign-version.tool.js +51 -0
- package/dist/mcp-server/tools/definitions/get-campaign-version.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-context.tool.d.ts +77 -0
- package/dist/mcp-server/tools/definitions/get-context.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-context.tool.js +80 -0
- package/dist/mcp-server/tools/definitions/get-context.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.d.ts +169 -0
- package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.js +138 -0
- package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +129 -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 +88 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.d.ts +110 -0
- package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.js +58 -0
- package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-job-status.tool.d.ts +61 -0
- package/dist/mcp-server/tools/definitions/get-job-status.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-job-status.tool.js +54 -0
- package/dist/mcp-server/tools/definitions/get-job-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-executions.tool.d.ts +131 -0
- package/dist/mcp-server/tools/definitions/get-report-executions.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-executions.tool.js +253 -0
- package/dist/mcp-server/tools/definitions/get-report-executions.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-schedule.tool.d.ts +197 -0
- package/dist/mcp-server/tools/definitions/get-report-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-schedule.tool.js +66 -0
- package/dist/mcp-server/tools/definitions/get-report-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-template.tool.d.ts +303 -0
- package/dist/mcp-server/tools/definitions/get-report-template.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-template.tool.js +139 -0
- package/dist/mcp-server/tools/definitions/get-report-template.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.d.ts +152 -0
- package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.js +167 -0
- package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report.tool.d.ts +126 -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 +138 -0
- package/dist/mcp-server/tools/definitions/get-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.d.ts +104 -0
- package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.js +57 -0
- package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.d.ts +92 -0
- package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.js +124 -0
- package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.d.ts +68 -0
- package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.js +102 -0
- package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.d.ts +102 -0
- package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.js +152 -0
- package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.d.ts +93 -0
- package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.js +133 -0
- package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-query.tool.d.ts +189 -0
- package/dist/mcp-server/tools/definitions/graphql-query.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-query.tool.js +143 -0
- package/dist/mcp-server/tools/definitions/graphql-query.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/index.d.ts +45 -0
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/index.js +135 -0
- package/dist/mcp-server/tools/definitions/index.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +231 -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 +147 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-schedules.tool.d.ts +282 -0
- package/dist/mcp-server/tools/definitions/list-report-schedules.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-schedules.tool.js +128 -0
- package/dist/mcp-server/tools/definitions/list-report-schedules.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-templates.tool.d.ts +140 -0
- package/dist/mcp-server/tools/definitions/list-report-templates.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-templates.tool.js +118 -0
- package/dist/mcp-server/tools/definitions/list-report-templates.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-types.tool.d.ts +97 -0
- package/dist/mcp-server/tools/definitions/list-report-types.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-types.tool.js +89 -0
- package/dist/mcp-server/tools/definitions/list-report-types.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.d.ts +109 -0
- package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.js +130 -0
- package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/rest-request.tool.d.ts +74 -0
- package/dist/mcp-server/tools/definitions/rest-request.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/rest-request.tool.js +54 -0
- package/dist/mcp-server/tools/definitions/rest-request.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/seed.tool.d.ts +156 -0
- package/dist/mcp-server/tools/definitions/seed.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/seed.tool.js +316 -0
- package/dist/mcp-server/tools/definitions/seed.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts +114 -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 +136 -0
- package/dist/mcp-server/tools/definitions/submit-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.d.ts +82 -0
- package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.js +51 -0
- package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.d.ts +158 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.js +63 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups.tool.d.ts +241 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups.tool.js +120 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.d.ts +82 -0
- package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.js +53 -0
- package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.d.ts +158 -0
- package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.js +63 -0
- package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaigns.tool.d.ts +241 -0
- package/dist/mcp-server/tools/definitions/update-campaigns.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaigns.tool.js +120 -0
- package/dist/mcp-server/tools/definitions/update-campaigns.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +164 -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 +101 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-report-schedule.tool.d.ts +116 -0
- package/dist/mcp-server/tools/definitions/update-report-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-report-schedule.tool.js +134 -0
- package/dist/mcp-server/tools/definitions/update-report-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-report-template.tool.d.ts +358 -0
- package/dist/mcp-server/tools/definitions/update-report-template.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-report-template.tool.js +156 -0
- package/dist/mcp-server/tools/definitions/update-report-template.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +226 -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 +205 -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 +18 -0
- package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/entity-mapping.js +66 -0
- package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
- package/dist/mcp-server/tools/utils/graphql-errors.d.ts +13 -0
- package/dist/mcp-server/tools/utils/graphql-errors.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/graphql-errors.js +48 -0
- package/dist/mcp-server/tools/utils/graphql-errors.js.map +1 -0
- package/dist/mcp-server/tools/utils/parent-id-validation.d.ts +11 -0
- package/dist/mcp-server/tools/utils/parent-id-validation.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/parent-id-validation.js +60 -0
- package/dist/mcp-server/tools/utils/parent-id-validation.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/tools/utils/workflow-schemas.d.ts +646 -0
- package/dist/mcp-server/tools/utils/workflow-schemas.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/workflow-schemas.js +173 -0
- package/dist/mcp-server/tools/utils/workflow-schemas.js.map +1 -0
- package/dist/mcp-server/transports/streamable-http-transport.d.ts +49 -0
- package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
- package/dist/mcp-server/transports/streamable-http-transport.js +74 -0
- package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
- package/dist/services/session-services.d.ts +22 -0
- package/dist/services/session-services.d.ts.map +1 -0
- package/dist/services/session-services.js +24 -0
- package/dist/services/session-services.js.map +1 -0
- package/dist/services/ttd/ttd-http-client.d.ts +13 -0
- package/dist/services/ttd/ttd-http-client.d.ts.map +1 -0
- package/dist/services/ttd/ttd-http-client.js +70 -0
- package/dist/services/ttd/ttd-http-client.js.map +1 -0
- package/dist/services/ttd/ttd-reporting-service.d.ts +79 -0
- package/dist/services/ttd/ttd-reporting-service.d.ts.map +1 -0
- package/dist/services/ttd/ttd-reporting-service.js +180 -0
- package/dist/services/ttd/ttd-reporting-service.js.map +1 -0
- package/dist/services/ttd/ttd-service.d.ts +107 -0
- package/dist/services/ttd/ttd-service.d.ts.map +1 -0
- package/dist/services/ttd/ttd-service.js +307 -0
- package/dist/services/ttd/ttd-service.js.map +1 -0
- package/dist/services/ttd/types.d.ts +153 -0
- package/dist/services/ttd/types.d.ts.map +1 -0
- package/dist/services/ttd/types.js +30 -0
- package/dist/services/ttd/types.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 +56 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { resolveSessionServices } from "../utils/resolve-session.js";
|
|
3
|
+
import { McpError, JsonRpcErrorCode } from "@cesteral/shared";
|
|
4
|
+
const TOOL_NAME = "ttd_graphql_cancel_bulk_job";
|
|
5
|
+
const TOOL_TITLE = "TTD GraphQL Cancel Bulk Job";
|
|
6
|
+
const TOOL_DESCRIPTION = `Cancel a running bulk GraphQL **query** job.
|
|
7
|
+
|
|
8
|
+
### ⚠️ Mutation jobs are NON-CANCELABLE
|
|
9
|
+
This tool only works for bulk query jobs submitted via \`ttd_graphql_query_bulk\`. Bulk mutation jobs submitted via \`ttd_graphql_mutation_bulk\` cannot be cancelled — the API will return an error if you attempt to cancel one.`;
|
|
10
|
+
const CANCEL_BULK_JOB_MUTATION = `mutation CancelBulkJob($input: CancelBulkJobInput!) {
|
|
11
|
+
cancelBulkJob(input: $input) {
|
|
12
|
+
data {
|
|
13
|
+
id
|
|
14
|
+
status
|
|
15
|
+
}
|
|
16
|
+
errors {
|
|
17
|
+
__typename
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}`;
|
|
21
|
+
export const GraphqlCancelBulkJobInputSchema = z
|
|
22
|
+
.object({
|
|
23
|
+
jobId: z
|
|
24
|
+
.string()
|
|
25
|
+
.min(1)
|
|
26
|
+
.describe("Bulk job ID to cancel (query jobs only — mutation jobs are non-cancelable)"),
|
|
27
|
+
})
|
|
28
|
+
.describe("Parameters for cancelling a bulk query job");
|
|
29
|
+
export const GraphqlCancelBulkJobOutputSchema = z
|
|
30
|
+
.object({
|
|
31
|
+
jobId: z.string().describe("Cancelled bulk job ID"),
|
|
32
|
+
status: z.string().describe("Job status after cancellation (expected: CANCELLED)"),
|
|
33
|
+
timestamp: z.string().datetime(),
|
|
34
|
+
})
|
|
35
|
+
.describe("Bulk job cancellation result");
|
|
36
|
+
export async function graphqlCancelBulkJobLogic(input, context, sdkContext) {
|
|
37
|
+
const { ttdService } = resolveSessionServices(sdkContext);
|
|
38
|
+
const result = (await ttdService.graphqlQuery(CANCEL_BULK_JOB_MUTATION, { input: { jobId: input.jobId } }, context));
|
|
39
|
+
const errors = result.errors ?? result.data?.errors;
|
|
40
|
+
if (Array.isArray(errors) && errors.length > 0) {
|
|
41
|
+
const messages = errors.map((e) => e.message ?? JSON.stringify(e)).join("; ");
|
|
42
|
+
throw new McpError(JsonRpcErrorCode.InvalidRequest, `GraphQL error: ${messages}`);
|
|
43
|
+
}
|
|
44
|
+
const payload = result.data?.cancelBulkJob ?? result.cancelBulkJob;
|
|
45
|
+
if (!payload) {
|
|
46
|
+
throw new McpError(JsonRpcErrorCode.InvalidRequest, "GraphQL response contained no cancelBulkJob data");
|
|
47
|
+
}
|
|
48
|
+
const payloadErrors = payload.errors;
|
|
49
|
+
if (Array.isArray(payloadErrors) && payloadErrors.length > 0) {
|
|
50
|
+
const messages = payloadErrors
|
|
51
|
+
.map((e) => e.message ?? e.__typename ?? JSON.stringify(e))
|
|
52
|
+
.join("; ");
|
|
53
|
+
throw new McpError(JsonRpcErrorCode.InvalidRequest, `Cannot cancel bulk job: ${messages}`);
|
|
54
|
+
}
|
|
55
|
+
const job = payload.data;
|
|
56
|
+
if (!job) {
|
|
57
|
+
throw new McpError(JsonRpcErrorCode.InvalidRequest, "cancelBulkJob returned no data");
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
jobId: job.id ?? input.jobId,
|
|
61
|
+
status: job.status,
|
|
62
|
+
timestamp: new Date().toISOString(),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export function graphqlCancelBulkJobResponseFormatter(result) {
|
|
66
|
+
return [
|
|
67
|
+
{
|
|
68
|
+
type: "text",
|
|
69
|
+
text: `Bulk job cancelled.\n\nJob ID: ${result.jobId}\nStatus: ${result.status}\n\nTimestamp: ${result.timestamp}`,
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
}
|
|
73
|
+
export const graphqlCancelBulkJobTool = {
|
|
74
|
+
name: TOOL_NAME,
|
|
75
|
+
title: TOOL_TITLE,
|
|
76
|
+
description: TOOL_DESCRIPTION,
|
|
77
|
+
inputSchema: GraphqlCancelBulkJobInputSchema,
|
|
78
|
+
outputSchema: GraphqlCancelBulkJobOutputSchema,
|
|
79
|
+
annotations: {
|
|
80
|
+
readOnlyHint: false,
|
|
81
|
+
openWorldHint: false,
|
|
82
|
+
destructiveHint: true,
|
|
83
|
+
idempotentHint: true,
|
|
84
|
+
},
|
|
85
|
+
inputExamples: [
|
|
86
|
+
{
|
|
87
|
+
label: "Cancel a running bulk query job",
|
|
88
|
+
input: {
|
|
89
|
+
jobId: "2989826",
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
label: "Cancel a queued bulk query job before it starts",
|
|
94
|
+
input: {
|
|
95
|
+
jobId: "2989827",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
logic: graphqlCancelBulkJobLogic,
|
|
100
|
+
responseFormatter: graphqlCancelBulkJobResponseFormatter,
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=graphql-cancel-bulk-job.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-cancel-bulk-job.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { McpTextContent, RequestContext } from "@cesteral/shared";
|
|
3
|
+
import type { SdkContext } from "@cesteral/shared";
|
|
4
|
+
export declare const GraphqlMutationBulkInputSchema: z.ZodEffects<z.ZodObject<{
|
|
5
|
+
mutation: z.ZodString;
|
|
6
|
+
inputs: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
mutation: string;
|
|
9
|
+
inputs: Record<string, any>[];
|
|
10
|
+
}, {
|
|
11
|
+
mutation: string;
|
|
12
|
+
inputs: Record<string, any>[];
|
|
13
|
+
}>, {
|
|
14
|
+
mutation: string;
|
|
15
|
+
inputs: Record<string, any>[];
|
|
16
|
+
}, {
|
|
17
|
+
mutation: string;
|
|
18
|
+
inputs: Record<string, any>[];
|
|
19
|
+
}>;
|
|
20
|
+
export declare const GraphqlMutationBulkOutputSchema: z.ZodObject<{
|
|
21
|
+
jobId: z.ZodString;
|
|
22
|
+
status: z.ZodString;
|
|
23
|
+
timestamp: z.ZodString;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
status: string;
|
|
26
|
+
timestamp: string;
|
|
27
|
+
jobId: string;
|
|
28
|
+
}, {
|
|
29
|
+
status: string;
|
|
30
|
+
timestamp: string;
|
|
31
|
+
jobId: string;
|
|
32
|
+
}>;
|
|
33
|
+
type GraphqlMutationBulkInput = z.infer<typeof GraphqlMutationBulkInputSchema>;
|
|
34
|
+
type GraphqlMutationBulkOutput = z.infer<typeof GraphqlMutationBulkOutputSchema>;
|
|
35
|
+
export declare function graphqlMutationBulkLogic(input: GraphqlMutationBulkInput, context: RequestContext, sdkContext?: SdkContext): Promise<GraphqlMutationBulkOutput>;
|
|
36
|
+
export declare function graphqlMutationBulkResponseFormatter(result: GraphqlMutationBulkOutput): McpTextContent[];
|
|
37
|
+
export declare const graphqlMutationBulkTool: {
|
|
38
|
+
name: string;
|
|
39
|
+
title: string;
|
|
40
|
+
description: string;
|
|
41
|
+
inputSchema: z.ZodEffects<z.ZodObject<{
|
|
42
|
+
mutation: z.ZodString;
|
|
43
|
+
inputs: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">;
|
|
44
|
+
}, "strip", z.ZodTypeAny, {
|
|
45
|
+
mutation: string;
|
|
46
|
+
inputs: Record<string, any>[];
|
|
47
|
+
}, {
|
|
48
|
+
mutation: string;
|
|
49
|
+
inputs: Record<string, any>[];
|
|
50
|
+
}>, {
|
|
51
|
+
mutation: string;
|
|
52
|
+
inputs: Record<string, any>[];
|
|
53
|
+
}, {
|
|
54
|
+
mutation: string;
|
|
55
|
+
inputs: Record<string, any>[];
|
|
56
|
+
}>;
|
|
57
|
+
outputSchema: z.ZodObject<{
|
|
58
|
+
jobId: z.ZodString;
|
|
59
|
+
status: z.ZodString;
|
|
60
|
+
timestamp: z.ZodString;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
status: string;
|
|
63
|
+
timestamp: string;
|
|
64
|
+
jobId: string;
|
|
65
|
+
}, {
|
|
66
|
+
status: string;
|
|
67
|
+
timestamp: string;
|
|
68
|
+
jobId: string;
|
|
69
|
+
}>;
|
|
70
|
+
annotations: {
|
|
71
|
+
readOnlyHint: boolean;
|
|
72
|
+
openWorldHint: boolean;
|
|
73
|
+
idempotentHint: boolean;
|
|
74
|
+
destructiveHint: boolean;
|
|
75
|
+
};
|
|
76
|
+
inputExamples: ({
|
|
77
|
+
label: string;
|
|
78
|
+
input: {
|
|
79
|
+
mutation: string;
|
|
80
|
+
inputs: {
|
|
81
|
+
campaignId: string;
|
|
82
|
+
name: string;
|
|
83
|
+
}[];
|
|
84
|
+
};
|
|
85
|
+
} | {
|
|
86
|
+
label: string;
|
|
87
|
+
input: {
|
|
88
|
+
mutation: string;
|
|
89
|
+
inputs: {
|
|
90
|
+
adGroupId: string;
|
|
91
|
+
baseBidCPM: {
|
|
92
|
+
amount: number;
|
|
93
|
+
currencyCode: string;
|
|
94
|
+
};
|
|
95
|
+
}[];
|
|
96
|
+
};
|
|
97
|
+
})[];
|
|
98
|
+
logic: typeof graphqlMutationBulkLogic;
|
|
99
|
+
responseFormatter: typeof graphqlMutationBulkResponseFormatter;
|
|
100
|
+
};
|
|
101
|
+
export {};
|
|
102
|
+
//# sourceMappingURL=graphql-mutation-bulk.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-mutation-bulk.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/graphql-mutation-bulk.tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA2CnD,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;EAqByB,CAAC;AAErE,eAAO,MAAM,+BAA+B;;;;;;;;;;;;EAMM,CAAC;AAEnD,KAAK,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAC/E,KAAK,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAyCjF,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,wBAAwB,EAC/B,OAAO,EAAE,cAAc,EACvB,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,yBAAyB,CAAC,CAuBpC;AAED,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,yBAAyB,GAChC,cAAc,EAAE,CAOlB;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCnC,CAAC"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { resolveSessionServices } from "../utils/resolve-session.js";
|
|
3
|
+
import { McpError, JsonRpcErrorCode } from "@cesteral/shared";
|
|
4
|
+
const TOOL_NAME = "ttd_graphql_mutation_bulk";
|
|
5
|
+
const TOOL_TITLE = "TTD GraphQL Mutation Bulk";
|
|
6
|
+
const TOOL_DESCRIPTION = `Submit a bulk GraphQL mutation job to The Trade Desk.
|
|
7
|
+
|
|
8
|
+
Applies the same mutation across many input sets in parallel as an async bulk job. Returns a job ID that can be polled with \`ttd_graphql_bulk_job\`.
|
|
9
|
+
|
|
10
|
+
### ⚠️ NON-CANCELABLE
|
|
11
|
+
Mutation bulk jobs **cannot be cancelled** once submitted. Use \`ttd_graphql_query_bulk\` for read-only queries if you need cancellation support.
|
|
12
|
+
|
|
13
|
+
### Constraints
|
|
14
|
+
- **Max 1000 inputs** per job
|
|
15
|
+
- **Max 15,000 lexical tokens** for the mutation string (~60,000 characters)
|
|
16
|
+
- **Non-cancelable** once submitted
|
|
17
|
+
- **Concurrency:** max 10 active jobs / 20 queued jobs per partner
|
|
18
|
+
- **Result URL:** expires after 1 hour — download promptly via \`ttd_download_report\`
|
|
19
|
+
|
|
20
|
+
### Example
|
|
21
|
+
\`\`\`graphql
|
|
22
|
+
mutation UpdateCampaign($input: UpdateCampaignInput!) {
|
|
23
|
+
updateCampaign(input: $input) {
|
|
24
|
+
campaign { campaignId name }
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
\`\`\`
|
|
28
|
+
With inputs: \`[{ "campaignId": "c1", "name": "New Name 1" }, { "campaignId": "c2", "name": "New Name 2" }]\``;
|
|
29
|
+
const MAX_MUTATION_CHARS = 60_000;
|
|
30
|
+
const CREATE_MUTATION_BULK_MUTATION = `mutation CreateMutationBulk($input: CreateMutationBulkInput!) {
|
|
31
|
+
createMutationBulk(input: $input) {
|
|
32
|
+
data {
|
|
33
|
+
id
|
|
34
|
+
status
|
|
35
|
+
}
|
|
36
|
+
errors {
|
|
37
|
+
__typename
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}`;
|
|
41
|
+
export const GraphqlMutationBulkInputSchema = z
|
|
42
|
+
.object({
|
|
43
|
+
mutation: z.string().min(1).describe("GraphQL mutation string"),
|
|
44
|
+
inputs: z
|
|
45
|
+
.array(z.record(z.any()))
|
|
46
|
+
.min(1)
|
|
47
|
+
.max(1000)
|
|
48
|
+
.describe("Array of input objects — one per entity (max 1000)"),
|
|
49
|
+
})
|
|
50
|
+
.superRefine((data, ctx) => {
|
|
51
|
+
if (data.mutation.length > MAX_MUTATION_CHARS) {
|
|
52
|
+
ctx.addIssue({
|
|
53
|
+
code: z.ZodIssueCode.too_big,
|
|
54
|
+
maximum: MAX_MUTATION_CHARS,
|
|
55
|
+
type: "string",
|
|
56
|
+
inclusive: true,
|
|
57
|
+
path: ["mutation"],
|
|
58
|
+
message: `Mutation string exceeds ${MAX_MUTATION_CHARS} characters (~15,000 lexical tokens). TTD enforces a 15,000 token limit on bulk mutation strings.`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
.describe("Parameters for submitting a bulk GraphQL mutation job");
|
|
63
|
+
export const GraphqlMutationBulkOutputSchema = z
|
|
64
|
+
.object({
|
|
65
|
+
jobId: z.string().describe("Bulk job ID for polling status"),
|
|
66
|
+
status: z.string().describe("Job status (QUEUED, RUNNING, SUCCESS, FAILURE, CANCELLED)"),
|
|
67
|
+
timestamp: z.string().datetime(),
|
|
68
|
+
})
|
|
69
|
+
.describe("Bulk mutation job submission result");
|
|
70
|
+
function extractMutationBulkJobOrThrow(result) {
|
|
71
|
+
const errors = result.errors ?? result.data?.errors;
|
|
72
|
+
if (Array.isArray(errors) && errors.length > 0) {
|
|
73
|
+
const messages = errors.map((e) => e.message ?? JSON.stringify(e)).join("; ");
|
|
74
|
+
throw new McpError(JsonRpcErrorCode.InvalidRequest, `TTD GraphQL bulk mutation failed: ${messages}`, { errors });
|
|
75
|
+
}
|
|
76
|
+
const payload = result.data?.createMutationBulk ?? result.createMutationBulk;
|
|
77
|
+
const payloadErrors = payload?.errors;
|
|
78
|
+
if (Array.isArray(payloadErrors) && payloadErrors.length > 0) {
|
|
79
|
+
const messages = payloadErrors
|
|
80
|
+
.map((e) => e.message ?? e.__typename ?? JSON.stringify(e))
|
|
81
|
+
.join("; ");
|
|
82
|
+
throw new McpError(JsonRpcErrorCode.InvalidRequest, `TTD GraphQL bulk mutation failed: ${messages}`, { errors: payloadErrors });
|
|
83
|
+
}
|
|
84
|
+
const job = payload?.data;
|
|
85
|
+
if (!job?.id || !job?.status) {
|
|
86
|
+
throw new McpError(JsonRpcErrorCode.InternalError, "TTD GraphQL bulk mutation response did not include createMutationBulk.data.id/status", { result });
|
|
87
|
+
}
|
|
88
|
+
return { id: job.id, status: job.status };
|
|
89
|
+
}
|
|
90
|
+
export async function graphqlMutationBulkLogic(input, context, sdkContext) {
|
|
91
|
+
const { ttdService } = resolveSessionServices(sdkContext);
|
|
92
|
+
const variables = {
|
|
93
|
+
input: {
|
|
94
|
+
mutation: input.mutation,
|
|
95
|
+
mutationVariables: input.inputs.map((v) => JSON.stringify(v)),
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
const result = (await ttdService.graphqlQuery(CREATE_MUTATION_BULK_MUTATION, variables, context));
|
|
99
|
+
const job = extractMutationBulkJobOrThrow(result);
|
|
100
|
+
return {
|
|
101
|
+
jobId: job.id,
|
|
102
|
+
status: job.status,
|
|
103
|
+
timestamp: new Date().toISOString(),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export function graphqlMutationBulkResponseFormatter(result) {
|
|
107
|
+
return [
|
|
108
|
+
{
|
|
109
|
+
type: "text",
|
|
110
|
+
text: `⚠️ Bulk mutation job submitted (NON-CANCELABLE).\n\nJob ID: ${result.jobId}\nStatus: ${result.status}\n\nUse \`ttd_graphql_bulk_job\` with jobId "${result.jobId}" to poll for completion.\n\nTimestamp: ${result.timestamp}`,
|
|
111
|
+
},
|
|
112
|
+
];
|
|
113
|
+
}
|
|
114
|
+
export const graphqlMutationBulkTool = {
|
|
115
|
+
name: TOOL_NAME,
|
|
116
|
+
title: TOOL_TITLE,
|
|
117
|
+
description: TOOL_DESCRIPTION,
|
|
118
|
+
inputSchema: GraphqlMutationBulkInputSchema,
|
|
119
|
+
outputSchema: GraphqlMutationBulkOutputSchema,
|
|
120
|
+
annotations: {
|
|
121
|
+
readOnlyHint: false,
|
|
122
|
+
openWorldHint: true,
|
|
123
|
+
idempotentHint: false,
|
|
124
|
+
destructiveHint: true,
|
|
125
|
+
},
|
|
126
|
+
inputExamples: [
|
|
127
|
+
{
|
|
128
|
+
label: "Batch update campaign names via bulk mutation",
|
|
129
|
+
input: {
|
|
130
|
+
mutation: "mutation UpdateCampaign($input: UpdateCampaignInput!) { updateCampaign(input: $input) { campaign { campaignId name } } }",
|
|
131
|
+
inputs: [
|
|
132
|
+
{ campaignId: "camp456def", name: "Q1 2025 Brand Awareness - Updated" },
|
|
133
|
+
{ campaignId: "camp789ghi", name: "Q1 2025 Retargeting - Updated" },
|
|
134
|
+
{ campaignId: "camp012jkl", name: "Q1 2025 Prospecting - Updated" },
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
label: "Batch update ad group bids via bulk mutation",
|
|
140
|
+
input: {
|
|
141
|
+
mutation: "mutation UpdateAdGroup($input: UpdateAdGroupInput!) { updateAdGroup(input: $input) { adGroup { adGroupId baseBidCPM { amount } } } }",
|
|
142
|
+
inputs: [
|
|
143
|
+
{ adGroupId: "adg111aaa", baseBidCPM: { amount: 4.5, currencyCode: "USD" } },
|
|
144
|
+
{ adGroupId: "adg222bbb", baseBidCPM: { amount: 6.0, currencyCode: "USD" } },
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
logic: graphqlMutationBulkLogic,
|
|
150
|
+
responseFormatter: graphqlMutationBulkResponseFormatter,
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=graphql-mutation-bulk.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-mutation-bulk.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/graphql-mutation-bulk.tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,SAAS,GAAG,2BAA2B,CAAC;AAC9C,MAAM,UAAU,GAAG,2BAA2B,CAAC;AAC/C,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;8GAsBqF,CAAC;AAE/G,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,6BAA6B,GAAG;;;;;;;;;;EAUpC,CAAC;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC;KAC5C,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC/D,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,oDAAoD,CAAC;CAClE,CAAC;KACD,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QAC9C,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO;YAC5B,OAAO,EAAE,kBAAkB;YAC3B,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,CAAC,UAAU,CAAC;YAClB,OAAO,EAAE,2BAA2B,kBAAkB,mGAAmG;SAC1J,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;KACD,QAAQ,CAAC,uDAAuD,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC;KAC7C,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IACxF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC;KACD,QAAQ,CAAC,qCAAqC,CAAC,CAAC;AAKnD,SAAS,6BAA6B,CAAC,MAA2B;IAIhE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;IACpD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,cAAc,EAC/B,qCAAqC,QAAQ,EAAE,EAC/C,EAAE,MAAM,EAAE,CACX,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,kBAAkB,IAAI,MAAM,CAAC,kBAAkB,CAAC;IAC7E,MAAM,aAAa,GAAG,OAAO,EAAE,MAAM,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,aAAa;aAC3B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC/D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,cAAc,EAC/B,qCAAqC,QAAQ,EAAE,EAC/C,EAAE,MAAM,EAAE,aAAa,EAAE,CAC1B,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,aAAa,EAC9B,sFAAsF,EACtF,EAAE,MAAM,EAAE,CACX,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAY,EAAE,MAAM,EAAE,GAAG,CAAC,MAAgB,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAA+B,EAC/B,OAAuB,EACvB,UAAuB;IAEvB,MAAM,EAAE,UAAU,EAAE,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC9D;KACF,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,MAAM,UAAU,CAAC,YAAY,CAC3C,6BAA6B,EAC7B,SAAS,EACT,OAAO,CACR,CAAwB,CAAC;IAE1B,MAAM,GAAG,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAElD,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,EAAE;QACb,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,MAAiC;IAEjC,OAAO;QACL;YACE,IAAI,EAAE,MAAe;YACrB,IAAI,EAAE,+DAA+D,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,MAAM,gDAAgD,MAAM,CAAC,KAAK,2CAA2C,MAAM,CAAC,SAAS,EAAE;SACrO;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,8BAA8B;IAC3C,YAAY,EAAE,+BAA+B;IAC7C,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,KAAK;QACrB,eAAe,EAAE,IAAI;KACtB;IACD,aAAa,EAAE;QACb;YACE,KAAK,EAAE,+CAA+C;YACtD,KAAK,EAAE;gBACL,QAAQ,EACN,0HAA0H;gBAC5H,MAAM,EAAE;oBACN,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,mCAAmC,EAAE;oBACvE,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;oBACnE,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,EAAE;iBACpE;aACF;SACF;QACD;YACE,KAAK,EAAE,8CAA8C;YACrD,KAAK,EAAE;gBACL,QAAQ,EACN,sIAAsI;gBACxI,MAAM,EAAE;oBACN,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE;oBAC5E,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE;iBAC7E;aACF;SACF;KACF;IACD,KAAK,EAAE,wBAAwB;IAC/B,iBAAiB,EAAE,oCAAoC;CACxD,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { McpTextContent, RequestContext } from "@cesteral/shared";
|
|
3
|
+
import type { SdkContext } from "@cesteral/shared";
|
|
4
|
+
export declare const GraphqlQueryBulkInputSchema: z.ZodObject<{
|
|
5
|
+
query: z.ZodString;
|
|
6
|
+
variables: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">;
|
|
7
|
+
betaFeatures: z.ZodOptional<z.ZodString>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
query: string;
|
|
10
|
+
variables: Record<string, any>[];
|
|
11
|
+
betaFeatures?: string | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
query: string;
|
|
14
|
+
variables: Record<string, any>[];
|
|
15
|
+
betaFeatures?: string | undefined;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const GraphqlQueryBulkOutputSchema: z.ZodObject<{
|
|
18
|
+
jobId: z.ZodString;
|
|
19
|
+
status: z.ZodString;
|
|
20
|
+
timestamp: z.ZodString;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
status: string;
|
|
23
|
+
timestamp: string;
|
|
24
|
+
jobId: string;
|
|
25
|
+
}, {
|
|
26
|
+
status: string;
|
|
27
|
+
timestamp: string;
|
|
28
|
+
jobId: string;
|
|
29
|
+
}>;
|
|
30
|
+
type GraphqlQueryBulkInput = z.infer<typeof GraphqlQueryBulkInputSchema>;
|
|
31
|
+
type GraphqlQueryBulkOutput = z.infer<typeof GraphqlQueryBulkOutputSchema>;
|
|
32
|
+
export declare function graphqlQueryBulkLogic(input: GraphqlQueryBulkInput, context: RequestContext, sdkContext?: SdkContext): Promise<GraphqlQueryBulkOutput>;
|
|
33
|
+
export declare function graphqlQueryBulkResponseFormatter(result: GraphqlQueryBulkOutput): McpTextContent[];
|
|
34
|
+
export declare const graphqlQueryBulkTool: {
|
|
35
|
+
name: string;
|
|
36
|
+
title: string;
|
|
37
|
+
description: string;
|
|
38
|
+
inputSchema: z.ZodObject<{
|
|
39
|
+
query: z.ZodString;
|
|
40
|
+
variables: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>, "many">;
|
|
41
|
+
betaFeatures: z.ZodOptional<z.ZodString>;
|
|
42
|
+
}, "strip", z.ZodTypeAny, {
|
|
43
|
+
query: string;
|
|
44
|
+
variables: Record<string, any>[];
|
|
45
|
+
betaFeatures?: string | undefined;
|
|
46
|
+
}, {
|
|
47
|
+
query: string;
|
|
48
|
+
variables: Record<string, any>[];
|
|
49
|
+
betaFeatures?: string | undefined;
|
|
50
|
+
}>;
|
|
51
|
+
outputSchema: z.ZodObject<{
|
|
52
|
+
jobId: z.ZodString;
|
|
53
|
+
status: z.ZodString;
|
|
54
|
+
timestamp: z.ZodString;
|
|
55
|
+
}, "strip", z.ZodTypeAny, {
|
|
56
|
+
status: string;
|
|
57
|
+
timestamp: string;
|
|
58
|
+
jobId: string;
|
|
59
|
+
}, {
|
|
60
|
+
status: string;
|
|
61
|
+
timestamp: string;
|
|
62
|
+
jobId: string;
|
|
63
|
+
}>;
|
|
64
|
+
annotations: {
|
|
65
|
+
readOnlyHint: boolean;
|
|
66
|
+
openWorldHint: boolean;
|
|
67
|
+
destructiveHint: boolean;
|
|
68
|
+
idempotentHint: boolean;
|
|
69
|
+
};
|
|
70
|
+
inputExamples: ({
|
|
71
|
+
label: string;
|
|
72
|
+
input: {
|
|
73
|
+
query: string;
|
|
74
|
+
variables: {
|
|
75
|
+
id: string;
|
|
76
|
+
}[];
|
|
77
|
+
betaFeatures: string;
|
|
78
|
+
};
|
|
79
|
+
} | {
|
|
80
|
+
label: string;
|
|
81
|
+
input: {
|
|
82
|
+
query: string;
|
|
83
|
+
variables: {
|
|
84
|
+
id: string;
|
|
85
|
+
}[];
|
|
86
|
+
betaFeatures?: undefined;
|
|
87
|
+
};
|
|
88
|
+
})[];
|
|
89
|
+
logic: typeof graphqlQueryBulkLogic;
|
|
90
|
+
responseFormatter: typeof graphqlQueryBulkResponseFormatter;
|
|
91
|
+
};
|
|
92
|
+
export {};
|
|
93
|
+
//# sourceMappingURL=graphql-query-bulk.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-query-bulk.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/graphql-query-bulk.tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAoCnD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;EAYyB,CAAC;AAElE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;EAMM,CAAC;AAEhD,KAAK,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AACzE,KAAK,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAyC3E,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,cAAc,EACvB,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,sBAAsB,CAAC,CAqBjC;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,sBAAsB,GAC7B,cAAc,EAAE,CAOlB;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiChC,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { resolveSessionServices } from "../utils/resolve-session.js";
|
|
3
|
+
import { McpError, JsonRpcErrorCode } from "@cesteral/shared";
|
|
4
|
+
const TOOL_NAME = "ttd_graphql_query_bulk";
|
|
5
|
+
const TOOL_TITLE = "TTD GraphQL Query Bulk";
|
|
6
|
+
const TOOL_DESCRIPTION = `Submit a bulk GraphQL query job to The Trade Desk.
|
|
7
|
+
|
|
8
|
+
Runs the same GraphQL query across many variable sets in parallel as an async bulk job. Returns a job ID that can be polled with \`ttd_graphql_bulk_job\`.
|
|
9
|
+
|
|
10
|
+
### Constraints
|
|
11
|
+
- **Concurrency:** max 10 active jobs / 20 queued jobs per partner
|
|
12
|
+
- **Result URL:** expires after 1 hour — download promptly via \`ttd_download_report\`
|
|
13
|
+
|
|
14
|
+
### Example
|
|
15
|
+
\`\`\`graphql
|
|
16
|
+
query Advertiser($id: ID!) {
|
|
17
|
+
advertiser(id: $id) {
|
|
18
|
+
name
|
|
19
|
+
totalCampaignChannelCount
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
\`\`\`
|
|
23
|
+
With variables: \`[{ "id": "adv1" }, { "id": "adv2" }, { "id": "adv3" }]\``;
|
|
24
|
+
const CREATE_QUERY_BULK_MUTATION = `mutation CreateQueryBulk($input: CreateQueryBulkInput!) {
|
|
25
|
+
createQueryBulk(input: $input) {
|
|
26
|
+
data {
|
|
27
|
+
id
|
|
28
|
+
status
|
|
29
|
+
}
|
|
30
|
+
errors {
|
|
31
|
+
__typename
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}`;
|
|
35
|
+
export const GraphqlQueryBulkInputSchema = z
|
|
36
|
+
.object({
|
|
37
|
+
query: z.string().min(1).describe("GraphQL query string to execute for each variable set"),
|
|
38
|
+
variables: z
|
|
39
|
+
.array(z.record(z.any()))
|
|
40
|
+
.min(1)
|
|
41
|
+
.describe("Array of variable objects — one per entity"),
|
|
42
|
+
betaFeatures: z
|
|
43
|
+
.string()
|
|
44
|
+
.optional()
|
|
45
|
+
.describe("Optional TTD-GQL-Beta header value to enable beta GraphQL features"),
|
|
46
|
+
})
|
|
47
|
+
.describe("Parameters for submitting a bulk GraphQL query job");
|
|
48
|
+
export const GraphqlQueryBulkOutputSchema = z
|
|
49
|
+
.object({
|
|
50
|
+
jobId: z.string().describe("Bulk job ID for polling status"),
|
|
51
|
+
status: z.string().describe("Job status (QUEUED, RUNNING, SUCCESS, FAILURE, CANCELLED)"),
|
|
52
|
+
timestamp: z.string().datetime(),
|
|
53
|
+
})
|
|
54
|
+
.describe("Bulk query job submission result");
|
|
55
|
+
function extractBulkJobOrThrow(result, mutationName) {
|
|
56
|
+
const errors = result.errors ?? result.data?.errors;
|
|
57
|
+
if (Array.isArray(errors) && errors.length > 0) {
|
|
58
|
+
const messages = errors.map((e) => e.message ?? JSON.stringify(e)).join("; ");
|
|
59
|
+
throw new McpError(JsonRpcErrorCode.InvalidRequest, `TTD GraphQL bulk request failed: ${messages}`, { errors });
|
|
60
|
+
}
|
|
61
|
+
const payload = result.data?.[mutationName] ?? result[mutationName];
|
|
62
|
+
const payloadErrors = payload?.errors;
|
|
63
|
+
if (Array.isArray(payloadErrors) && payloadErrors.length > 0) {
|
|
64
|
+
const messages = payloadErrors
|
|
65
|
+
.map((e) => e.message ?? e.__typename ?? JSON.stringify(e))
|
|
66
|
+
.join("; ");
|
|
67
|
+
throw new McpError(JsonRpcErrorCode.InvalidRequest, `TTD GraphQL bulk request failed: ${messages}`, { errors: payloadErrors });
|
|
68
|
+
}
|
|
69
|
+
const job = payload?.data;
|
|
70
|
+
if (!job?.id || !job?.status) {
|
|
71
|
+
throw new McpError(JsonRpcErrorCode.InternalError, `TTD GraphQL bulk response did not include ${mutationName}.data.id/status`, { result });
|
|
72
|
+
}
|
|
73
|
+
return { id: job.id, status: job.status };
|
|
74
|
+
}
|
|
75
|
+
export async function graphqlQueryBulkLogic(input, context, sdkContext) {
|
|
76
|
+
const { ttdService } = resolveSessionServices(sdkContext);
|
|
77
|
+
const variables = {
|
|
78
|
+
input: {
|
|
79
|
+
query: input.query,
|
|
80
|
+
queryVariables: JSON.stringify(input.variables),
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
const result = (await ttdService.graphqlQuery(CREATE_QUERY_BULK_MUTATION, variables, context, {
|
|
84
|
+
betaFeatures: input.betaFeatures,
|
|
85
|
+
}));
|
|
86
|
+
const job = extractBulkJobOrThrow(result, "createQueryBulk");
|
|
87
|
+
return {
|
|
88
|
+
jobId: job.id,
|
|
89
|
+
status: job.status,
|
|
90
|
+
timestamp: new Date().toISOString(),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function graphqlQueryBulkResponseFormatter(result) {
|
|
94
|
+
return [
|
|
95
|
+
{
|
|
96
|
+
type: "text",
|
|
97
|
+
text: `Bulk query job submitted.\n\nJob ID: ${result.jobId}\nStatus: ${result.status}\n\nUse \`ttd_graphql_bulk_job\` with jobId "${result.jobId}" to poll for completion.\n\nTimestamp: ${result.timestamp}`,
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
}
|
|
101
|
+
export const graphqlQueryBulkTool = {
|
|
102
|
+
name: TOOL_NAME,
|
|
103
|
+
title: TOOL_TITLE,
|
|
104
|
+
description: TOOL_DESCRIPTION,
|
|
105
|
+
inputSchema: GraphqlQueryBulkInputSchema,
|
|
106
|
+
outputSchema: GraphqlQueryBulkOutputSchema,
|
|
107
|
+
annotations: {
|
|
108
|
+
readOnlyHint: false,
|
|
109
|
+
openWorldHint: true,
|
|
110
|
+
destructiveHint: false,
|
|
111
|
+
idempotentHint: false,
|
|
112
|
+
},
|
|
113
|
+
inputExamples: [
|
|
114
|
+
{
|
|
115
|
+
label: "Bulk query details for multiple advertisers",
|
|
116
|
+
input: {
|
|
117
|
+
query: "query GetAdvertiser($id: ID!) { advertiser(id: $id) { id name status totalCampaignChannelCount } }",
|
|
118
|
+
variables: [{ id: "adv123abc" }, { id: "adv456def" }, { id: "adv789ghi" }],
|
|
119
|
+
betaFeatures: "my-beta-flag",
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
label: "Bulk query campaign budget and pacing for multiple campaigns",
|
|
124
|
+
input: {
|
|
125
|
+
query: "query GetCampaign($id: ID!) { campaign(id: $id) { id name budget { amount currencyCode } pacingMode availability } }",
|
|
126
|
+
variables: [{ id: "camp456def" }, { id: "camp789ghi" }, { id: "camp012jkl" }],
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
logic: graphqlQueryBulkLogic,
|
|
131
|
+
responseFormatter: graphqlQueryBulkResponseFormatter,
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=graphql-query-bulk.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-query-bulk.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/graphql-query-bulk.tool.ts"],"names":[],"mappings":"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"}
|