Springer Nature Capabilities

Naftiko 0.5 capability definitions for Springer Nature - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

Retrieves the Altmetric attention score and social media mentions for a published article by DOI.

naftiko: "0.5"
info:
  label: "Altmetric Score Lookup"
  description: "Retrieves the Altmetric attention score and social media mentions for a published article by DOI."
  tags:
    - analytics
    - publishing
    - social-media
capability:
  exposes:
    - type: mcp
      namespace: altmetrics
      port: 8080
      tools:
        - name: get-altmetric-score
          description: "Get the Altmetric attention score and breakdown for an article by DOI."
          inputParameters:
            - name: doi
              in: body
              type: string
              description: "The article DOI."
          call: "altmetric.get-doi"
          with:
            doi: "{{doi}}"
  consumes:
    - type: http
      namespace: altmetric
      baseUri: "https://api.altmetric.com/v1"
      authentication:
        type: apiKey
        key: "$secrets.altmetric_api_key"
      resources:
        - name: articles
          path: "/doi/{{doi}}"
          inputParameters:
            - name: doi
              in: path
          operations:
            - name: get-doi
              method: GET

Retrieves article preprint status data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Article Preprint Status"
  description: "Retrieves article preprint status data from the Springernature academic publishing systems."
  tags:
    - article
    - springernature
    - status
capability:
  exposes:
    - type: mcp
      namespace: article
      port: 8080
      tools:
        - name: article-preprint-status
          description: "Retrieves article preprint status data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.article-preprint-status"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/article/preprint/status/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: article-preprint-status
              method: GET

Generates an APC invoice for an open access article, creates the invoice in SAP, and sends it to the corresponding author via MailChimp.

naftiko: "0.5"
info:
  label: "Article Processing Charge Invoice Orchestrator"
  description: "Generates an APC invoice for an open access article, creates the invoice in SAP, and sends it to the corresponding author via MailChimp."
  tags:
    - open-access
    - finance
    - sap
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: apc-billing
      port: 8080
      tools:
        - name: generate-apc-invoice
          description: "Generate and send an Article Processing Charge invoice for an OA article."
          inputParameters:
            - name: manuscript_id
              in: body
              type: string
              description: "The manuscript ID."
            - name: apc_amount
              in: body
              type: string
              description: "The APC amount in EUR."
          steps:
            - name: get-manuscript
              type: call
              call: "editorial-api.get-manuscript"
              with:
                id: "{{manuscript_id}}"
            - name: create-invoice
              type: call
              call: "sap.create-invoice"
              with:
                customer_name: "{{get-manuscript.corresponding_author_name}}"
                customer_email: "{{get-manuscript.corresponding_author_email}}"
                amount: "{{apc_amount}}"
                description: "APC for: {{get-manuscript.title}}"
            - name: send-invoice
              type: call
              call: "mailchimp.send-transactional"
              with:
                template_name: "apc_invoice"
                to_email: "{{get-manuscript.corresponding_author_email}}"
                merge_vars:
                  author_name: "{{get-manuscript.corresponding_author_name}}"
                  article_title: "{{get-manuscript.title}}"
                  invoice_number: "{{create-invoice.invoice_number}}"
                  amount: "{{apc_amount}}"
  consumes:
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: manuscripts
          path: "/manuscripts/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-manuscript
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://sap.springernature.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: invoices
          path: "/A_BillingDocument"
          operations:
            - name: create-invoice
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: apiKey
        key: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST

Retrieves article supplementary materials data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Article Supplementary Materials"
  description: "Retrieves article supplementary materials data from the Springernature academic publishing systems."
  tags:
    - article
    - springernature
    - materials
capability:
  exposes:
    - type: mcp
      namespace: article
      port: 8080
      tools:
        - name: article-supplementary-materials
          description: "Retrieves article supplementary materials data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.article-supplementary-materials"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/article/supplementary/materials/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: article-supplementary-materials
              method: GET

Retrieves COUNTER-compliant usage statistics for a journal and pushes a summary report to a SharePoint dashboard for the publishing team.

naftiko: "0.5"
info:
  label: "Article Usage Statistics Reporter"
  description: "Retrieves COUNTER-compliant usage statistics for a journal and pushes a summary report to a SharePoint dashboard for the publishing team."
  tags:
    - analytics
    - publishing
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: usage-analytics
      port: 8080
      tools:
        - name: generate-usage-report
          description: "Pull usage statistics for a journal and push the report to SharePoint."
          inputParameters:
            - name: journal_id
              in: body
              type: string
              description: "The journal identifier."
            - name: report_period
              in: body
              type: string
              description: "The reporting period (e.g., 2026-Q1)."
          steps:
            - name: get-stats
              type: call
              call: "usage-api.get-journal-stats"
              with:
                journal: "{{journal_id}}"
                period: "{{report_period}}"
            - name: upload-report
              type: call
              call: "sharepoint.update-file"
              with:
                site_id: "publishing_analytics"
                file_path: "UsageReports/{{journal_id}}_{{report_period}}.json"
                content: "{{get-stats}}"
  consumes:
    - type: http
      namespace: usage-api
      baseUri: "https://api.springernature.com/usage/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_usage_token"
      resources:
        - name: journal-stats
          path: "/journals/{{journal}}/stats?period={{period}}"
          inputParameters:
            - name: journal
              in: path
            - name: period
              in: query
          operations:
            - name: get-journal-stats
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: update-file
              method: PUT

Retrieves article version history lookup data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Article Version History Lookup"
  description: "Retrieves article version history lookup data from the Springernature academic publishing systems."
  tags:
    - article
    - springernature
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: article
      port: 8080
      tools:
        - name: article-version-history-lookup
          description: "Retrieves article version history lookup data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.article-version-history-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/article/version/history/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: article-version-history-lookup
              method: GET

Retrieves author affiliation verification data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Author Affiliation Verification"
  description: "Retrieves author affiliation verification data from the Springernature academic publishing systems."
  tags:
    - author
    - springernature
    - verification
capability:
  exposes:
    - type: mcp
      namespace: author
      port: 8080
      tools:
        - name: author-affiliation-verification
          description: "Retrieves author affiliation verification data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.author-affiliation-verification"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/author/affiliation/verification/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: author-affiliation-verification
              method: GET

Orchestrates author engagement campaign pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Author Engagement Campaign Pipeline"
  description: "Orchestrates author engagement campaign pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - author
    - springernature
    - jira
    - teams
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: author
      port: 8080
      tools:
        - name: author-engagement-campaign-pipeline
          description: "Orchestrates author engagement campaign pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "jira.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/author"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/author"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/author"
          operations:
            - name: execute-3
              method: POST

Verifies an author's ORCID identifier and retrieves their publication history from the ORCID registry.

naftiko: "0.5"
info:
  label: "Author ORCID Verification"
  description: "Verifies an author's ORCID identifier and retrieves their publication history from the ORCID registry."
  tags:
    - editorial
    - authors
    - identity
capability:
  exposes:
    - type: mcp
      namespace: author-verification
      port: 8080
      tools:
        - name: verify-orcid
          description: "Verify an ORCID ID and retrieve the associated author profile and publication history."
          inputParameters:
            - name: orcid_id
              in: body
              type: string
              description: "The ORCID identifier (e.g., 0000-0002-1825-0097)."
          call: "orcid.get-record"
          with:
            orcid: "{{orcid_id}}"
  consumes:
    - type: http
      namespace: orcid
      baseUri: "https://pub.orcid.org/v3.0"
      authentication:
        type: bearer
        token: "$secrets.orcid_token"
      resources:
        - name: records
          path: "/{{orcid}}/record"
          inputParameters:
            - name: orcid
              in: path
          operations:
            - name: get-record
              method: GET

Retrieves author publication history data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Author Publication History"
  description: "Retrieves author publication history data from the Springernature academic publishing systems."
  tags:
    - author
    - springernature
    - history
capability:
  exposes:
    - type: mcp
      namespace: author
      port: 8080
      tools:
        - name: author-publication-history
          description: "Retrieves author publication history data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.author-publication-history"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/author/publication/history/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: author-publication-history
              method: GET

Orchestrates author royalty calculation pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Author Royalty Calculation Pipeline"
  description: "Orchestrates author royalty calculation pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - author
    - springernature
    - sendgrid
    - confluence
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: author
      port: 8080
      tools:
        - name: author-royalty-calculation-pipeline
          description: "Orchestrates author royalty calculation pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sendgrid.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "confluence.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/author"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: confluence-resource
          path: "/api/author"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/author"
          operations:
            - name: execute-3
              method: POST

Retrieves the latest royalty statement for a book author from the royalty management system.

naftiko: "0.5"
info:
  label: "Author Royalty Statement Retrieval"
  description: "Retrieves the latest royalty statement for a book author from the royalty management system."
  tags:
    - publishing
    - royalties
    - finance
capability:
  exposes:
    - type: mcp
      namespace: royalties
      port: 8080
      tools:
        - name: get-royalty-statement
          description: "Retrieve the latest royalty statement for a book author by author ID."
          inputParameters:
            - name: author_id
              in: body
              type: string
              description: "The author identifier."
          call: "royalty-api.get-statement"
          with:
            author: "{{author_id}}"
  consumes:
    - type: http
      namespace: royalty-api
      baseUri: "https://api.springernature.com/royalties/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_royalty_token"
      resources:
        - name: statements
          path: "/authors/{{author}}/statements/latest"
          inputParameters:
            - name: author
              in: path
          operations:
            - name: get-statement
              method: GET

Orchestrates author services marketplace pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Author Services Marketplace Pipeline"
  description: "Orchestrates author services marketplace pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - author
    - springernature
    - sendgrid
    - confluence
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: author
      port: 8080
      tools:
        - name: author-services-marketplace-pipeline
          description: "Orchestrates author services marketplace pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sendgrid.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "confluence.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/author"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: confluence-resource
          path: "/api/author"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/author"
          operations:
            - name: execute-3
              method: POST

Checks the latest deployment status for a specified Azure DevOps release pipeline.

naftiko: "0.5"
info:
  label: "Azure DevOps Deployment Status"
  description: "Checks the latest deployment status for a specified Azure DevOps release pipeline."
  tags:
    - devops
    - azure-devops
    - deployments
