digitalpublic-com Project API

The Project API from digitalpublic-com — 1 operation(s) for project.

Operations 1

POST /api/projects/agent-query Project information #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/digitalpublic-com:digitalpublic-com-project-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

digitalpublic-com-project-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DigitalPublic Agent Project API
  version: 2026-09-10-trial-active-projects-v1
  description: API for external AI agents to interact with DigitalPublic projects. Provides discovery, project context, Google Ads, Meta Ads, LinkedIn organic and LinkedIn Ads, Merchant Center, SEO, AEO, Search Console, WordPress, Analytics, Tag Manager, Business Profile, mailings, CRM, comments, reports, and scheduling.
  contact:
    email: soporte@digitalpublic.com
servers:
- url: https://platform.digitalpublic.com
  description: Production
security:
- bearerAuth: []
tags:
- name: Project
paths:
  /api/projects/agent-query:
    post:
      summary: Project information
      description: Get metadata about the project linked to this API key and manage draft emails.
      tags:
      - Project
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentResponse'
      x-tools:
      - name: get_project_info
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          processEligible: true
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
        description: Returns project name, description, URL, secret-redacted context, email defaults, creation date, and connected services (Google Ads, SEO, Search Console, Analytics).
        params: {}
      - name: update_project_context
        description: Updates the free-form project context/instructions used by agents. Credentials must be stored in their provider connection or an approved secret vault. Requires write scope.
        params:
          content:
            type: string
            required: true
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: list_activity
        description: List recent project activity/audit timeline entries visible to agents.
        params:
          limit:
            type: number
            optional: true
            default: 50
          actor:
            type: string
            optional: true
            enum:
            - USER
            - AGENT
            - SYSTEM
          area:
            type: string
            optional: true
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
      - name: list_messages
        description: List recent project messages visible to agents, optionally filtered by channel slug.
        params:
          channel:
            type: string
            optional: true
          limit:
            type: number
            optional: true
            default: 50
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
      - name: post_message
        description: Post a project message as the authenticated API key. Requires write scope.
        params:
          content:
            type: string
            required: true
          channel:
            type: string
            optional: true
            default: general
          parentId:
            type: string
            optional: true
          visibility:
            type: string
            optional: true
            enum:
            - all
            - agents
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: reply_message
        description: Reply to an existing project message as the authenticated API key. Requires write scope.
        params:
          parentId:
            type: string
            required: true
          content:
            type: string
            required: true
          channel:
            type: string
            optional: true
            default: general
          visibility:
            type: string
            optional: true
            enum:
            - all
            - agents
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: get_email_draft
        description: Reads an existing project email by ID. Read-only; does not require write scope. Returns full bodyHtml, derived bodyText, recipients, safe email account metadata, attachments, and audit dates. Agents should call this before updating a draft that may have been edited by a human.
        params:
          id:
            type: string
            required: true
        response:
          id: string
          projectId: string
          status: DRAFT | AUTHORIZED | SENT
          subject: string
          bodyHtml: string
          bodyText: string
          to: array
          cc: array
          bcc: array
          emailAccount: '{ id, name, fromName, fromEmail } | null'
          attachments: array
          createdAt: ISO8601 string
          updatedAt: ISO8601 string
          authorizedAt: ISO8601 string | null
          authorizedBy: object | null
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
      - name: list_email_drafts
        description: Lists project emails with a compact payload that omits full bodyHtml. Read-only; does not require write scope. Use it to find DRAFT, AUTHORIZED, or SENT emails before calling get_email_draft.
        params:
          status:
            type: string
            optional: true
            enum:
            - DRAFT
            - AUTHORIZED
            - SENT
          limit:
            type: number
            optional: true
            default: 20
            description: Clamped between 1 and 100.
          since:
            type: string
            optional: true
            description: ISO date; filters by updatedAt >= since.
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
      - name: list_email_conversations
        description: Lists project email conversations and their timelines.
        params:
          leadId:
            type: string
            optional: true
          status:
            type: string
            optional: true
            enum:
            - OPEN
            - ACTION_REQUIRED
            - WAITING_EXTERNAL
            - CLOSED
          limit:
            type: number
            optional: true
          cursor:
            type: string
            optional: true
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
      - name: find_email_conversations_for_lead
        description: Finds conversations for one CRM lead.
        params:
          leadId:
            type: string
            required: true
          limit:
            type: number
            optional: true
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
      - name: get_email_conversation
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          processEligible: true
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
        description: Returns one full conversation timeline.
        params:
          conversationId:
            type: string
            required: true
      - name: create_email_draft
        description: Creates a DRAFT email. A stable idempotencyKey makes retries safe. CRM_LEAD resolves the recipient from a lead in the authorized project; agents cannot supply an arbitrary address. Human authorization is always required before sending.
        params:
          subject:
            type: string
            required: true
          bodyHtml:
            type: string
            required: true
          audience:
            type: string
            optional: true
            enum:
            - CLIENT_FINAL
            - DISTRIBUTOR
            description: Required for FLEXIBLE projects. CRM_ONLY projects must use targetType CRM_LEAD and leadId instead.
          purpose:
            type: string
            optional: true
            enum:
            - MONTHLY_REPORT
            - TECHNICAL_REPORT
            - GENERAL_EMAIL
            - APPROVAL_REQUEST
            - COMMERCIAL_PROPOSAL
            - QUOTE
            - INFORMATION_REQUEST
          targetType:
            type: string
            optional: true
            enum:
            - STATIC_AUDIENCE
            - CRM_LEAD
          leadId:
            type: string
            optional: true
            description: Required when targetType is CRM_LEAD.
          to:
            type: array
            optional: true
            description: Required only when the project has no active communication route. READY projects resolve recipients from audience and purpose.
          cc:
            type: array
            optional: true
          bcc:
            type: array
            optional: true
          fromName:
            type: string
            optional: true
          fromEmail:
            type: string
            optional: true
          emailAccountId:
            type: string
            optional: true
            description: If omitted, null, or blank, the project default email account is used when configured.
          reportId:
            type: string
            optional: true
          idempotencyKey:
            type: string
            optional: true
            description: Stable project-scoped key for retry-safe draft creation.
          attachments:
            type: array
            optional: true
            description: Report IDs belonging to this project, or internal attachment objects. Invalid or cross-project IDs return 400.
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: create_email_reply_draft
        description: Creates a reply to the latest inbound message in a conversation and preserves RFC threading. Human authorization remains required.
        params:
          conversationId:
            type: string
            optional: true
            description: Preferred conversation ID. Legacy id remains accepted.
          id:
            type: string
            optional: true
          emailAccountId:
            type: string
            optional: true
            description: Allowed sender account configured on the route.
          bodyHtml:
            type: string
            optional: true
            description: Initial reply body; may be blank for later editing.
          includeQuotedHistory:
            type: boolean
            optional: true
            default: true
          reattachAttachmentIds:
            type: array
            optional: true
          idempotencyKey:
            type: string
            optional: true
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: create_email_follow_up_draft
        description: Creates a follow-up in an existing thread only when no inbound reply is pending.
        params:
          conversationId:
            type: string
            required: true
          emailAccountId:
            type: string
            optional: true
            description: Allowed sender account configured on the route.
          bodyHtml:
            type: string
            optional: true
          includeQuotedHistory:
            type: boolean
            optional: true
            default: true
          reattachAttachmentIds:
            type: array
            optional: true
          idempotencyKey:
            type: string
            optional: true
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: defer_email_draft
        description: Defers a draft until a manual date or follows the linked CRM lead nextActionAt. It never schedules an automatic send.
        params:
          id:
            type: string
            required: true
          mode:
            type: string
            required: true
            enum:
            - MANUAL_DATE
            - CRM_NEXT_ACTION
          until:
            type: string
            optional: true
          reason:
            type: string
            optional: true
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: resume_email_draft
        description: Makes an agent-deferred draft actionable now. An agent cannot override a human deferral.
        params:
          id:
            type: string
            required: true
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: update_email_draft
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          processEligible: true
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
        description: 'Updates a DRAFT or AUTHORIZED email. Requires write scope. Missing account/CC/BCC are completed from project defaults when absent on the draft; explicit cc: [] or bcc: [] clears those copies. The signature is always attached from the configured email account and cannot be overridden by agents. If the email was AUTHORIZED, any update automatically reverts it to DRAFT and the response includes revertedFromAuthorized: true.'
        params:
          id:
            type: string
            required: true
          subject:
            type: string
            optional: true
          bodyHtml:
            type: string
            optional: true
          to:
            type: array
            optional: true
          cc:
            type: array
            optional: true
          bcc:
            type: array
            optional: true
          fromName:
            type: string
            optional: true
          fromEmail:
            type: string
            optional: true
          emailAccountId:
            type: string
            optional: true
          reportId:
            type: string
            optional: true
          attachments:
            type: array
            optional: true
            description: Report IDs belonging to this project. Replaces draft attachments when present.
      - name: delete_email_draft
        description: Deletes a DRAFT or AUTHORIZED email. Requires write scope. SENT emails cannot be deleted by this tool.
        params:
          id:
            type: string
            required: true
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: send_email_draft
        description: 'Sends an existing AUTHORIZED email for this project. Requires write scope. Hard security rule: this tool rejects DRAFT emails with HTTP 409. Only a logged-in human using the DigitalPublic UI can move DRAFT -> AUTHORIZED; there is intentionally no agent tool or parameter to authorize drafts.'
        params:
          id:
            type: string
            required: true
          emailAccountId:
            type: string
            optional: true
            description: Optional explicitly assigned account. If omitted, the explicitly assigned project default is used.
        response:
          id: string
          status: SENT
          sentAt: ISO8601 string
          to: array
          cc: array
          bcc: array
          subject: string
          bodyHtml: string
          attachments: array
          messageId: string | null
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: register_external_email_send
        description: Idempotently records an email that was sent outside DigitalPublic. Requires write scope. Stores the exact sanitized HTML body, account, sent date, RFC Message-ID and thread metadata; creates the CRM email_out interaction and reconciles linked processes. Repeating the same Message-ID in the project returns the existing registration.
        params:
          id:
            type: string
            required: true
            description: DRAFT or AUTHORIZED email ID in this project.
          conversationId:
            type: string
            optional: true
            description: Conversation the email must belong to.
          sentAt:
            type: string
            required: true
            description: ISO8601 send date.
          bodyHtml:
            type: string
            required: true
            description: Exact HTML body that was sent.
          messageId:
            type: string
            required: true
            description: RFC Message-ID supplied by the external provider.
          emailAccountId:
            type: string
            optional: true
          inReplyToMessageId:
            type: string
            optional: true
          references:
            type: array
            optional: true
          providerThreadId:
            type: string
            optional: true
          idempotencyKey:
            type: string
            optional: true
            description: Caller-stable key for retries; deduplicated within the project.
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: none
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: list_email_accounts
        description: Lists only the active email accounts explicitly assigned to this project. Historical use never grants access. Read-only; does not require write scope. Returns safe metadata, ownership scope (GLOBAL, GROUP or PROJECT), owner, assignment source, status and default flag, never passwords, tokens or SMTP/OAuth secrets. Use it to discover a permitted emailAccountId before creating or sending email.
        params: {}
        response:
          ok: true
          data: array of { id, name, providerType, fromName, fromEmail, host, port, secure, oauthConnected, scopeType, ownerProject, ownerGroup, status, source, isDefault }
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
      - name: test_email_account
        description: Runs a live connectivity check against one active account explicitly assigned to this project, reusing the same transport verification as the admin UI. Read-only; does not send any email and does not require write scope. Returns safe account metadata plus an actionable failureKind. Rejects unassigned, disabled or scope-incompatible accounts with a stable EMAIL_ACCOUNT_* code. Failures are recorded in the project activity log.
        params:
          emailAccountId:
            type: string
            required: true
            description: Id of an active account explicitly assigned to the project.
        response:
          ok: true
          data: '{ account: { id, name, providerType, fromName, fromEmail, host, port, secure, oauthConnected, oauthEmail, oauthConnectedAt }, test: { ok: boolean, failureKind?, error? } }'
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
      - name: test_project_email_accounts
        description: Runs the connectivity check on every active account explicitly assigned to this project. Read-only; does not send any email and does not require write scope. Returns each account's safe metadata and test result plus a summary { total, passed, failed }. Historical use never adds an account to this list.
        params: {}
        response:
          ok: true
          data: '{ accounts: array of { account, test }, summary: { total, passed, failed } }'
        x-mcp:
          channel: projects
          effect: read
          requiredScope: read
          approval: none
          requestShape: tool_params
          workload:
            executionMode: INLINE
            resourceClass: LIGHT
            priority: INTERACTIVE
            costModel: FIXED
            idempotencyMode: READ_BEFORE_WRITE
      - name: request_email_account_assignment
        description: Proposes assigning a GLOBAL or compatible GROUP account to this project. Requires write scope and always creates a human approval; it never exposes credentials or grants access immediately.
        params:
          emailAccountId:
            type: string
            required: true
          reason:
            type: string
            required: true
          idempotencyKey:
            type: string
            optional: true
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: human
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: request_email_account_revocation
        description: Proposes revoking one explicitly assigned account. Requires write scope and human approval. Future drafts will be blocked if they still reference the revoked account.
        params:
          emailAccountId:
            type: string
            required: true
          reason:
            type: string
            required: true
          idempotencyKey:
            type: string
            optional: true
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: human
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      - name: request_default_email_account
        description: Proposes making one already assigned active account the project default. Requires write scope and human approval.
        params:
          emailAccountId:
            type: string
            required: true
          reason:
            type: string
            required: true
          idempotencyKey:
            type: string
            optional: true
        x-mcp:
          channel: projects
          effect: write
          requiredScope: write
          approval: human
          requestShape: tool_params
          workload:
            executionMode: AUTO
            resourceClass: STANDARD
            priority: NORMAL
            costModel: ITEMS
            idempotencyMode: READ_BEFORE_WRITE
      operationId: postApiProjectsAgentQuery
      x-operation-id-source: derived
