Constant Contact · Capability

AppConnect V3 — Email Reporting

AppConnect V3 — Email Reporting. 12 operations. Lead operation: GET an Email Links Report. Self-contained Naftiko capability covering one Constant Contact business surface.

Run with Naftiko Constant ContactEmail Reporting

What You Can Do

GET
Getcampaignactivitylinkstats — GET an Email Links Report
/v1/reports/email-reports/{campaign-activity-id}/links
GET
Getbounces — GET an Email Bounces Report
/v1/reports/email-reports/{campaign-activity-id}/tracking/bounces
GET
Getclicks — GET an Email Clicks Report
/v1/reports/email-reports/{campaign-activity-id}/tracking/clicks
GET
Getdidnotopens — GET an Email Did Not Opens Report
/v1/reports/email-reports/{campaign-activity-id}/tracking/didnotopens
GET
Getforwards — GET an Email Forwards Report
/v1/reports/email-reports/{campaign-activity-id}/tracking/forwards
GET
Getopens — GET an Email Opens Report
/v1/reports/email-reports/{campaign-activity-id}/tracking/opens
GET
Getoptouts — GET an Email Opt-outs Report
/v1/reports/email-reports/{campaign-activity-id}/tracking/optouts
GET
Getsends — GET an Email Sends Report
/v1/reports/email-reports/{campaign-activity-id}/tracking/sends
GET
Getuniqueopens — GET an Email Unique Opens Report
/v1/reports/email-reports/{campaign-activity-id}/tracking/unique-opens
GET
Getemailcampaignactivitysummary — GET an Email Campaign Activity Stats Report
/v1/reports/stats/email-campaign-activities/{campaign-activity-ids}
GET
Getemailsummary — GET an Email Campaign Stats Report
/v1/reports/stats/email-campaigns/{campaign-ids}
GET
Getallbulkemailcampaignsummaries — GET an Email Campaigns Summary Report
/v1/reports/summary-reports/email-campaign-summaries

MCP Tools

get-email-links-report

GET an Email Links Report

read-only idempotent
get-email-bounces-report

GET an Email Bounces Report

read-only idempotent
get-email-clicks-report

GET an Email Clicks Report

read-only idempotent
get-email-did-not-opens

GET an Email Did Not Opens Report

read-only idempotent
get-email-forwards-report

GET an Email Forwards Report

read-only idempotent
get-email-opens-report

GET an Email Opens Report

read-only idempotent
get-email-opt-outs-report

GET an Email Opt-outs Report

read-only idempotent
get-email-sends-report

GET an Email Sends Report

read-only idempotent
get-email-unique-opens-report

GET an Email Unique Opens Report

read-only idempotent
get-email-campaign-activity-stats

GET an Email Campaign Activity Stats Report

read-only idempotent
get-email-campaign-stats-report

GET an Email Campaign Stats Report

read-only idempotent
get-email-campaigns-summary-report

GET an Email Campaigns Summary Report

read-only idempotent

Capability Spec