capability:
  exposes:
    - type: mcp
      namespace: devops
      port: 8080
      tools:
        - name: get-deployment-status
          description: "Get the latest deployment status for an Azure DevOps release pipeline."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: release_definition_id
              in: body
              type: string
              description: "The release definition ID."
          call: "azdo.get-latest-release"
          with:
            project: "{{project_name}}"
            definition_id: "{{release_definition_id}}"
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://vsrm.dev.azure.com/springernature"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azdo_pat"
      resources:
        - name: releases
          path: "/{{project}}/_apis/release/releases?definitionId={{definition_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: definition_id
              in: query
          operations:
            - name: get-latest-release
              method: GET

Orchestrates book award nomination pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Book Award Nomination Pipeline"
  description: "Orchestrates book award nomination pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - book
    - springernature
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: book
      port: 8080
      tools:
        - name: book-award-nomination-pipeline
          description: "Orchestrates book award nomination pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/book"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/book"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/book"
          operations:
            - name: execute-3
              method: POST

Retrieves book chapter metadata data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Book Chapter Metadata"
  description: "Retrieves book chapter metadata data from the Springernature academic publishing systems."
  tags:
    - book
    - springernature
    - metadata
capability:
  exposes:
    - type: mcp
      namespace: book
      port: 8080
      tools:
        - name: book-chapter-metadata
          description: "Retrieves book chapter metadata data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.book-chapter-metadata"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/book/chapter/metadata/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: book-chapter-metadata
              method: GET

Orchestrates book marketing campaign pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Book Marketing Campaign Pipeline"
  description: "Orchestrates book marketing campaign pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - book
    - springernature
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: book
      port: 8080
      tools:
        - name: book-marketing-campaign-pipeline
          description: "Orchestrates book marketing campaign pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/book"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/book"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/book"
          operations:
            - name: execute-3
              method: POST

Orchestrates book production workflow pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Book Production Workflow Pipeline"
  description: "Orchestrates book production workflow pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - book
    - springernature
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: book
      port: 8080
      tools:
        - name: book-production-workflow-pipeline
          description: "Orchestrates book production workflow pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/book"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/book"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/book"
          operations:
            - name: execute-3
              method: POST

When a book proposal is submitted, retrieves the proposal details, searches for potential series editors in the editorial database, and creates a Jira evaluation ticket.

naftiko: "0.5"
info:
  label: "Book Proposal Evaluation Orchestrator"
  description: "When a book proposal is submitted, retrieves the proposal details, searches for potential series editors in the editorial database, and creates a Jira evaluation ticket."
  tags:
    - publishing
    - books
    - jira
    - editorial
capability:
  exposes:
    - type: mcp
      namespace: book-proposals
      port: 8080
      tools:
        - name: evaluate-book-proposal
          description: "Process a new book proposal by finding suitable series editors and creating an evaluation task."
          inputParameters:
            - name: proposal_id
              in: body
              type: string
              description: "The book proposal ID."
          steps:
            - name: get-proposal
              type: call
              call: "publishing-api.get-proposal"
              with:
                id: "{{proposal_id}}"
            - name: find-editors
              type: call
              call: "editorial-api.search-editors"
              with:
                subject: "{{get-proposal.subject_area}}"
                type: "series_editor"
            - name: create-task
              type: call
              call: "jira.create-issue"
              with:
                project: "BOOKPROP"
                summary: "Evaluate: {{get-proposal.title}}"
                description: "Proposal from {{get-proposal.author_name}}. Subject: {{get-proposal.subject_area}}. Potential editors: {{find-editors.editor_names}}."
                issuetype: "Task"
  consumes:
    - type: http
      namespace: publishing-api
      baseUri: "https://api.springernature.com/publishing/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_publishing_token"
      resources:
        - name: proposals
          path: "/proposals/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-proposal
              method: GET
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: editors
          path: "/editors/search"
          operations:
            - name: search-editors
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Retrieves book proposal status lookup data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Book Proposal Status Lookup"
  description: "Retrieves book proposal status lookup data from the Springernature academic publishing systems."
  tags:
    - book
    - springernature
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: book
      port: 8080
      tools:
        - name: book-proposal-status-lookup
          description: "Retrieves book proposal status lookup data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.book-proposal-status-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/book/proposal/status/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: book-proposal-status-lookup
              method: GET

Retrieves book series catalog search data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Book Series Catalog Search"
  description: "Retrieves book series catalog search data from the Springernature academic publishing systems."
  tags:
    - book
    - springernature
    - search
capability:
  exposes:
    - type: mcp
      namespace: book
      port: 8080
      tools:
        - name: book-series-catalog-search
          description: "Retrieves book series catalog search data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.book-series-catalog-search"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/book/series/catalog/search/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: book-series-catalog-search
              method: GET

Orchestrates book translation coordination pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Book Translation Coordination Pipeline"
  description: "Orchestrates book translation coordination pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - book
    - springernature
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: book
      port: 8080
      tools:
        - name: book-translation-coordination-pipeline
          description: "Orchestrates book translation coordination pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/book"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/book"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/book"
          operations:
            - name: execute-3
              method: POST

Uploads or retrieves manuscript files from Box cloud storage for the editorial workflow.

naftiko: "0.5"
info:
  label: "Box Manuscript File Manager"
  description: "Uploads or retrieves manuscript files from Box cloud storage for the editorial workflow."
  tags:
    - editorial
    - box
    - documents
capability:
  exposes:
    - type: mcp
      namespace: file-mgmt
      port: 8080
      tools:
        - name: get-manuscript-file
          description: "Retrieve a manuscript file from Box by manuscript ID."
          inputParameters:
            - name: manuscript_id
              in: body
              type: string
              description: "The manuscript ID."
          call: "box.search-files"
          with:
            query: "{{manuscript_id}}"
  consumes:
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: search
          path: "/search?query={{query}}"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search-files
              method: GET

Retrieves citation data for an article from Crossref and generates a citation network summary including citing articles, total citations, and h-index impact.

naftiko: "0.5"
info:
  label: "Citation Network Analyzer"
  description: "Retrieves citation data for an article from Crossref and generates a citation network summary including citing articles, total citations, and h-index impact."
  tags:
    - analytics
    - publishing
    - citations
capability:
  exposes:
    - type: mcp
      namespace: citation-analytics
      port: 8080
      tools:
        - name: analyze-citations
          description: "Retrieve and analyze the citation network for a published article."
          inputParameters:
            - name: doi
              in: body
              type: string
              description: "The article DOI."
          steps:
            - name: get-citations
              type: call
              call: "crossref.get-citations"
              with:
                doi: "{{doi}}"
            - name: get-article
              type: call
              call: "springerlink.get-article"
              with:
                doi: "{{doi}}"
  consumes:
    - type: http
      namespace: crossref
      baseUri: "https://api.crossref.org"
      authentication:
        type: apiKey
        key: "$secrets.crossref_token"
      resources:
        - name: citations
          path: "/works/{{doi}}"
          inputParameters:
            - name: doi
              in: path
          operations:
            - name: get-citations
              method: GET
    - type: http
      namespace: springerlink
      baseUri: "https://api.springernature.com/meta/v2"
      authentication:
        type: apiKey
        key: "$secrets.springernature_api_key"
      resources:
        - name: articles
          path: "/json?q=doi:{{doi}}"
          inputParameters:
            - name: doi
              in: query
          operations:
            - name: get-article
              method: GET

Purges the Cloudflare CDN cache for specified URL patterns on SpringerLink or Nature.com.

naftiko: "0.5"
info:
  label: "Cloudflare CDN Cache Purge"
  description: "Purges the Cloudflare CDN cache for specified URL patterns on SpringerLink or Nature.com."
  tags:
    - infrastructure
    - cloudflare
    - cdn
capability:
  exposes:
    - type: mcp
      namespace: cdn-ops
      port: 8080
      tools:
        - name: purge-cdn-cache
          description: "Purge the Cloudflare CDN cache for specified URL patterns."
          inputParameters:
            - name: url_patterns
              in: body
              type: array
              description: "List of URL patterns to purge."
          call: "cloudflare.purge-cache"
          with:
            zone_id: "$secrets.cloudflare_zone_id"
            files: "{{url_patterns}}"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: cache
          path: "/zones/{{zone_id}}/purge_cache"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: purge-cache
              method: POST

Orchestrates conference proceedings production pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Conference Proceedings Production Pipeline"
  description: "Orchestrates conference proceedings production pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - conference
    - springernature
    - datadog
    - springernature
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: conference
      port: 8080
      tools:
        - name: conference-proceedings-production-pipeline
          description: "Orchestrates conference proceedings production pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "springernature.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/conference"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: springernature-resource
          path: "/api/conference"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/conference"
          operations:
            - name: execute-3
              method: POST

Processes a batch of conference proceedings papers by registering DOIs, depositing metadata with Crossref, and publishing them on SpringerLink.

naftiko: "0.5"
info:
  label: "Conference Proceedings Publisher Orchestrator"
  description: "Processes a batch of conference proceedings papers by registering DOIs, depositing metadata with Crossref, and publishing them on SpringerLink."
  tags:
    - publishing
    - conferences
    - doi
    - production
capability:
  exposes:
    - type: mcp
      namespace: proceedings
      port: 8080
      tools:
        - name: publish-proceedings
          description: "Process and publish a batch of conference proceedings including DOI registration and Crossref deposit."
          inputParameters:
            - name: conference_id
              in: body
              type: string
              description: "The conference identifier."
            - name: volume_id
              in: body
              type: string
              description: "The proceedings volume ID."
          steps:
            - name: get-papers
              type: call
              call: "publishing-api.get-proceedings-papers"
              with:
                conference: "{{conference_id}}"
                volume: "{{volume_id}}"
            - name: register-dois
              type: call
              call: "doi-api.register-batch"
              with:
                papers: "{{get-papers.papers}}"
            - name: deposit-metadata
              type: call
              call: "crossref.deposit-batch"
              with:
                papers: "{{register-dois.registered_papers}}"
            - name: publish
              type: call
              call: "production-api.publish-batch"
              with:
                volume: "{{volume_id}}"
                papers: "{{deposit-metadata.deposited_papers}}"
  consumes:
    - type: http
      namespace: publishing-api
      baseUri: "https://api.springernature.com/publishing/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_publishing_token"
      resources:
        - name: proceedings
          path: "/conferences/{{conference}}/volumes/{{volume}}/papers"
          inputParameters:
            - name: conference
              in: path
            - name: volume
              in: path
          operations:
            - name: get-proceedings-papers
              method: GET
    - type: http
      namespace: doi-api
      baseUri: "https://api.springernature.com/doi/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_doi_token"
      resources:
        - name: batch
          path: "/register/batch"
          operations:
            - name: register-batch
              method: POST
    - type: http
      namespace: crossref
      baseUri: "https://api.crossref.org"
      authentication:
        type: basic
        username: "$secrets.crossref_user"
        password: "$secrets.crossref_password"
      resources:
        - name: deposits
          path: "/deposits"
          operations:
            - name: deposit-batch
              method: POST
    - type: http
      namespace: production-api
      baseUri: "https://api.springernature.com/production/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_production_token"
      resources:
        - name: publishing
          path: "/publish/batch"
          operations:
            - name: publish-batch
              method: POST