components:
  schemas:
    AgentRequest:
      type: object
      required:
      - tool
      properties:
        tool:
          type: string
          description: Tool name to execute
        params:
          type: object
          description: Tool-specific parameters
          default: {}
        projectId:
          type: string
          description: Required when using a dpa_ global agent token. dpk_ project API keys infer the project automatically.
    AgentResponse:
      type: object
      properties:
        ok:
          type: boolean
        status:
          type: string
          description: executed, queued, pending_approval, or a domain-specific status
        operationId:
          type: string
          description: Persistent operation id when work continues in the background.
        resourceClass:
          type: string
          enum:
          - LIGHT
          - STANDARD
          - HEAVY
        retryAfterSeconds:
          type: integer
        data:
          type: object
        error:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Project API key starting with dpk_ or global agent token starting with dpa_. dpa_ requests must include projectId or X-DigitalPublic-Project-Id for project-scoped endpoints.
x-commercial-channels:
- key: google_ads
  label:
    es: Google Ads
    en: Google Ads
  commercialModule: google_ads
  services:
  - googleAds
  mcpChannels:
  - google_ads
  public: true
  availability: generally_available
  access: read_write
  requiresConnection: true
  acceptedAliases:
  - google-ads
- key: wordpress
  label:
    es: WordPress
    en: WordPress
  commercialModule: seo_aeo
  services:
  - wordpressSeo
  mcpChannels:
  - wordpress
  public: true
  availability: generally_available
  access: read_write
  requiresConnection: true
  acceptedAliases:
  - wordpress-seo