v3-email-reporting.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: AppConnect V3 — Email Reporting
  description: 'AppConnect V3 — Email Reporting. 12 operations. Lead operation: GET an Email Links Report. Self-contained
    Naftiko capability covering one Constant Contact business surface.'
  tags:
  - Constant Contact
  - Email Reporting
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    CONSTANT_CONTACT_API_KEY: CONSTANT_CONTACT_API_KEY
capability:
  consumes:
  - type: http
    namespace: v3-email-reporting
    baseUri: https://api.cc.email/v3
    description: AppConnect V3 — Email Reporting business capability. Self-contained, no shared references.
    resources:
    - name: reports-email_reports-campaign_activity_id-links
      path: /reports/email_reports/{campaign_activity_id}/links
      operations:
      - name: getcampaignactivitylinkstats
        method: GET
        description: GET an Email Links Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_activity_id
          in: path
          type: string
          description: The unique ID for an email campaign activity.
          required: true
        - name: no_clicks
          in: query
          type: boolean
          description: Set this query parameter to `true` to  return details for links that were not clicked in the response
            results.
    - name: reports-email_reports-campaign_activity_id-tracking-bounces
      path: /reports/email_reports/{campaign_activity_id}/tracking/bounces
      operations:
      - name: getbounces
        method: GET
        description: GET an Email Bounces Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_activity_id
          in: path
          type: string
          description: The ID that uniquely identifies the email campaign activity to use for this report.
          required: true
        - name: bounce_code
          in: query
          type: array
          description: To return results for a specific bounce code, select the `bounce_code` from the drop-down list. To
            return results for multiple codes, repeat the bounce code par
        - name: limit
          in: query
          type: string
          description: The number of tracking activities to return on a page.
    - name: reports-email_reports-campaign_activity_id-tracking-clicks
      path: /reports/email_reports/{campaign_activity_id}/tracking/clicks
      operations:
      - name: getclicks
        method: GET
        description: GET an Email Clicks Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_activity_id
          in: path
          type: string
          description: The ID that uniquely identifies the email campaign activity to use for this report.
          required: true
        - name: url_id
          in: query
          type: integer
          description: The ID that uniquely identifies a single link URL for which you want to get a clicks report.
        - name: limit
          in: query
          type: string
          description: The number of tracking activities to return on a page.
    - name: reports-email_reports-campaign_activity_id-tracking-didnotopens
      path: /reports/email_reports/{campaign_activity_id}/tracking/didnotopens
      operations:
      - name: getdidnotopens
        method: GET
        description: GET an Email Did Not Opens Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_activity_id
          in: path
          type: string
          description: The ID that uniquely identifies the email campaign activity to use for this report.
          required: true
        - name: limit
          in: query
          type: string
          description: The number of tracking activities to return on a page.
    - name: reports-email_reports-campaign_activity_id-tracking-forwards
      path: /reports/email_reports/{campaign_activity_id}/tracking/forwards
      operations:
      - name: getforwards
        method: GET
        description: GET an Email Forwards Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_activity_id
          in: path
          type: string
          description: The ID that uniquely identifies the email campaign activity to use for this report.
          required: true
        - name: limit
          in: query
          type: string
          description: The number of tracking activities to return on a page.
    - name: reports-email_reports-campaign_activity_id-tracking-opens
      path: /reports/email_reports/{campaign_activity_id}/tracking/opens
      operations:
      - name: getopens
        method: GET
        description: GET an Email Opens Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_activity_id
          in: path
          type: string
          description: The unique ID for an email campaign activity to use for this report.
          required: true
        - name: limit
          in: query
          type: string
          description: The number of tracking activities to return on a page.
    - name: reports-email_reports-campaign_activity_id-tracking-optouts
      path: /reports/email_reports/{campaign_activity_id}/tracking/optouts
      operations:
      - name: getoptouts
        method: GET
        description: GET an Email Opt-outs Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_activity_id
          in: path
          type: string
          description: The ID that uniquely identifies the email campaign activity to use for this report.
          required: true
        - name: limit
          in: query
          type: string
          description: The number of tracking activities to return on a page.
    - name: reports-email_reports-campaign_activity_id-tracking-sends
      path: /reports/email_reports/{campaign_activity_id}/tracking/sends
      operations:
      - name: getsends
        method: GET
        description: GET an Email Sends Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_activity_id
          in: path
          type: string
          description: The unique ID for an email campaign activity to use for this report.
          required: true
        - name: limit
          in: query
          type: string
          description: The number of tracking activities to return on a page.
    - name: reports-email_reports-campaign_activity_id-tracking-unique_opens
      path: /reports/email_reports/{campaign_activity_id}/tracking/unique_opens
      operations:
      - name: getuniqueopens
        method: GET
        description: GET an Email Unique Opens Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_activity_id
          in: path
          type: string
          description: The ID that uniquely identifies the email campaign activity to use for this report.
          required: true
        - name: limit
          in: query
          type: string
          description: The number of tracking activities to return on a page.
    - name: reports-stats-email_campaign_activities-campaign_activity_ids
      path: /reports/stats/email_campaign_activities/{campaign_activity_ids}
      operations:
      - name: getemailcampaignactivitysummary
        method: GET
        description: GET an Email Campaign Activity Stats Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_activity_ids
          in: path
          type: string
          description: A comma-separated list of `campaign_activity_id`s (UUID's).
          required: true
    - name: reports-stats-email_campaigns-campaign_ids
      path: /reports/stats/email_campaigns/{campaign_ids}
      operations:
      - name: getemailsummary
        method: GET
        description: GET an Email Campaign Stats Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: campaign_ids
          in: path
          type: string
          description: A comma-separated list of `campaign_id`s (UUID's).
          required: true
    - name: reports-summary_reports-email_campaign_summaries
      path: /reports/summary_reports/email_campaign_summaries
      operations:
      - name: getallbulkemailcampaignsummaries
        method: GET
        description: GET an Email Campaigns Summary Report
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: limit
          in: query
          type: string
          description: Use the `limit` query parameter to limit the number of email campaign summaries to return on a single
            page. The default is `50` and the maximum is `500` per pag
  exposes:
  - type: rest
    namespace: v3-email-reporting-rest
    port: 8080
    description: REST adapter for AppConnect V3 — Email Reporting. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/reports/email-reports/{campaign-activity-id}/links
      name: reports-email-reports-campaign-activity-id-links
      description: REST surface for reports-email_reports-campaign_activity_id-links.
      operations:
      - method: GET
        name: getcampaignactivitylinkstats
        description: GET an Email Links Report
        call: v3-email-reporting.getcampaignactivitylinkstats
        with:
          campaign_activity_id: rest.campaign_activity_id
          no_clicks: rest.no_clicks
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/bounces
      name: reports-email-reports-campaign-activity-id-tracking-bounces
      description: REST surface for reports-email_reports-campaign_activity_id-tracking-bounces.
      operations:
      - method: GET
        name: getbounces
        description: GET an Email Bounces Report
        call: v3-email-reporting.getbounces
        with:
          campaign_activity_id: rest.campaign_activity_id
          bounce_code: rest.bounce_code
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/clicks
      name: reports-email-reports-campaign-activity-id-tracking-clicks
      description: REST surface for reports-email_reports-campaign_activity_id-tracking-clicks.
      operations:
      - method: GET
        name: getclicks
        description: GET an Email Clicks Report
        call: v3-email-reporting.getclicks
        with:
          campaign_activity_id: rest.campaign_activity_id
          url_id: rest.url_id
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/didnotopens
      name: reports-email-reports-campaign-activity-id-tracking-didnotopens
      description: REST surface for reports-email_reports-campaign_activity_id-tracking-didnotopens.
      operations:
      - method: GET
        name: getdidnotopens
        description: GET an Email Did Not Opens Report
        call: v3-email-reporting.getdidnotopens
        with:
          campaign_activity_id: rest.campaign_activity_id
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/forwards
      name: reports-email-reports-campaign-activity-id-tracking-forwards
      description: REST surface for reports-email_reports-campaign_activity_id-tracking-forwards.
      operations:
      - method: GET
        name: getforwards
        description: GET an Email Forwards Report
        call: v3-email-reporting.getforwards
        with:
          campaign_activity_id: rest.campaign_activity_id
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/opens
      name: reports-email-reports-campaign-activity-id-tracking-opens
      description: REST surface for reports-email_reports-campaign_activity_id-tracking-opens.
      operations:
      - method: GET
        name: getopens
        description: GET an Email Opens Report
        call: v3-email-reporting.getopens
        with:
          campaign_activity_id: rest.campaign_activity_id
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/optouts
      name: reports-email-reports-campaign-activity-id-tracking-optouts
      description: REST surface for reports-email_reports-campaign_activity_id-tracking-optouts.
      operations:
      - method: GET
        name: getoptouts
        description: GET an Email Opt-outs Report
        call: v3-email-reporting.getoptouts
        with:
          campaign_activity_id: rest.campaign_activity_id
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/sends
      name: reports-email-reports-campaign-activity-id-tracking-sends
      description: REST surface for reports-email_reports-campaign_activity_id-tracking-sends.
      operations:
      - method: GET
        name: getsends
        description: GET an Email Sends Report
        call: v3-email-reporting.getsends
        with:
          campaign_activity_id: rest.campaign_activity_id
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/email-reports/{campaign-activity-id}/tracking/unique-opens
      name: reports-email-reports-campaign-activity-id-tracking-unique-opens
      description: REST surface for reports-email_reports-campaign_activity_id-tracking-unique_opens.
      operations:
      - method: GET
        name: getuniqueopens
        description: GET an Email Unique Opens Report
        call: v3-email-reporting.getuniqueopens
        with:
          campaign_activity_id: rest.campaign_activity_id
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/stats/email-campaign-activities/{campaign-activity-ids}
      name: reports-stats-email-campaign-activities-campaign-activity-ids
      description: REST surface for reports-stats-email_campaign_activities-campaign_activity_ids.
      operations:
      - method: GET
        name: getemailcampaignactivitysummary
        description: GET an Email Campaign Activity Stats Report
        call: v3-email-reporting.getemailcampaignactivitysummary
        with:
          campaign_activity_ids: rest.campaign_activity_ids
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/stats/email-campaigns/{campaign-ids}
      name: reports-stats-email-campaigns-campaign-ids
      description: REST surface for reports-stats-email_campaigns-campaign_ids.
      operations:
      - method: GET
        name: getemailsummary
        description: GET an Email Campaign Stats Report
        call: v3-email-reporting.getemailsummary
        with:
          campaign_ids: rest.campaign_ids
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/reports/summary-reports/email-campaign-summaries
      name: reports-summary-reports-email-campaign-summaries
      description: REST surface for reports-summary_reports-email_campaign_summaries.
      operations:
      - method: GET
        name: getallbulkemailcampaignsummaries
        description: GET an Email Campaigns Summary Report
        call: v3-email-reporting.getallbulkemailcampaignsummaries
        with:
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: v3-email-reporting-mcp
    port: 9090
    transport: http
    description: MCP adapter for AppConnect V3 — Email Reporting. One tool per consumed operation, routed inline through this
      capability's consumes block.
    tools:
    - name: get-email-links-report
      description: GET an Email Links Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getcampaignactivitylinkstats
      with:
        campaign_activity_id: tools.campaign_activity_id
        no_clicks: tools.no_clicks
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-bounces-report
      description: GET an Email Bounces Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getbounces
      with:
        campaign_activity_id: tools.campaign_activity_id
        bounce_code: tools.bounce_code
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-clicks-report
      description: GET an Email Clicks Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getclicks
      with:
        campaign_activity_id: tools.campaign_activity_id
        url_id: tools.url_id
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-did-not-opens
      description: GET an Email Did Not Opens Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getdidnotopens
      with:
        campaign_activity_id: tools.campaign_activity_id
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-forwards-report
      description: GET an Email Forwards Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getforwards
      with:
        campaign_activity_id: tools.campaign_activity_id
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-opens-report
      description: GET an Email Opens Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getopens
      with:
        campaign_activity_id: tools.campaign_activity_id
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-opt-outs-report
      description: GET an Email Opt-outs Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getoptouts
      with:
        campaign_activity_id: tools.campaign_activity_id
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-sends-report
      description: GET an Email Sends Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getsends
      with:
        campaign_activity_id: tools.campaign_activity_id
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-unique-opens-report
      description: GET an Email Unique Opens Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getuniqueopens
      with:
        campaign_activity_id: tools.campaign_activity_id
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-campaign-activity-stats
      description: GET an Email Campaign Activity Stats Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getemailcampaignactivitysummary
      with:
        campaign_activity_ids: tools.campaign_activity_ids
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-campaign-stats-report
      description: GET an Email Campaign Stats Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getemailsummary
      with:
        campaign_ids: tools.campaign_ids
      outputParameters:
      - type: object
        mapping: $.
    - name: get-email-campaigns-summary-report
      description: GET an Email Campaigns Summary Report
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: v3-email-reporting.getallbulkemailcampaignsummaries
      with:
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.