Creates or updates a Confluence page documenting the editorial workflow for a specific journal.

naftiko: "0.5"
info:
  label: "Confluence Editorial Workflow Documentation"
  description: "Creates or updates a Confluence page documenting the editorial workflow for a specific journal."
  tags:
    - documentation
    - confluence
    - editorial
capability:
  exposes:
    - type: mcp
      namespace: documentation
      port: 8080
      tools:
        - name: update-journal-workflow-doc
          description: "Create or update a Confluence page with the editorial workflow documentation for a journal."
          inputParameters:
            - name: journal_name
              in: body
              type: string
              description: "The journal name."
            - name: workflow_content
              in: body
              type: string
              description: "The workflow documentation content in wiki markup."
          call: "confluence.create-or-update-page"
          with:
            space_key: "EDITORIAL"
            title: "Workflow: {{journal_name}}"
            body: "{{workflow_content}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-or-update-page
              method: POST

Orchestrates content accessibility compliance pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Content Accessibility Compliance Pipeline"
  description: "Orchestrates content accessibility compliance pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - content
    - springernature
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: content
      port: 8080
      tools:
        - name: content-accessibility-compliance-pipeline
          description: "Orchestrates content accessibility compliance pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/content"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/content"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/content"
          operations:
            - name: execute-3
              method: POST

Orchestrates content discovery optimization pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Content Discovery Optimization Pipeline"
  description: "Orchestrates content discovery optimization pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - content
    - springernature
    - datadog
    - springernature
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: content
      port: 8080
      tools:
        - name: content-discovery-optimization-pipeline
          description: "Orchestrates content discovery optimization pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "springernature.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/content"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: springernature-resource
          path: "/api/content"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/content"
          operations:
            - name: execute-3
              method: POST

Orchestrates content metadata enrichment pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Content Metadata Enrichment Pipeline"
  description: "Orchestrates content metadata enrichment pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - content
    - springernature
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: content
      port: 8080
      tools:
        - name: content-metadata-enrichment-pipeline
          description: "Orchestrates content metadata enrichment pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/content"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/content"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/content"
          operations:
            - name: execute-3
              method: POST

Orchestrates content preservation archiving pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Content Preservation Archiving Pipeline"
  description: "Orchestrates content preservation archiving pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - content
    - springernature
    - jira
    - teams
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: content
      port: 8080
      tools:
        - name: content-preservation-archiving-pipeline
          description: "Orchestrates content preservation archiving pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "jira.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/content"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/content"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/content"
          operations:
            - name: execute-3
              method: POST

Checks the rights and permissions status for a piece of content, verifying reuse eligibility and license terms.

naftiko: "0.5"
info:
  label: "Content Rights and Permissions Checker"
  description: "Checks the rights and permissions status for a piece of content, verifying reuse eligibility and license terms."
  tags:
    - publishing
    - licensing
    - rights
capability:
  exposes:
    - type: mcp
      namespace: rights
      port: 8080
      tools:
        - name: check-content-rights
          description: "Check the rights and permissions for a content item by DOI."
          inputParameters:
            - name: doi
              in: body
              type: string
              description: "The DOI of the content."
            - name: usage_type
              in: body
              type: string
              description: "The intended usage type (e.g., reprint, translation, course_pack)."
          call: "rights-api.check-permissions"
          with:
            doi: "{{doi}}"
            usage: "{{usage_type}}"
  consumes:
    - type: http
      namespace: rights-api
      baseUri: "https://api.springernature.com/rights/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_rights_token"
      resources:
        - name: permissions
          path: "/content/{{doi}}/permissions?usage={{usage}}"
          inputParameters:
            - name: doi
              in: path
            - name: usage
              in: query
          operations:
            - name: check-permissions
              method: GET

Orchestrates content rights clearance pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Content Rights Clearance Pipeline"
  description: "Orchestrates content rights clearance pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - content
    - springernature
    - sendgrid
    - confluence
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: content
      port: 8080
      tools:
        - name: content-rights-clearance-pipeline
          description: "Orchestrates content rights clearance pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "sendgrid.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "confluence.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "datadog.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/content"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: confluence-resource
          path: "/api/content"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/content"
          operations:
            - name: execute-3
              method: POST

Orchestrates content syndication pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Content Syndication Pipeline"
  description: "Orchestrates content syndication pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - content
    - springernature
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: content
      port: 8080
      tools:
        - name: content-syndication-pipeline
          description: "Orchestrates content syndication pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/content"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/content"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/content"
          operations:
            - name: execute-3
              method: POST

Retrieves content usage by institution data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Content Usage By Institution"
  description: "Retrieves content usage by institution data from the Springernature academic publishing systems."
  tags:
    - content
    - springernature
    - institution
capability:
  exposes:
    - type: mcp
      namespace: content
      port: 8080
      tools:
        - name: content-usage-by-institution
          description: "Retrieves content usage by institution data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.content-usage-by-institution"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/content/usage/by/institution/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: content-usage-by-institution
              method: GET

Retrieves health status and alerts for Springer Nature digital platform services from Datadog.

naftiko: "0.5"
info:
  label: "Datadog Platform Health Monitor"
  description: "Retrieves health status and alerts for Springer Nature digital platform services from Datadog."
  tags:
    - monitoring
    - datadog
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: platform-health
      port: 8080
      tools:
        - name: get-platform-health
          description: "Get health status and active alerts for SpringerLink and related platform services."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The platform service name."
          call: "datadog.get-service-status"
          with:
            service: "{{service_name}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: services
          path: "/service_summary?service={{service}}"
          inputParameters:
            - name: service
              in: query
          operations:
            - name: get-service-status
              method: GET

Queries Dynatrace for active performance problems on the SpringerLink platform.

naftiko: "0.5"
info:
  label: "Dynatrace SpringerLink Performance"
  description: "Queries Dynatrace for active performance problems on the SpringerLink platform."
  tags:
    - monitoring
    - dynatrace
    - platform
capability:
  exposes:
    - type: mcp
      namespace: springerlink-monitoring
      port: 8080
      tools:
        - name: get-springerlink-problems
          description: "Get active Dynatrace problems affecting the SpringerLink platform."
          inputParameters:
            - name: severity
              in: body
              type: string
              description: "Minimum severity level to filter (AVAILABILITY, ERROR, PERFORMANCE)."
          call: "dynatrace.get-problems"
          with:
            severity: "{{severity}}"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://springernature.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: problems
          path: "/problems?problemSelector=status(\"OPEN\")&severityLevel={{severity}}"
          inputParameters:
            - name: severity
              in: query
          operations:
            - name: get-problems
              method: GET

Searches the editorial board database for members by journal or subject area, returning expertise profiles and availability.

naftiko: "0.5"
info:
  label: "Editorial Board Member Directory"
  description: "Searches the editorial board database for members by journal or subject area, returning expertise profiles and availability."
  tags:
    - editorial
    - peer-review
    - directory
capability:
  exposes:
    - type: mcp
      namespace: editorial-board
      port: 8080
      tools:
        - name: search-board-members
          description: "Search for editorial board members by journal or subject area."
          inputParameters:
            - name: journal_id
              in: body
              type: string
              description: "The journal identifier."
            - name: subject_area
              in: body
              type: string
              description: "Optional subject area filter."
          call: "editorial-api.search-board"
          with:
            journal: "{{journal_id}}"
            subject: "{{subject_area}}"
  consumes:
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: board-members
          path: "/journals/{{journal}}/board?subject={{subject}}"
          inputParameters:
            - name: journal
              in: path
            - name: subject
              in: query
          operations:
            - name: search-board
              method: GET

Orchestrates editorial board recruitment pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Editorial Board Recruitment Pipeline"
  description: "Orchestrates editorial board recruitment pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - editorial
    - springernature
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: editorial
      port: 8080
      tools:
        - name: editorial-board-recruitment-pipeline
          description: "Orchestrates editorial board recruitment pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/editorial"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/editorial"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/editorial"
          operations:
            - name: execute-3
              method: POST

When an editor makes a decision on a manuscript (accept, revise, reject), updates the editorial system, notifies the author via MailChimp, and logs the decision in Salesforce.

naftiko: "0.5"
info:
  label: "Editorial Decision Notification Orchestrator"
  description: "When an editor makes a decision on a manuscript (accept, revise, reject), updates the editorial system, notifies the author via MailChimp, and logs the decision in Salesforce."
  tags:
    - editorial
    - peer-review
    - mailchimp
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: editorial-decisions
      port: 8080
      tools:
        - name: process-editorial-decision
          description: "Process an editorial decision and notify all relevant parties."
          inputParameters:
            - name: manuscript_id
              in: body
              type: string
              description: "The manuscript ID."
            - name: decision
              in: body
              type: string
              description: "The editorial decision (accept, minor_revision, major_revision, reject)."
            - name: editor_comments
              in: body
              type: string
              description: "The editor's decision comments."
          steps:
            - name: update-status
              type: call
              call: "editorial-api.update-decision"
              with:
                id: "{{manuscript_id}}"
                decision: "{{decision}}"
                comments: "{{editor_comments}}"
            - name: get-manuscript
              type: call
              call: "editorial-api.get-manuscript"
              with:
                id: "{{manuscript_id}}"
            - name: notify-author
              type: call
              call: "mailchimp.send-transactional"
              with:
                template_name: "editorial_decision_{{decision}}"
                to_email: "{{get-manuscript.corresponding_author_email}}"
                merge_vars:
                  author_name: "{{get-manuscript.corresponding_author_name}}"
                  title: "{{get-manuscript.title}}"
                  journal: "{{get-manuscript.journal}}"
                  decision: "{{decision}}"
                  comments: "{{editor_comments}}"
            - name: log-decision
              type: call
              call: "salesforce.create-activity"
              with:
                object: "Manuscript__c"
                record_id: "{{manuscript_id}}"
                activity_type: "editorial_decision"
                details: "Decision: {{decision}} by {{get-manuscript.handling_editor}}"
  consumes:
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: manuscripts
          path: "/manuscripts/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-manuscript
              method: GET
            - name: update-decision
              method: PATCH
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: apiKey
        key: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: activities
          path: "/sobjects/Task"
          operations:
            - name: create-activity
              method: POST