- key: crm
  label:
    es: CRM
    en: CRM
  commercialModule: crm
  services:
  - crm
  mcpChannels:
  - crm
  public: true
  availability: generally_available
  access: read_write
  requiresConnection: true
  acceptedAliases: []
- key: websites
  label:
    es: Sitios web
    en: Websites
  commercialModule: content_web
  services:
  - landingPages
  mcpChannels:
  - landing_pages
  public: true
  availability: generally_available
  access: read_write
  requiresConnection: true
  acceptedAliases:
  - landing-pages
  - landing_pages
  - sites-web
  - sites_web
- key: social
  label:
    es: Redes sociales
    en: Social media
  commercialModule: social
  services:
  - socialOrganic
  - socialX
  - socialLinkedIn
  mcpChannels:
  - social
  public: true
  availability: generally_available
  access: read_write
  requiresConnection: true
  acceptedAliases: []
- key: blog
  label:
    es: Blog
    en: Blog
  commercialModule: content_web
  services:
  - blog
  mcpChannels:
  - blog
  public: true
  availability: generally_available
  access: read_write
  requiresConnection: true
  acceptedAliases: []
- key: meta_ads
  label:
    es: Meta Ads
    en: Meta Ads
  commercialModule: meta_ads
  services:
  - metaAds
  mcpChannels:
  - meta_ads
  public: true
  availability: limited
  access: read_write
  requiresConnection: true
  acceptedAliases:
  - meta-ads
  - meta