Orchestrates editorial decision tracking pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Editorial Decision Tracking Pipeline"
  description: "Orchestrates editorial decision tracking pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - editorial
    - springernature
    - confluence
    - datadog
    - springernature
capability:
  exposes:
    - type: mcp
      namespace: editorial
      port: 8080
      tools:
        - name: editorial-decision-tracking-pipeline
          description: "Orchestrates editorial decision tracking pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "confluence.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "springernature.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: confluence-resource
          path: "/api/editorial"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/editorial"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: springernature-resource
          path: "/api/editorial"
          operations:
            - name: execute-3
              method: POST

Orchestrates editorial workflow automation pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Editorial Workflow Automation Pipeline"
  description: "Orchestrates editorial workflow automation pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - editorial
    - springernature
    - snowflake
    - slack
    - jira
capability:
  exposes:
    - type: mcp
      namespace: editorial
      port: 8080
      tools:
        - name: editorial-workflow-automation-pipeline
          description: "Orchestrates editorial workflow automation pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "snowflake.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "slack.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "jira.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/editorial"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/editorial"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/editorial"
          operations:
            - name: execute-3
              method: POST

When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "When a new hire is created in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Orchestrate the full onboarding process for a new Springer Nature employee."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID."
            - name: start_date
              in: body
              type: string
              description: "The start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to Springer Nature, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves page views, unique visitors, and engagement metrics from Google Analytics for SpringerLink content pages.

naftiko: "0.5"
info:
  label: "Google Analytics Content Performance"
  description: "Retrieves page views, unique visitors, and engagement metrics from Google Analytics for SpringerLink content pages."
  tags:
    - analytics
    - google-analytics
    - content
capability:
  exposes:
    - type: mcp
      namespace: content-analytics
      port: 8080
      tools:
        - name: get-content-performance
          description: "Get Google Analytics performance metrics for SpringerLink content."
          inputParameters:
            - name: content_path
              in: body
              type: string
              description: "The URL path of the content page."
            - name: date_range
              in: body
              type: string
              description: "The date range (e.g., last_7_days, last_30_days)."
          call: "ga.get-report"
          with:
            page_path: "{{content_path}}"
            range: "{{date_range}}"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          operations:
            - name: get-report
              method: POST

Retrieves a shared document from Google Drive by file ID.

naftiko: "0.5"
info:
  label: "Google Drive Shared Document Retrieval"
  description: "Retrieves a shared document from Google Drive by file ID."
  tags:
    - documents
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: google-docs
      port: 8080
      tools:
        - name: get-drive-document
          description: "Retrieve a shared document from Google Drive."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Google Drive file ID."
          call: "gdrive.get-file"
          with:
            id: "{{file_id}}"
  consumes:
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files/{{id}}?alt=media"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-file
              method: GET

Syncs author and reviewer contacts from the editorial system to HubSpot for marketing communications.

naftiko: "0.5"
info:
  label: "HubSpot Marketing Contact Sync"
  description: "Syncs author and reviewer contacts from the editorial system to HubSpot for marketing communications."
  tags:
    - marketing
    - hubspot
    - contacts
capability:
  exposes:
    - type: mcp
      namespace: marketing-contacts
      port: 8080
      tools:
        - name: sync-contacts-to-hubspot
          description: "Sync a batch of editorial contacts to HubSpot CRM."
          inputParameters:
            - name: contact_type
              in: body
              type: string
              description: "The contact type (author, reviewer, editor)."
            - name: journal_id
              in: body
              type: string
              description: "The journal identifier to sync contacts for."
          steps:
            - name: get-contacts
              type: call
              call: "editorial-api.get-contacts"
              with:
                type: "{{contact_type}}"
                journal: "{{journal_id}}"
            - name: upsert-contacts
              type: call
              call: "hubspot.batch-upsert"
              with:
                contacts: "{{get-contacts.contacts}}"
  consumes:
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: contacts
          path: "/journals/{{journal}}/contacts?type={{type}}"
          inputParameters:
            - name: journal
              in: path
            - name: type
              in: query
          operations:
            - name: get-contacts
              method: GET
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/objects/contacts/batch/upsert"
          operations:
            - name: batch-upsert
              method: POST

Orchestrates institutional agreement renewal pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Institutional Agreement Renewal Pipeline"
  description: "Orchestrates institutional agreement renewal pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - institutional
    - springernature
    - teams
    - sendgrid
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: institutional
      port: 8080
      tools:
        - name: institutional-agreement-renewal-pipeline
          description: "Orchestrates institutional agreement renewal pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sendgrid.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "confluence.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/institutional"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/institutional"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: confluence-resource
          path: "/api/institutional"
          operations:
            - name: execute-3
              method: POST

Retrieves institutional deal terms lookup data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Institutional Deal Terms Lookup"
  description: "Retrieves institutional deal terms lookup data from the Springernature academic publishing systems."
  tags:
    - institutional
    - springernature
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: institutional
      port: 8080
      tools:
        - name: institutional-deal-terms-lookup
          description: "Retrieves institutional deal terms lookup data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.institutional-deal-terms-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/institutional/deal/terms/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: institutional-deal-terms-lookup
              method: GET

When an institutional subscription approaches expiry, retrieves usage analytics, generates a renewal proposal in Salesforce, and sends the proposal to the library contact via MailChimp.

naftiko: "0.5"
info:
  label: "Institutional Subscription Renewal Orchestrator"
  description: "When an institutional subscription approaches expiry, retrieves usage analytics, generates a renewal proposal in Salesforce, and sends the proposal to the library contact via MailChimp."
  tags:
    - subscriptions
    - salesforce
    - mailchimp
    - renewals
capability:
  exposes:
    - type: mcp
      namespace: subscription-renewal
      port: 8080
      tools:
        - name: process-renewal
          description: "Generate and send a subscription renewal proposal based on usage data."
          inputParameters:
            - name: institution_id
              in: body
              type: string
              description: "The institution identifier."
            - name: subscription_id
              in: body
              type: string
              description: "The subscription identifier."
          steps:
            - name: get-subscription
              type: call
              call: "subscription-api.get-subscription"
              with:
                id: "{{subscription_id}}"
            - name: get-usage
              type: call
              call: "usage-api.get-institution-stats"
              with:
                institution: "{{institution_id}}"
            - name: create-opportunity
              type: call
              call: "salesforce.create-opportunity"
              with:
                name: "Renewal: {{get-subscription.institution_name}} - {{get-subscription.collection}}"
                amount: "{{get-subscription.renewal_amount}}"
                close_date: "{{get-subscription.expiry_date}}"
                usage_data: "{{get-usage}}"
            - name: send-proposal
              type: call
              call: "mailchimp.send-transactional"
              with:
                template_name: "subscription_renewal"
                to_email: "{{get-subscription.library_contact_email}}"
                merge_vars:
                  institution_name: "{{get-subscription.institution_name}}"
                  total_downloads: "{{get-usage.total_downloads}}"
                  renewal_amount: "{{get-subscription.renewal_amount}}"
  consumes:
    - type: http
      namespace: subscription-api
      baseUri: "https://api.springernature.com/subscriptions/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_subscription_token"
      resources:
        - name: subscriptions
          path: "/subscriptions/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-subscription
              method: GET
    - type: http
      namespace: usage-api
      baseUri: "https://api.springernature.com/usage/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_usage_token"
      resources:
        - name: institution-stats
          path: "/institutions/{{institution}}/stats"
          inputParameters:
            - name: institution
              in: path
          operations:
            - name: get-institution-stats
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity"
          operations:
            - name: create-opportunity
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: apiKey
        key: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST

Retrieves the current sprint issues from a Jira editorial project board, showing status and assignees.

naftiko: "0.5"
info:
  label: "Jira Editorial Sprint Board"
  description: "Retrieves the current sprint issues from a Jira editorial project board, showing status and assignees."
  tags:
    - project-management
    - jira
    - editorial
capability:
  exposes:
    - type: mcp
      namespace: project-mgmt
      port: 8080
      tools:
        - name: get-sprint-issues
          description: "Get all issues in the current sprint for a Jira editorial project."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "The Jira project key (e.g., EDIT, PUB)."
          call: "jira.search-issues"
          with:
            jql: "project={{project_key}} AND sprint in openSprints()"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search?jql={{jql}}"
          inputParameters:
            - name: jql
              in: query
          operations:
            - name: search-issues
              method: GET

Orchestrates journal advertising pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Journal Advertising Pipeline"
  description: "Orchestrates journal advertising pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - journal
    - springernature
    - springernature
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-advertising-pipeline
          description: "Orchestrates journal advertising pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "springernature.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: springernature-resource
          path: "/api/journal"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/journal"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/journal"
          operations:
            - name: execute-3
              method: POST

Resolves a DOI to retrieve full article metadata including title, authors, journal, volume, issue, and publication date.

naftiko: "0.5"
info:
  label: "Journal Article DOI Resolver"
  description: "Resolves a DOI to retrieve full article metadata including title, authors, journal, volume, issue, and publication date."
  tags:
    - publishing
    - metadata
    - doi
capability:
  exposes:
    - type: mcp
      namespace: metadata
      port: 8080
      tools:
        - name: resolve-doi
          description: "Resolve a DOI and return the full article metadata."
          inputParameters:
            - name: doi
              in: body
              type: string
              description: "The Digital Object Identifier to resolve."
          call: "crossref.get-work"
          with:
            doi: "{{doi}}"
  consumes:
    - type: http
      namespace: crossref
      baseUri: "https://api.crossref.org"
      authentication:
        type: apiKey
        key: "$secrets.crossref_token"
      resources:
        - name: works
          path: "/works/{{doi}}"
          inputParameters:
            - name: doi
              in: path
          operations:
            - name: get-work
              method: GET

Retrieves journal editorial calendar data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Journal Editorial Calendar"
  description: "Retrieves journal editorial calendar data from the Springernature academic publishing systems."
  tags:
    - journal
    - springernature
    - calendar
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-editorial-calendar
          description: "Retrieves journal editorial calendar data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.journal-editorial-calendar"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/journal/editorial/calendar/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: journal-editorial-calendar
              method: GET

Orchestrates journal flipping to oa pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Journal Flipping To Oa Pipeline"
  description: "Orchestrates journal flipping to oa pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - journal
    - springernature
    - springernature
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-flipping-to-oa-pipeline
          description: "Orchestrates journal flipping to oa pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "springernature.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: springernature-resource
          path: "/api/journal"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/journal"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/journal"
          operations:
            - name: execute-3
              method: POST

Retrieves the latest impact factor, citescore, and ranking data for a specified journal.

naftiko: "0.5"
info:
  label: "Journal Impact Factor Lookup"
  description: "Retrieves the latest impact factor, citescore, and ranking data for a specified journal."
  tags:
    - analytics
    - publishing
    - metrics
capability:
  exposes:
    - type: mcp
      namespace: journal-metrics
      port: 8080
      tools:
        - name: get-impact-factor
          description: "Look up the latest impact factor and ranking metrics for a journal."
          inputParameters:
            - name: journal_id
              in: body
              type: string
              description: "The journal identifier or ISSN."
          call: "metrics-api.get-journal-metrics"
          with:
            journal: "{{journal_id}}"
  consumes:
    - type: http
      namespace: metrics-api
      baseUri: "https://api.springernature.com/metrics/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_metrics_token"
      resources:
        - name: journals
          path: "/journals/{{journal}}/metrics"
          inputParameters:
            - name: journal
              in: path
          operations:
            - name: get-journal-metrics
              method: GET

Orchestrates journal indexing submission pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Journal Indexing Submission Pipeline"
  description: "Orchestrates journal indexing submission pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - journal
    - springernature
    - springernature
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-indexing-submission-pipeline
          description: "Orchestrates journal indexing submission pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "springernature.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: springernature-resource
          path: "/api/journal"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/journal"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/journal"
          operations:
            - name: execute-3
              method: POST

Orchestrates journal quality metrics pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Journal Quality Metrics Pipeline"
  description: "Orchestrates journal quality metrics pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - journal
    - springernature
    - slack
    - jira
    - teams
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-quality-metrics-pipeline
          description: "Orchestrates journal quality metrics pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/journal"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/journal"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/journal"
          operations:
            - name: execute-3
              method: POST

Orchestrates journal ranking analytics pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Journal Ranking Analytics Pipeline"
  description: "Orchestrates journal ranking analytics pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - journal
    - springernature
    - teams
    - sendgrid
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-ranking-analytics-pipeline
          description: "Orchestrates journal ranking analytics pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sendgrid.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "confluence.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/journal"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/journal"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: confluence-resource
          path: "/api/journal"
          operations:
            - name: execute-3
              method: POST

Retrieves journal rejection rate lookup data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Journal Rejection Rate Lookup"
  description: "Retrieves journal rejection rate lookup data from the Springernature academic publishing systems."
  tags:
    - journal
    - springernature
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-rejection-rate-lookup
          description: "Retrieves journal rejection rate lookup data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.journal-rejection-rate-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/journal/rejection/rate/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: journal-rejection-rate-lookup
              method: GET

Retrieves journal review turnaround metrics data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Journal Review Turnaround Metrics"
  description: "Retrieves journal review turnaround metrics data from the Springernature academic publishing systems."
  tags:
    - journal
    - springernature
    - metrics
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-review-turnaround-metrics
          description: "Retrieves journal review turnaround metrics data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.journal-review-turnaround-metrics"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/journal/review/turnaround/metrics/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: journal-review-turnaround-metrics
              method: GET

Retrieves journal special issue status data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Journal Special Issue Status"
  description: "Retrieves journal special issue status data from the Springernature academic publishing systems."
  tags:
    - journal
    - springernature
    - status
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-special-issue-status
          description: "Retrieves journal special issue status data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.journal-special-issue-status"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/journal/special/issue/status/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: journal-special-issue-status
              method: GET

Retrieves journal submission guidelines lookup data from the Springernature academic publishing systems.

naftiko: "0.5"
info:
  label: "Journal Submission Guidelines Lookup"
  description: "Retrieves journal submission guidelines lookup data from the Springernature academic publishing systems."
  tags:
    - journal
    - springernature
    - lookup
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-submission-guidelines-lookup
          description: "Retrieves journal submission guidelines lookup data from the Springernature academic publishing systems."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The input id."
          call: "springernature.journal-submission-guidelines-lookup"
          with:
            input_id: "{{input_id}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: resource
          path: "/journal/submission/guidelines/lookup/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: journal-submission-guidelines-lookup
              method: GET

Orchestrates journal sustainability reporting pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Journal Sustainability Reporting Pipeline"
  description: "Orchestrates journal sustainability reporting pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - journal
    - springernature
    - teams
    - sendgrid
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: journal
      port: 8080
      tools:
        - name: journal-sustainability-reporting-pipeline
          description: "Orchestrates journal sustainability reporting pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "teams.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "sendgrid.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "confluence.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/journal"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/journal"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: confluence-resource
          path: "/api/journal"
          operations:
            - name: execute-3
              method: POST

Takes a published article's metadata and creates a promotional post on the Springer Nature LinkedIn company page.

naftiko: "0.5"
info:
  label: "LinkedIn Article Promotion Publisher"
  description: "Takes a published article's metadata and creates a promotional post on the Springer Nature LinkedIn company page."
  tags:
    - marketing
    - linkedin
    - publishing
capability:
  exposes:
    - type: mcp
      namespace: social-promotion
      port: 8080
      tools:
        - name: promote-article-linkedin
          description: "Post a promotional update about a newly published article on LinkedIn."
          inputParameters:
            - name: article_doi
              in: body
              type: string
              description: "The DOI of the published article."
            - name: promotional_text
              in: body
              type: string
              description: "The promotional text to accompany the post."
          steps:
            - name: get-article
              type: call
              call: "springerlink.get-article"
              with:
                doi: "{{article_doi}}"
            - name: post-to-linkedin
              type: call
              call: "linkedin.create-share"
              with:
                text: "{{promotional_text}} - {{get-article.title}} by {{get-article.authors}}. Read more: https://doi.org/{{article_doi}}"
  consumes:
    - type: http
      namespace: springerlink
      baseUri: "https://api.springernature.com/meta/v2"
      authentication:
        type: apiKey
        key: "$secrets.springernature_api_key"
      resources:
        - name: articles
          path: "/json?q=doi:{{doi}}"
          inputParameters:
            - name: doi
              in: query
          operations:
            - name: get-article
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: shares
          path: "/shares"
          operations:
            - name: create-share
              method: POST

Orchestrates manuscript production pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Manuscript Production Pipeline"
  description: "Orchestrates manuscript production pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - manuscript
    - springernature
    - jira
    - teams
    - sendgrid
capability:
  exposes:
    - type: mcp
      namespace: manuscript
      port: 8080
      tools:
        - name: manuscript-production-pipeline
          description: "Orchestrates manuscript production pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "jira.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "teams.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "sendgrid.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/manuscript"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/manuscript"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: sendgrid-resource
          path: "/api/manuscript"
          operations:
            - name: execute-3
              method: POST

Queries the manuscript submission system for the current status of a paper by its manuscript ID, returning stage, editor, and timeline information.

naftiko: "0.5"
info:
  label: "Manuscript Submission Status Lookup"
  description: "Queries the manuscript submission system for the current status of a paper by its manuscript ID, returning stage, editor, and timeline information."
  tags:
    - publishing
    - manuscripts
    - editorial
capability:
  exposes:
    - type: mcp
      namespace: editorial
      port: 8080
      tools:
        - name: get-manuscript-status
          description: "Look up the current status of a manuscript submission by ID."
          inputParameters:
            - name: manuscript_id
              in: body
              type: string
              description: "The manuscript submission ID."
          call: "editorial-api.get-manuscript"
          with:
            id: "{{manuscript_id}}"
  consumes:
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: manuscripts
          path: "/manuscripts/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-manuscript
              method: GET

Orchestrates manuscript submission triage pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Manuscript Submission Triage Pipeline"
  description: "Orchestrates manuscript submission triage pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - manuscript
    - springernature
    - springernature
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: manuscript
      port: 8080
      tools:
        - name: manuscript-submission-triage-pipeline
          description: "Orchestrates manuscript submission triage pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "springernature.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "salesforce.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "servicenow.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: springernature-resource
          path: "/api/manuscript"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/manuscript"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/manuscript"
          operations:
            - name: execute-3
              method: POST

Appends monthly subscription revenue data to a Microsoft Excel spreadsheet via the Graph API for finance tracking.

naftiko: "0.5"
info:
  label: "Microsoft Excel Subscription Revenue Tracker"
  description: "Appends monthly subscription revenue data to a Microsoft Excel spreadsheet via the Graph API for finance tracking."
  tags:
    - finance
    - subscriptions
    - microsoft-excel
capability:
  exposes:
    - type: mcp
      namespace: revenue-tracking
      port: 8080
      tools:
        - name: log-subscription-revenue
          description: "Append monthly subscription revenue data to the finance tracking spreadsheet."
          inputParameters:
            - name: month
              in: body
              type: string
              description: "The month in YYYY-MM format."
            - name: collection_name
              in: body
              type: string
              description: "The subscription collection name."
            - name: revenue
              in: body
              type: string
              description: "The monthly revenue amount."
          call: "excel.append-row"
          with:
            workbook_id: "subscription_revenue"
            sheet_name: "MonthlyRevenue"
            values:
              - "{{month}}"
              - "{{collection_name}}"
              - "{{revenue}}"
  consumes:
    - type: http
      namespace: excel
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: worksheets
          path: "/me/drive/items/{{workbook_id}}/workbook/worksheets/{{sheet_name}}/tables/1/rows/add"
          inputParameters:
            - name: workbook_id
              in: path
            - name: sheet_name
              in: path
          operations:
            - name: append-row
              method: POST

Sends an editorial notification message to a specified Microsoft Teams channel for the publishing team.

naftiko: "0.5"
info:
  label: "Microsoft Teams Editorial Alert"
  description: "Sends an editorial notification message to a specified Microsoft Teams channel for the publishing team."
  tags:
    - editorial
    - microsoft-teams
    - notifications