- key: linkedin_ads
  label:
    es: LinkedIn Ads
    en: LinkedIn Ads
  commercialModule: linkedin_ads
  services:
  - linkedinAds
  mcpChannels:
  - linkedin_ads
  public: true
  availability: limited
  access: read_write
  requiresConnection: true
  acceptedAliases:
  - linkedin-ads
  - linkedin
- key: seo
  label:
    es: SEO y AEO
    en: SEO and AEO
  commercialModule: seo_aeo
  services:
  - seo
  - aeo
  mcpChannels:
  - seo_tools
  - aeo
  public: true
  availability: limited
  access: read_write
  requiresConnection: false
  acceptedAliases: []
- key: analytics
  label:
    es: Analítica
    en: Analytics
  commercialModule: analytics
  services:
  - analytics
  mcpChannels:
  - analytics
  public: true
  availability: limited
  access: read
  requiresConnection: true
  acceptedAliases: []
- key: search_console
  label:
    es: Search Console
    en: Search Console
  commercialModule: search_console
  services:
  - searchConsole
  mcpChannels:
  - search_console
  public: true
  availability: limited
  access: read_write
  requiresConnection: true
  acceptedAliases:
  - search-console
- key: email
  label:
    es: Email y newsletters
    en: Email and newsletters
  commercialModule: email_marketing
  services:
  - mailings
  mcpChannels:
  - mailings
  public: true
  availability: limited
  access: read_write
  requiresConnection: true
  acceptedAliases:
  - brevo