capability:
  exposes:
    - type: mcp
      namespace: editorial-alerts
      port: 8080
      tools:
        - name: send-editorial-alert
          description: "Send a notification to the editorial Microsoft Teams channel."
          inputParameters:
            - name: message
              in: body
              type: string
              description: "The notification message."
            - name: channel
              in: body
              type: string
              description: "The Teams channel name (e.g., journal-updates, manuscript-alerts)."
          call: "msteams.send-channel-message"
          with:
            team_id: "editorial_team"
            channel_id: "{{channel}}"
            text: "{{message}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves application performance metrics from New Relic for SpringerLink and Nature.com platforms.

naftiko: "0.5"
info:
  label: "New Relic Platform Performance"
  description: "Retrieves application performance metrics from New Relic for SpringerLink and Nature.com platforms."
  tags:
    - monitoring
    - new-relic
    - performance
capability:
  exposes:
    - type: mcp
      namespace: platform-perf
      port: 8080
      tools:
        - name: get-platform-performance
          description: "Get performance metrics from New Relic for a Springer Nature platform application."
          inputParameters:
            - name: app_name
              in: body
              type: string
              description: "The application name in New Relic."
          call: "newrelic.get-app-summary"
          with:
            app: "{{app_name}}"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apiKey
        key: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications.json?filter[name]={{app}}"
          inputParameters:
            - name: app
              in: query
          operations:
            - name: get-app-summary
              method: GET

Processes an accepted manuscript for open access publication by assigning a DOI, updating metadata in Crossref, setting the Creative Commons license, and notifying the author via email.

naftiko: "0.5"
info:
  label: "Open Access Article Publisher"
  description: "Processes an accepted manuscript for open access publication by assigning a DOI, updating metadata in Crossref, setting the Creative Commons license, and notifying the author via email."
  tags:
    - open-access
    - publishing
    - doi
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: open-access
      port: 8080
      tools:
        - name: publish-open-access
          description: "Process an accepted manuscript for OA publication including DOI registration, metadata deposit, and author notification."
          inputParameters:
            - name: manuscript_id
              in: body
              type: string
              description: "The manuscript ID."
            - name: license_type
              in: body
              type: string
              description: "The Creative Commons license type (e.g., CC-BY, CC-BY-NC)."
          steps:
            - name: get-manuscript
              type: call
              call: "editorial-api.get-manuscript"
              with:
                id: "{{manuscript_id}}"
            - name: register-doi
              type: call
              call: "doi-api.register-doi"
              with:
                title: "{{get-manuscript.title}}"
                authors: "{{get-manuscript.authors}}"
                journal: "{{get-manuscript.journal}}"
                license: "{{license_type}}"
            - name: deposit-metadata
              type: call
              call: "crossref.deposit-metadata"
              with:
                doi: "{{register-doi.doi}}"
                metadata: "{{get-manuscript}}"
            - name: notify-author
              type: call
              call: "mailchimp.send-transactional"
              with:
                template_name: "oa_publication_confirmation"
                to_email: "{{get-manuscript.corresponding_author_email}}"
                merge_vars:
                  title: "{{get-manuscript.title}}"
                  doi: "{{register-doi.doi}}"
                  license: "{{license_type}}"
  consumes:
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: manuscripts
          path: "/manuscripts/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-manuscript
              method: GET
    - type: http
      namespace: doi-api
      baseUri: "https://api.springernature.com/doi/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_doi_token"
      resources:
        - name: dois
          path: "/register"
          operations:
            - name: register-doi
              method: POST
    - type: http
      namespace: crossref
      baseUri: "https://api.crossref.org"
      authentication:
        type: basic
        username: "$secrets.crossref_user"
        password: "$secrets.crossref_password"
      resources:
        - name: deposits
          path: "/deposits"
          operations:
            - name: deposit-metadata
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: apiKey
        key: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST

Orchestrates open access compliance pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Open Access Compliance Pipeline"
  description: "Orchestrates open access compliance pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - open
    - springernature
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: open
      port: 8080
      tools:
        - name: open-access-compliance-pipeline
          description: "Orchestrates open access compliance pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/open"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/open"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/open"
          operations:
            - name: execute-3
              method: POST

When a manuscript is ready for review, searches for suitable reviewers in the reviewer database, sends invitation emails via MailChimp, and creates tracking entries in Salesforce.

naftiko: "0.5"
info:
  label: "Peer Review Assignment Orchestrator"
  description: "When a manuscript is ready for review, searches for suitable reviewers in the reviewer database, sends invitation emails via MailChimp, and creates tracking entries in Salesforce."
  tags:
    - peer-review
    - editorial
    - mailchimp
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: peer-review
      port: 8080
      tools:
        - name: assign-reviewers
          description: "Find and invite peer reviewers for a manuscript, tracking invitations in Salesforce."
          inputParameters:
            - name: manuscript_id
              in: body
              type: string
              description: "The manuscript submission ID."
            - name: subject_area
              in: body
              type: string
              description: "The subject area or discipline of the manuscript."
            - name: reviewer_count
              in: body
              type: integer
              description: "The number of reviewers to invite."
          steps:
            - name: get-manuscript
              type: call
              call: "editorial-api.get-manuscript"
              with:
                id: "{{manuscript_id}}"
            - name: find-reviewers
              type: call
              call: "reviewer-api.search-reviewers"
              with:
                subject: "{{subject_area}}"
                count: "{{reviewer_count}}"
                exclude_authors: "{{get-manuscript.author_ids}}"
            - name: send-invitations
              type: call
              call: "mailchimp.send-transactional"
              with:
                template_name: "reviewer_invitation"
                recipients: "{{find-reviewers.reviewer_emails}}"
                merge_vars:
                  manuscript_title: "{{get-manuscript.title}}"
                  journal_name: "{{get-manuscript.journal}}"
            - name: track-invitations
              type: call
              call: "salesforce.create-records"
              with:
                object: "Review_Invitation__c"
                records: "{{find-reviewers.reviewer_ids}}"
                manuscript_id: "{{manuscript_id}}"
  consumes:
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: manuscripts
          path: "/manuscripts/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-manuscript
              method: GET
    - type: http
      namespace: reviewer-api
      baseUri: "https://api.springernature.com/reviewers/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_reviewer_token"
      resources:
        - name: reviewers
          path: "/search"
          operations:
            - name: search-reviewers
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: apiKey
        key: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: records
          path: "/sobjects/{{object}}"
          inputParameters:
            - name: object
              in: path
          operations:
            - name: create-records
              method: POST

Orchestrates peer reviewer matching pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Peer Reviewer Matching Pipeline"
  description: "Orchestrates peer reviewer matching pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - peer
    - springernature
    - salesforce
    - servicenow
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: peer
      port: 8080
      tools:
        - name: peer-reviewer-matching-pipeline
          description: "Orchestrates peer reviewer matching pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "salesforce.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "servicenow.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "snowflake.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/peer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/peer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/peer"
          operations:
            - name: execute-3
              method: POST

Submits a manuscript to the plagiarism detection service, retrieves the similarity report, and updates the editorial system with the results.

naftiko: "0.5"
info:
  label: "Plagiarism Check Orchestrator"
  description: "Submits a manuscript to the plagiarism detection service, retrieves the similarity report, and updates the editorial system with the results."
  tags:
    - peer-review
    - quality
    - editorial
capability:
  exposes:
    - type: mcp
      namespace: integrity
      port: 8080
      tools:
        - name: run-plagiarism-check
          description: "Submit a manuscript for plagiarism checking and update the editorial record with results."
          inputParameters:
            - name: manuscript_id
              in: body
              type: string
              description: "The manuscript ID to check."
          steps:
            - name: get-manuscript
              type: call
              call: "editorial-api.get-manuscript-content"
              with:
                id: "{{manuscript_id}}"
            - name: submit-check
              type: call
              call: "plagiarism-api.submit-document"
              with:
                content: "{{get-manuscript.full_text}}"
                title: "{{get-manuscript.title}}"
            - name: update-editorial
              type: call
              call: "editorial-api.update-manuscript"
              with:
                id: "{{manuscript_id}}"
                plagiarism_score: "{{submit-check.similarity_score}}"
                plagiarism_report_url: "{{submit-check.report_url}}"
  consumes:
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: manuscript-content
          path: "/manuscripts/{{id}}/content"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-manuscript-content
              method: GET
        - name: manuscripts
          path: "/manuscripts/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: update-manuscript
              method: PATCH
    - type: http
      namespace: plagiarism-api
      baseUri: "https://api.springernature.com/integrity/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_integrity_token"
      resources:
        - name: submissions
          path: "/submissions"
          operations:
            - name: submit-document
              method: POST

Orchestrates preprint to publication pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Preprint To Publication Pipeline"
  description: "Orchestrates preprint to publication pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - preprint
    - springernature
    - slack
    - jira
    - teams
capability:
  exposes:
    - type: mcp
      namespace: preprint
      port: 8080
      tools:
        - name: preprint-to-publication-pipeline
          description: "Orchestrates preprint to publication pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/preprint"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/preprint"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/preprint"
          operations:
            - name: execute-3
              method: POST

Tracks the production status of articles through typesetting, proofing, and publication stages in the production management system.

naftiko: "0.5"
info:
  label: "Production Pipeline Tracker"
  description: "Tracks the production status of articles through typesetting, proofing, and publication stages in the production management system."
  tags:
    - publishing
    - production
    - workflow
capability:
  exposes:
    - type: mcp
      namespace: production
      port: 8080
      tools:
        - name: get-production-status
          description: "Get the current production pipeline status for an article by manuscript ID."
          inputParameters:
            - name: manuscript_id
              in: body
              type: string
              description: "The manuscript ID."
          call: "production-api.get-status"
          with:
            id: "{{manuscript_id}}"
  consumes:
    - type: http
      namespace: production-api
      baseUri: "https://api.springernature.com/production/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_production_token"
      resources:
        - name: articles
          path: "/articles/{{id}}/status"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-status
              method: GET

When author proofs are ready, retrieves the production status, uploads proofs to Box, and sends a notification to the author via MailChimp with the proof link.

naftiko: "0.5"
info:
  label: "Proof Correction Notification Orchestrator"
  description: "When author proofs are ready, retrieves the production status, uploads proofs to Box, and sends a notification to the author via MailChimp with the proof link."
  tags:
    - production
    - proofing
    - box
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: proofing
      port: 8080
      tools:
        - name: send-proof-notification
          description: "Upload proofs to Box and notify the author with a download link."
          inputParameters:
            - name: manuscript_id
              in: body
              type: string
              description: "The manuscript ID."
            - name: proof_deadline
              in: body
              type: string
              description: "The proof return deadline in YYYY-MM-DD format."
          steps:
            - name: get-production
              type: call
              call: "production-api.get-status"
              with:
                id: "{{manuscript_id}}"
            - name: upload-proof
              type: call
              call: "box.upload-file"
              with:
                folder_id: "proofs"
                file_name: "{{manuscript_id}}_proof.pdf"
                content: "{{get-production.proof_content}}"
            - name: notify-author
              type: call
              call: "mailchimp.send-transactional"
              with:
                template_name: "proof_notification"
                to_email: "{{get-production.author_email}}"
                merge_vars:
                  author_name: "{{get-production.author_name}}"
                  article_title: "{{get-production.title}}"
                  proof_link: "{{upload-proof.shared_link}}"
                  deadline: "{{proof_deadline}}"
  consumes:
    - type: http
      namespace: production-api
      baseUri: "https://api.springernature.com/production/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_production_token"
      resources:
        - name: articles
          path: "/articles/{{id}}/status"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-status
              method: GET
    - type: http
      namespace: box
      baseUri: "https://upload.box.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/content"
          operations:
            - name: upload-file
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: apiKey
        key: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST

Orchestrates research collaboration network pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Research Collaboration Network Pipeline"
  description: "Orchestrates research collaboration network pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - research
    - springernature
    - slack
    - jira
    - teams
capability:
  exposes:
    - type: mcp
      namespace: research
      port: 8080
      tools:
        - name: research-collaboration-network-pipeline
          description: "Orchestrates research collaboration network pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/research"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/research"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/research"
          operations:
            - name: execute-3
              method: POST

Orchestrates research data curation pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Research Data Curation Pipeline"
  description: "Orchestrates research data curation pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - research
    - springernature
    - confluence
    - datadog
    - springernature
capability:
  exposes:
    - type: mcp
      namespace: research
      port: 8080
      tools:
        - name: research-data-curation-pipeline
          description: "Orchestrates research data curation pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "confluence.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "springernature.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: confluence-resource
          path: "/api/research"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/research"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: springernature-resource
          path: "/api/research"
          operations:
            - name: execute-3
              method: POST

Deposits supplementary research data files to the research data repository and links them to the published article DOI.

naftiko: "0.5"
info:
  label: "Research Data Repository Deposit"
  description: "Deposits supplementary research data files to the research data repository and links them to the published article DOI."
  tags:
    - research-data
    - publishing
    - doi
capability:
  exposes:
    - type: mcp
      namespace: research-data
      port: 8080
      tools:
        - name: deposit-research-data
          description: "Upload research data to the repository and link it to the article DOI."
          inputParameters:
            - name: article_doi
              in: body
              type: string
              description: "The article DOI to link the data to."
            - name: data_package_url
              in: body
              type: string
              description: "The URL of the data package to deposit."
            - name: description
              in: body
              type: string
              description: "Description of the research data."
          steps:
            - name: deposit-data
              type: call
              call: "data-repo.create-deposit"
              with:
                source_url: "{{data_package_url}}"
                description: "{{description}}"
                related_doi: "{{article_doi}}"
            - name: link-to-article
              type: call
              call: "editorial-api.add-data-link"
              with:
                doi: "{{article_doi}}"
                data_doi: "{{deposit-data.data_doi}}"
                data_url: "{{deposit-data.access_url}}"
  consumes:
    - type: http
      namespace: data-repo
      baseUri: "https://api.springernature.com/data-repository/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_data_repo_token"
      resources:
        - name: deposits
          path: "/deposits"
          operations:
            - name: create-deposit
              method: POST
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: data-links
          path: "/articles/{{doi}}/data-links"
          inputParameters:
            - name: doi
              in: path
          operations:
            - name: add-data-link
              method: POST

Orchestrates research impact reporting pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Research Impact Reporting Pipeline"
  description: "Orchestrates research impact reporting pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - research
    - springernature
    - confluence
    - datadog
    - springernature
capability:
  exposes:
    - type: mcp
      namespace: research
      port: 8080
      tools:
        - name: research-impact-reporting-pipeline
          description: "Orchestrates research impact reporting pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "confluence.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "datadog.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "springernature.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: confluence-resource
          path: "/api/research"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/research"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: springernature-resource
          path: "/api/research"
          operations:
            - name: execute-3
              method: POST

Orchestrates research integrity screening pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Research Integrity Screening Pipeline"
  description: "Orchestrates research integrity screening pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - research
    - springernature
    - datadog
    - springernature
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: research
      port: 8080
      tools:
        - name: research-integrity-screening-pipeline
          description: "Orchestrates research integrity screening pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "datadog.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "springernature.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "salesforce.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: datadog-resource
          path: "/api/research"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: springernature
      baseUri: "https://api.springernature.com/v2"
      authentication:
        type: bearer
        token: "$secrets.springer_api_token"
      resources:
        - name: springernature-resource
          path: "/api/research"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_access_token"
      resources:
        - name: salesforce-resource
          path: "/api/research"
          operations:
            - name: execute-3
              method: POST

Processes a retraction by updating the article metadata, depositing a retraction notice with Crossref, notifying the author, and alerting the editorial team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Retraction Notice Publisher"
  description: "Processes a retraction by updating the article metadata, depositing a retraction notice with Crossref, notifying the author, and alerting the editorial team via Microsoft Teams."
  tags:
    - publishing
    - integrity
    - editorial
    - mailchimp
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: retractions
      port: 8080
      tools:
        - name: process-retraction
          description: "Process a full article retraction including metadata update, Crossref deposit, author notification, and team alert."
          inputParameters:
            - name: article_doi
              in: body
              type: string
              description: "The DOI of the article to retract."
            - name: retraction_reason
              in: body
              type: string
              description: "The reason for the retraction."
          steps:
            - name: get-article
              type: call
              call: "editorial-api.get-article-by-doi"
              with:
                doi: "{{article_doi}}"
            - name: update-metadata
              type: call
              call: "editorial-api.retract-article"
              with:
                doi: "{{article_doi}}"
                reason: "{{retraction_reason}}"
            - name: deposit-retraction
              type: call
              call: "crossref.deposit-retraction"
              with:
                doi: "{{article_doi}}"
                reason: "{{retraction_reason}}"
            - name: notify-author
              type: call
              call: "mailchimp.send-transactional"
              with:
                template_name: "retraction_notice"
                to_email: "{{get-article.corresponding_author_email}}"
                merge_vars:
                  title: "{{get-article.title}}"
                  reason: "{{retraction_reason}}"
            - name: alert-team
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "editorial_team"
                channel_id: "integrity_alerts"
                text: "Retraction processed: {{get-article.title}} ({{article_doi}}). Reason: {{retraction_reason}}."
  consumes:
    - type: http
      namespace: editorial-api
      baseUri: "https://api.springernature.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_editorial_token"
      resources:
        - name: articles
          path: "/articles/{{doi}}"
          inputParameters:
            - name: doi
              in: path
          operations:
            - name: get-article-by-doi
              method: GET
            - name: retract-article
              method: DELETE
    - type: http
      namespace: crossref
      baseUri: "https://api.crossref.org"
      authentication:
        type: basic
        username: "$secrets.crossref_user"
        password: "$secrets.crossref_password"
      resources:
        - name: retractions
          path: "/deposits"
          operations:
            - name: deposit-retraction
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: apiKey
        key: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves a reviewer's historical performance data including average review time, acceptance rate, and quality scores.

naftiko: "0.5"
info:
  label: "Reviewer Performance Metrics"
  description: "Retrieves a reviewer's historical performance data including average review time, acceptance rate, and quality scores."
  tags:
    - peer-review
    - analytics
    - reviewers
capability:
  exposes:
    - type: mcp
      namespace: reviewer-metrics
      port: 8080
      tools:
        - name: get-reviewer-performance
          description: "Get historical performance metrics for a peer reviewer."
          inputParameters:
            - name: reviewer_id
              in: body
              type: string
              description: "The reviewer identifier."
          call: "reviewer-api.get-metrics"
          with:
            id: "{{reviewer_id}}"
  consumes:
    - type: http
      namespace: reviewer-api
      baseUri: "https://api.springernature.com/reviewers/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_reviewer_token"
      resources:
        - name: metrics
          path: "/reviewers/{{id}}/metrics"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-metrics
              method: GET

Orchestrates reviewer recognition program pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Reviewer Recognition Program Pipeline"
  description: "Orchestrates reviewer recognition program pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - reviewer
    - springernature
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: reviewer
      port: 8080
      tools:
        - name: reviewer-recognition-program-pipeline
          description: "Orchestrates reviewer recognition program pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "servicenow.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "snowflake.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "slack.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: servicenow-resource
          path: "/api/reviewer"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://springernature.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: snowflake-resource
          path: "/api/reviewer"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/reviewer"
          operations:
            - name: execute-3
              method: POST

Searches for an institutional account in Salesforce by name or identifier, returning account details and subscription history.

naftiko: "0.5"
info:
  label: "Salesforce Account Lookup"
  description: "Searches for an institutional account in Salesforce by name or identifier, returning account details and subscription history."
  tags:
    - sales
    - salesforce
    - subscriptions
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: lookup-account
          description: "Search for an institutional account in Salesforce by name."
          inputParameters:
            - name: institution_name
              in: body
              type: string
              description: "The institution name to search for."
          call: "salesforce.search-accounts"
          with:
            query: "{{institution_name}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://springernature.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/search?q={{query}}"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search-accounts
              method: GET

Retrieves an expense report from SAP Concur by report ID, returning status, total amount, and line items.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Lookup"
  description: "Retrieves an expense report from SAP Concur by report ID, returning status, total amount, and line items."
  tags:
    - finance
    - sap-concur
    - expenses
capability:
  exposes:
    - type: mcp
      namespace: expenses
      port: 8080
      tools:
        - name: get-expense-report
          description: "Look up an expense report in SAP Concur by report ID."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The SAP Concur expense report ID."
          call: "concur.get-report"
          with:
            id: "{{report_id}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: reports
          path: "/expense/reports/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-report
              method: GET

Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date."
  tags:
    - procurement
    - sap
    - finance
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP purchase order by PO number."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.springernature.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Creates a new IT support ticket in ServiceNow with specified category, priority, and description.

naftiko: "0.5"
info:
  label: "ServiceNow IT Ticket Creator"
  description: "Creates a new IT support ticket in ServiceNow with specified category, priority, and description."
  tags:
    - it-support
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-support
      port: 8080
      tools:
        - name: create-it-ticket
          description: "Create a new ServiceNow IT support incident."
          inputParameters:
            - name: short_description
              in: body
              type: string
              description: "Brief description of the issue."
            - name: category
              in: body
              type: string
              description: "The incident category."
            - name: priority
              in: body
              type: string
              description: "The incident priority (1-Critical, 2-High, 3-Medium, 4-Low)."
          call: "servicenow.create-incident"
          with:
            short_description: "{{short_description}}"
            category: "{{category}}"
            priority: "{{priority}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://springernature.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Retrieves a document from the Springer Nature SharePoint document library by file path.

naftiko: "0.5"
info:
  label: "SharePoint Document Retrieval"
  description: "Retrieves a document from the Springer Nature SharePoint document library by file path."
  tags:
    - documents
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: doc-retrieval
      port: 8080
      tools:
        - name: get-sharepoint-document
          description: "Retrieve a document from SharePoint by site and file path."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The SharePoint site identifier."
            - name: file_path
              in: body
              type: string
              description: "The file path within the document library."
          call: "sharepoint.get-file"
          with:
            site_id: "{{site_id}}"
            path: "{{file_path}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/{{site_id}}/drive/root:/{{path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: path
              in: path
          operations:
            - name: get-file
              method: GET

Queries SolarWinds for the health status of network infrastructure supporting Springer Nature digital platforms.

naftiko: "0.5"
info:
  label: "SolarWinds Network Health Monitor"
  description: "Queries SolarWinds for the health status of network infrastructure supporting Springer Nature digital platforms."
  tags:
    - infrastructure
    - solarwinds
    - network
capability:
  exposes:
    - type: mcp
      namespace: network-health
      port: 8080
      tools:
        - name: get-network-health
          description: "Get network device health status from SolarWinds."
          inputParameters:
            - name: node_group
              in: body
              type: string
              description: "The SolarWinds node group name."
          call: "solarwinds.get-node-status"
          with:
            group: "{{node_group}}"
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://solarwinds.springernature.com/SolarWinds/InformationService/v3/Json"
      authentication:
        type: basic
        username: "$secrets.solarwinds_user"
        password: "$secrets.solarwinds_password"
      resources:
        - name: nodes
          path: "/Query?query=SELECT+NodeName,Status+FROM+Orion.Nodes+WHERE+GroupName='{{group}}'"
          inputParameters:
            - name: group
              in: query
          operations:
            - name: get-node-status
              method: GET

Creates a special issue plan by setting up a Jira epic, creating a Confluence planning page, and notifying guest editors via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Special Issue Planning Orchestrator"
  description: "Creates a special issue plan by setting up a Jira epic, creating a Confluence planning page, and notifying guest editors via Microsoft Teams."
  tags:
    - editorial
    - planning
    - jira
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: special-issues
      port: 8080
      tools:
        - name: plan-special-issue
          description: "Set up the project infrastructure for a new special issue including Jira epic, Confluence page, and guest editor notifications."
          inputParameters:
            - name: journal_id
              in: body
              type: string
              description: "The journal identifier."
            - name: issue_title
              in: body
              type: string
              description: "The special issue title."
            - name: guest_editor_emails
              in: body
              type: array
              description: "List of guest editor email addresses."
            - name: deadline
              in: body
              type: string
              description: "The submission deadline in YYYY-MM-DD format."
          steps:
            - name: create-epic
              type: call
              call: "jira.create-issue"
              with:
                project: "EDIT"
                summary: "Special Issue: {{issue_title}}"
                issuetype: "Epic"
                description: "Journal: {{journal_id}}. Deadline: {{deadline}}."
            - name: create-wiki
              type: call
              call: "confluence.create-page"
              with:
                space_key: "EDITORIAL"
                title: "Special Issue: {{issue_title}}"
                body: "Journal: {{journal_id}}\nDeadline: {{deadline}}\nJira Epic: {{create-epic.key}}"
            - name: notify-editors
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "editorial_team"
                channel_id: "special_issues"
                text: "New special issue planned: {{issue_title}} for {{journal_id}}. Deadline: {{deadline}}. Jira: {{create-epic.key}}."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://springernature.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Searches the SpringerLink content API for articles matching a query, returning titles, authors, DOIs, and abstracts.

naftiko: "0.5"
info:
  label: "Springer Link Article Search"
  description: "Searches the SpringerLink content API for articles matching a query, returning titles, authors, DOIs, and abstracts."
  tags:
    - publishing
    - search
    - content
capability:
  exposes:
    - type: mcp
      namespace: content-search
      port: 8080
      tools:
        - name: search-articles
          description: "Search SpringerLink for articles matching a keyword or topic query."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query."
            - name: subject
              in: body
              type: string
              description: "Optional subject area filter."
          call: "springerlink.search"
          with:
            q: "{{query}}"
            subject: "{{subject}}"
  consumes:
    - type: http
      namespace: springerlink
      baseUri: "https://api.springernature.com/meta/v2"
      authentication:
        type: apiKey
        key: "$secrets.springernature_api_key"
      resources:
        - name: articles
          path: "/json?q={{q}}&subject={{subject}}"
          inputParameters:
            - name: q
              in: query
            - name: subject
              in: query
          operations:
            - name: search
              method: GET

Checks whether an institution has an active subscription to a specific journal or content collection in the subscription management system.

naftiko: "0.5"
info:
  label: "Subscription License Validator"
  description: "Checks whether an institution has an active subscription to a specific journal or content collection in the subscription management system."
  tags:
    - subscriptions
    - licensing
    - access
capability:
  exposes:
    - type: mcp
      namespace: subscriptions
      port: 8080
      tools:
        - name: validate-subscription
          description: "Check whether an institution has active access to a journal or collection."
          inputParameters:
            - name: institution_id
              in: body
              type: string
              description: "The institution identifier."
            - name: journal_id
              in: body
              type: string
              description: "The journal or collection identifier."
          call: "subscription-api.check-access"
          with:
            institution: "{{institution_id}}"
            journal: "{{journal_id}}"
  consumes:
    - type: http
      namespace: subscription-api
      baseUri: "https://api.springernature.com/subscriptions/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_subscription_token"
      resources:
        - name: access
          path: "/access?institution={{institution}}&journal={{journal}}"
          inputParameters:
            - name: institution
              in: query
            - name: journal
              in: query
          operations:
            - name: check-access
              method: GET

Orchestrates transformative agreement reporting pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders.

naftiko: "0.5"
info:
  label: "Transformative Agreement Reporting Pipeline"
  description: "Orchestrates transformative agreement reporting pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
  tags:
    - transformative
    - springernature
    - slack
    - jira
    - teams
capability:
  exposes:
    - type: mcp
      namespace: transformative
      port: 8080
      tools:
        - name: transformative-agreement-reporting-pipeline
          description: "Orchestrates transformative agreement reporting pipeline across academic publishing systems, coordinating multiple services and notifying stakeholders."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
          steps:
            - name: step-1
              type: call
              call: "slack.execute-1"
              with:
                input: "{{input_id}}"
            - name: step-2
              type: call
              call: "jira.execute-2"
              with:
                input: "{{input_id}}"
            - name: step-3
              type: call
              call: "teams.execute-3"
              with:
                input: "{{input_id}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: slack-resource
          path: "/api/transformative"
          operations:
            - name: execute-1
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://springernature.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: jira-resource
          path: "/api/transformative"
          operations:
            - name: execute-2
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: teams-resource
          path: "/api/transformative"
          operations:
            - name: execute-3
              method: POST

Retrieves the status and utilization of a transformative agreement (Read & Publish deal) for an institution.

naftiko: "0.5"
info:
  label: "Transformative Agreement Tracker"
  description: "Retrieves the status and utilization of a transformative agreement (Read & Publish deal) for an institution."
  tags:
    - subscriptions
    - open-access
    - agreements
capability:
  exposes:
    - type: mcp
      namespace: agreements
      port: 8080
      tools:
        - name: get-agreement-status
          description: "Get the status and utilization of a transformative agreement for an institution."
          inputParameters:
            - name: agreement_id
              in: body
              type: string
              description: "The transformative agreement identifier."
          call: "subscription-api.get-agreement"
          with:
            id: "{{agreement_id}}"
  consumes:
    - type: http
      namespace: subscription-api
      baseUri: "https://api.springernature.com/subscriptions/v1"
      authentication:
        type: bearer
        token: "$secrets.springernature_subscription_token"
      resources:
        - name: agreements
          path: "/agreements/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-agreement
              method: GET

Posts a promotional tweet about a newly published article on the Springer Nature Twitter account.

naftiko: "0.5"
info:
  label: "Twitter Article Promotion"
  description: "Posts a promotional tweet about a newly published article on the Springer Nature Twitter account."
  tags:
    - marketing
    - twitter
    - social-media
capability:
  exposes:
    - type: mcp
      namespace: twitter-promotion
      port: 8080
      tools:
        - name: tweet-article
          description: "Post a promotional tweet about a published article."
          inputParameters:
            - name: article_doi
              in: body
              type: string
              description: "The article DOI."
            - name: tweet_text
              in: body
              type: string
              description: "The tweet text (max 280 characters)."
          call: "twitter.create-tweet"
          with:
            text: "{{tweet_text}} https://doi.org/{{article_doi}}"
  consumes:
    - type: http
      namespace: twitter
      baseUri: "https://api.twitter.com/2"
      authentication:
        type: bearer
        token: "$secrets.twitter_bearer_token"
      resources:
        - name: tweets
          path: "/tweets"
          operations:
            - name: create-tweet
              method: POST

Retrieves employee information from Workday by employee ID.

naftiko: "0.5"
info:
  label: "Workday Employee Lookup"
  description: "Retrieves employee information from Workday by employee ID."
  tags:
    - hr
    - workday
    - directory
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-employee
          description: "Look up a Springer Nature employee in Workday by ID."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{employee_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET