Wiley Capabilities
Naftiko 0.5 capability definitions for Wiley - 100 capabilities showing integration workflows and service orchestrations.
Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.
naftiko: "0.5"
info:
label: "Annual Compliance Certification Orchestrator"
description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
tags:
- compliance
- hr
- legal
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-annual-compliance-certification-orchestrator
description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Annual Compliance Certification Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.
naftiko: "0.5"
info:
label: "API Lifecycle Management Orchestrator"
description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
tags:
- engineering
- api
- operations
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: run-api-lifecycle-management-orchestrator
description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed API Lifecycle Management Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves published article metadata by DOI from the Crossref API including title, authors, journal, and citation count.
naftiko: "0.5"
info:
label: "Article DOI Lookup"
description: "Retrieves published article metadata by DOI from the Crossref API including title, authors, journal, and citation count."
tags:
- publishing
- research
- crossref
- metadata
capability:
exposes:
- type: mcp
namespace: article-metadata
port: 8080
tools:
- name: get-article-by-doi
description: "Look up a published article by DOI. Returns title, authors, journal, and citations."
inputParameters:
- name: doi
in: body
type: string
description: "The article DOI (e.g., 10.1002/example)."
call: "crossref.get-work"
with:
doi: "{{doi}}"
outputParameters:
- name: title
type: string
mapping: "$.message.title[0]"
- name: authors
type: array
mapping: "$.message.author"
- name: journal
type: string
mapping: "$.message.container-title[0]"
- name: citation_count
type: integer
mapping: "$.message.is-referenced-by-count"
- name: published_date
type: string
mapping: "$.message.published.date-parts[0]"
consumes:
- type: http
namespace: crossref
baseUri: "https://api.crossref.org"
authentication:
type: none
inputParameters:
- name: User-Agent
in: header
value: "Wiley-Naftiko/0.5 (mailto:$secrets.crossref_contact_email)"
resources:
- name: works
path: "/works/{{doi}}"
inputParameters:
- name: doi
in: path
operations:
- name: get-work
method: GET
When a manuscript is accepted, initiates the production workflow by creating a production ticket in ServiceNow, assigning a copyeditor, generating proofs, and notifying the author via SendGrid.
naftiko: "0.5"
info:
label: "Article Production Workflow"
description: "When a manuscript is accepted, initiates the production workflow by creating a production ticket in ServiceNow, assigning a copyeditor, generating proofs, and notifying the author via SendGrid."
tags:
- publishing
- production
- servicenow
- sendgrid
capability:
exposes:
- type: mcp
namespace: article-production
port: 8080
tools:
- name: initiate-production
description: "Given an accepted manuscript ID, start production by creating ticket, assigning copyeditor, and notifying author."
inputParameters:
- name: manuscript_id
in: body
type: string
description: "The accepted manuscript identifier."
- name: journal_code
in: body
type: string
description: "The journal code."
- name: author_email
in: body
type: string
description: "The corresponding author's email."
steps:
- name: create-production-ticket
type: call
call: "servicenow.create-request"
with:
short_description: "Article production: {{manuscript_id}}"
category: "content_production"
description: "Journal: {{journal_code}}. Manuscript accepted and ready for production."
- name: assign-copyeditor
type: call
call: "production.assign-copyeditor"
with:
manuscript_id: "{{manuscript_id}}"
journal_code: "{{journal_code}}"
- name: generate-proofs
type: call
call: "production.create-proofs"
with:
manuscript_id: "{{manuscript_id}}"
- name: notify-author
type: call
call: "sendgrid.send-email"
with:
to: "{{author_email}}"
template_id: "manuscript_accepted"
dynamic_data:
manuscript_id: "{{manuscript_id}}"
journal: "{{journal_code}}"
copyeditor: "{{assign-copyeditor.name}}"
proof_url: "{{generate-proofs.url}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://wiley.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- type: http
namespace: production
baseUri: "https://api.wiley.com/production/v2"
authentication:
type: bearer
token: "$secrets.production_api_token"
resources:
- name: copyeditors
path: "/manuscripts/{{manuscript_id}}/assign-copyeditor"
inputParameters:
- name: manuscript_id
in: path
operations:
- name: assign-copyeditor
method: POST
- name: proofs
path: "/manuscripts/{{manuscript_id}}/proofs"
inputParameters:
- name: manuscript_id
in: path
operations:
- name: create-proofs
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-email
method: POST
Retrieves publication history for an author.
naftiko: "0.5"
info:
label: "Author Publication History"
description: "Retrieves publication history for an author."
tags:
- publishing
- research
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-author
description: "Retrieves publication history for an author."
inputParameters:
- name: entity_id
in: body
type: string
description: "The author publication history identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: author
path: "/author/publication/history/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-author
method: GET
Retrieves Azure DevOps pipeline status.
naftiko: "0.5"
info:
label: "Azure DevOps Pipeline Viewer"
description: "Retrieves Azure DevOps pipeline status."
tags:
- engineering
- azure-devops
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-azure
description: "Retrieves Azure DevOps pipeline status."
inputParameters:
- name: entity_id
in: body
type: string
description: "The azure devops pipeline viewer identifier."
call: "engineering-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: engineering-api
baseUri: "https://api.wiley.com/engineering/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: azure
path: "/azure/devops/pipeline/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-azure
method: GET
Retrieves a Confluence wiki page.
naftiko: "0.5"
info:
label: "Confluence Page Viewer"
description: "Retrieves a Confluence wiki page."
tags:
- collaboration
- confluence
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-confluence
description: "Retrieves a Confluence wiki page."
inputParameters:
- name: entity_id
in: body
type: string
description: "The confluence page viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.wiley.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: confluence
path: "/confluence/page/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-confluence
method: GET
Searches the Wiley content discovery API for articles matching a query, returning titles, DOIs, abstracts, and relevance scores.
naftiko: "0.5"
info:
label: "Content Discovery Search"
description: "Searches the Wiley content discovery API for articles matching a query, returning titles, DOIs, abstracts, and relevance scores."
tags:
- research
- discovery
- search
capability:
exposes:
- type: mcp
namespace: content-discovery
port: 8080
tools:
- name: search-articles
description: "Search for articles by keyword query. Returns matching titles, DOIs, and abstracts."
inputParameters:
- name: query
in: body
type: string
description: "The search query string."
- name: journal_filter
in: body
type: string
description: "Optional journal ISSN to filter results."
- name: max_results
in: body
type: integer
description: "Maximum number of results to return."
call: "discovery.search"
with:
q: "{{query}}"
journal: "{{journal_filter}}"
limit: "{{max_results}}"
outputParameters:
- name: total_results
type: integer
mapping: "$.total"
- name: articles
type: array
mapping: "$.results"
consumes:
- type: http
namespace: discovery
baseUri: "https://api.wiley.com/discovery/v1"
authentication:
type: bearer
token: "$secrets.discovery_api_token"
resources:
- name: search
path: "/search"
operations:
- name: search
method: GET
When a rights licensing request comes in, validates the request, checks rights availability, creates a Salesforce opportunity, generates a license agreement, and notifies the rights team in Slack.
naftiko: "0.5"
info:
label: "Content Rights Licensing Pipeline"
description: "When a rights licensing request comes in, validates the request, checks rights availability, creates a Salesforce opportunity, generates a license agreement, and notifies the rights team in Slack."
tags:
- licensing
- rights
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: rights-licensing
port: 8080
tools:
- name: process-rights-request
description: "Given a rights request, check availability, create opportunity, and notify team."
inputParameters:
- name: article_doi
in: body
type: string
description: "The article DOI."
- name: licensee_name
in: body
type: string
description: "The requesting licensee name."
- name: licensee_email
in: body
type: string
description: "The licensee email."
- name: usage_type
in: body
type: string
description: "Intended usage (reprint, translation, course_pack, commercial)."
- name: territory
in: body
type: string
description: "Territory for the license."
steps:
- name: check-rights
type: call
call: "rights.check-availability"
with:
doi: "{{article_doi}}"
usage_type: "{{usage_type}}"
territory: "{{territory}}"
- name: create-opportunity
type: call
call: "salesforce.create-opportunity"
with:
name: "Rights: {{article_doi}} - {{licensee_name}} - {{usage_type}}"
stage: "Qualification"
licensee: "{{licensee_name}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "rights-licensing"
text: "Rights request: {{usage_type}} for {{article_doi}} by {{licensee_name}} ({{territory}}). Available: {{check-rights.available}}. Opportunity: {{create-opportunity.id}}"
consumes:
- type: http
namespace: rights
baseUri: "https://api.wiley.com/rights/v1"
authentication:
type: bearer
token: "$secrets.rights_api_token"
resources:
- name: availability
path: "/check"
operations:
- name: check-availability
method: POST
- type: http
namespace: salesforce
baseUri: "https://wiley.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: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.
naftiko: "0.5"
info:
label: "Cross-Functional Project Kickoff Orchestrator"
description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
tags:
- project-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: run-cross-functional-project-kickoff-orchestrator
description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.
naftiko: "0.5"
info:
label: "Customer Data Privacy Request Handler"
description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
tags:
- compliance
- privacy
- customer-service
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-customer-data-privacy-request-handler
description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Data Privacy Request Handler for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.
naftiko: "0.5"
info:
label: "Customer Journey Mapping Orchestrator"
description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
tags:
- customer-experience
- analytics
- product-management
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: run-customer-journey-mapping-orchestrator
description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Journey Mapping Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.
naftiko: "0.5"
info:
label: "Data Governance Review Orchestrator"
description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
tags:
- data-governance
- compliance
- analytics
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: run-data-governance-review-orchestrator
description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Data Governance Review Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves a Datadog monitor status.
naftiko: "0.5"
info:
label: "Datadog Monitor Viewer"
description: "Retrieves a Datadog monitor status."
tags:
- monitoring
- datadog
capability:
exposes:
- type: mcp
namespace: monitoring
port: 8080
tools:
- name: get-datadog
description: "Retrieves a Datadog monitor status."
inputParameters:
- name: entity_id
in: body
type: string
description: "The datadog monitor viewer identifier."
call: "monitoring-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: monitoring-api
baseUri: "https://api.wiley.com/monitoring/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: datadog
path: "/datadog/monitor/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-datadog
method: GET
Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.
naftiko: "0.5"
info:
label: "Digital Transformation Progress Orchestrator"
description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
tags:
- strategy
- analytics
- project-management
capability:
exposes:
- type: mcp
namespace: strategy
port: 8080
tools:
- name: run-digital-transformation-progress-orchestrator
description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Digital Transformation Progress Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.
naftiko: "0.5"
info:
label: "Disaster Recovery Test Orchestrator"
description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
tags:
- infrastructure
- operations
- compliance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-disaster-recovery-test-orchestrator
description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Disaster Recovery Test Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.
naftiko: "0.5"
info:
label: "Employee Offboarding Orchestrator"
description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
tags:
- hr
- identity
- operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-employee-offboarding-orchestrator
description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Employee Offboarding Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
On new hire creation in Workday, opens a ServiceNow ticket, provisions SharePoint, and sends a Microsoft Teams welcome.
naftiko: "0.5"
info:
label: "Employee Onboarding Orchestrator"
description: "On new hire creation in Workday, opens a ServiceNow ticket, provisions SharePoint, and sends a Microsoft Teams welcome."
tags:
- hr
- onboarding
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a Workday employee ID and start date, orchestrate the onboarding sequence."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: department
in: body
type: string
description: "The department."
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"
- name: provision-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "hr_onboarding"
folder_path: "NewHires/{{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 Wiley, {{get-employee.first_name}}! Ticket: {{open-ticket.number}}. Docs: {{provision-folder.url}}"
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://wiley.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
Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.
naftiko: "0.5"
info:
label: "Executive Dashboard Refresh Orchestrator"
description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
tags:
- analytics
- power-bi
- business
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-executive-dashboard-refresh-orchestrator
description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves GitHub repository information.
naftiko: "0.5"
info:
label: "GitHub Repo Viewer"
description: "Retrieves GitHub repository information."
tags:
- engineering
- github
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-github
description: "Retrieves GitHub repository information."
inputParameters:
- name: entity_id
in: body
type: string
description: "The github repo viewer identifier."
call: "engineering-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: engineering-api
baseUri: "https://api.wiley.com/engineering/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: github
path: "/github/repo/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-github
method: GET
Retrieves a document from Google Drive by file ID.
naftiko: "0.5"
info:
label: "Google Drive Document Retrieval"
description: "Retrieves a document from Google Drive by file ID."
tags:
- collaboration
- google-drive
- documents
capability:
exposes:
- type: mcp
namespace: document-mgmt
port: 8080
tools:
- name: get-drive-file
description: "Fetch a Google Drive file's metadata by file ID."
inputParameters:
- name: file_id
in: body
type: string
description: "The Google Drive file identifier."
call: "gdrive.get-file"
with:
file_id: "{{file_id}}"
outputParameters:
- name: name
type: string
mapping: "$.name"
- name: owner
type: string
mapping: "$.owners[0].displayName"
- name: modified_time
type: string
mapping: "$.modifiedTime"
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/{{file_id}}?fields=name,owners,modifiedTime"
inputParameters:
- name: file_id
in: path
operations:
- name: get-file
method: GET
Retrieves a file from Google Drive.
naftiko: "0.5"
info:
label: "Google Drive File Viewer"
description: "Retrieves a file from Google Drive."
tags:
- collaboration
- google-drive
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-google
description: "Retrieves a file from Google Drive."
inputParameters:
- name: entity_id
in: body
type: string
description: "The google drive file viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.wiley.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: google
path: "/google/drive/file/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-google
method: GET
Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.
naftiko: "0.5"
info:
label: "Infrastructure Capacity Planning Orchestrator"
description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
tags:
- infrastructure
- planning
- finance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-infrastructure-capacity-planning-orchestrator
description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.
naftiko: "0.5"
info:
label: "IT Change Management Orchestrator"
description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
tags:
- it
- servicenow
- operations
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: run-it-change-management-orchestrator
description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed IT Change Management Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves a Jira ticket by issue key.
naftiko: "0.5"
info:
label: "Jira Ticket Viewer"
description: "Retrieves a Jira ticket by issue key."
tags:
- engineering
- jira
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-jira
description: "Retrieves a Jira ticket by issue key."
inputParameters:
- name: entity_id
in: body
type: string
description: "The jira ticket viewer identifier."
call: "engineering-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: engineering-api
baseUri: "https://api.wiley.com/engineering/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: jira
path: "/jira/ticket/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-jira
method: GET
Retrieves citation metrics for a journal.
naftiko: "0.5"
info:
label: "Journal Citation Metrics"
description: "Retrieves citation metrics for a journal."
tags:
- publishing
- analytics
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-journal
description: "Retrieves citation metrics for a journal."
inputParameters:
- name: entity_id
in: body
type: string
description: "The journal citation metrics identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: journal
path: "/journal/citation/metrics/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-journal
method: GET
Aggregates journal impact metrics from Crossref, Snowflake, and internal analytics, then populates a Power BI dashboard for editorial leadership.
naftiko: "0.5"
info:
label: "Journal Impact Metrics Dashboard"
description: "Aggregates journal impact metrics from Crossref, Snowflake, and internal analytics, then populates a Power BI dashboard for editorial leadership."
tags:
- analytics
- publishing
- crossref
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: journal-metrics
port: 8080
tools:
- name: build-impact-dashboard
description: "Given a journal code and year, aggregate impact metrics and refresh the dashboard."
inputParameters:
- name: journal_code
in: body
type: string
description: "The journal code or ISSN."
- name: year
in: body
type: string
description: "The reporting year."
steps:
- name: get-citation-data
type: call
call: "crossref.get-journal-stats"
with:
issn: "{{journal_code}}"
- name: get-internal-metrics
type: call
call: "snowflake.execute-query"
with:
statement: "SELECT journal_code, total_submissions, acceptance_rate, avg_review_time_days, total_downloads FROM publishing.journal_metrics WHERE journal_code = '{{journal_code}}' AND year = '{{year}}'"
database: "WILEY_ANALYTICS"
- name: refresh-dashboard
type: call
call: "powerbi.trigger-refresh"
with:
group_id: "editorial_workspace"
dataset_id: "journal_impact_metrics"
consumes:
- type: http
namespace: crossref
baseUri: "https://api.crossref.org"
authentication:
type: none
resources:
- name: journals
path: "/journals/{{issn}}"
inputParameters:
- name: issn
in: path
operations:
- name: get-journal-stats
method: GET
- type: http
namespace: snowflake
baseUri: "https://wiley.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Retrieves COUNTER-compliant journal usage statistics for an institution and period from the usage reporting API.
naftiko: "0.5"
info:
label: "Journal Usage Statistics Report"
description: "Retrieves COUNTER-compliant journal usage statistics for an institution and period from the usage reporting API."
tags:
- subscriptions
- analytics
- usage-stats
- counter
capability:
exposes:
- type: mcp
namespace: usage-reporting
port: 8080
tools:
- name: get-usage-stats
description: "Fetch COUNTER usage statistics for an institution, journal, and period."
inputParameters:
- name: institution_id
in: body
type: string
description: "The institutional subscriber identifier."
- name: journal_issn
in: body
type: string
description: "The journal ISSN."
- name: period
in: body
type: string
description: "Reporting period (e.g., 2026-01)."
call: "usage.get-counter-report"
with:
customer_id: "{{institution_id}}"
item_id: "{{journal_issn}}"
begin_date: "{{period}}-01"
outputParameters:
- name: total_requests
type: integer
mapping: "$.report.items[0].performance[0].total"
- name: unique_requests
type: integer
mapping: "$.report.items[0].performance[0].unique"
consumes:
- type: http
namespace: usage
baseUri: "https://api.wiley.com/usage/v5"
authentication:
type: bearer
token: "$secrets.usage_api_token"
resources:
- name: counter-reports
path: "/reports/tr_j1"
operations:
- name: get-counter-report
method: GET
Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.
naftiko: "0.5"
info:
label: "Knowledge Base Refresh Orchestrator"
description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
tags:
- knowledge-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: knowledge-management
port: 8080
tools:
- name: run-knowledge-base-refresh-orchestrator
description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Knowledge Base Refresh Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves the current status of a manuscript in the editorial management system.
naftiko: "0.5"
info:
label: "Manuscript Status Lookup"
description: "Retrieves the current status of a manuscript in the editorial management system."
tags:
- publishing
- editorial
- manuscripts
capability:
exposes:
- type: mcp
namespace: editorial-tracking
port: 8080
tools:
- name: get-manuscript-status
description: "Look up a manuscript by ID. Returns status, journal, editor, and review progress."
inputParameters:
- name: manuscript_id
in: body
type: string
description: "The manuscript identifier."
call: "editorial.get-manuscript"
with:
manuscript_id: "{{manuscript_id}}"
outputParameters:
- name: status
type: string
mapping: "$.manuscript.status"
- name: journal
type: string
mapping: "$.manuscript.journal_code"
- name: editor
type: string
mapping: "$.manuscript.editor.name"
- name: reviews_complete
type: integer
mapping: "$.manuscript.reviews_received"
- name: reviews_pending
type: integer
mapping: "$.manuscript.reviews_pending"
consumes:
- type: http
namespace: editorial
baseUri: "https://api.wiley.com/editorial/v2"
authentication:
type: bearer
token: "$secrets.editorial_api_token"
resources:
- name: manuscripts
path: "/manuscripts/{{manuscript_id}}"
inputParameters:
- name: manuscript_id
in: path
operations:
- name: get-manuscript
method: GET
Retrieves the status of a manuscript submission.
naftiko: "0.5"
info:
label: "Manuscript Status Viewer"
description: "Retrieves the status of a manuscript submission."
tags:
- publishing
- editorial
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-manuscript
description: "Retrieves the status of a manuscript submission."
inputParameters:
- name: entity_id
in: body
type: string
description: "The manuscript status viewer identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: manuscript
path: "/manuscript/status/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-manuscript
method: GET
When an author submits a manuscript, creates a record in the editorial management system, assigns to a journal editor via the workflow API, creates a Salesforce case for tracking, and sends acknowledgment via SendGrid.
naftiko: "0.5"
info:
label: "Manuscript Submission Pipeline"
description: "When an author submits a manuscript, creates a record in the editorial management system, assigns to a journal editor via the workflow API, creates a Salesforce case for tracking, and sends acknowledgment via SendGrid."
tags:
- publishing
- manuscripts
- salesforce
- sendgrid
- editorial
capability:
exposes:
- type: mcp
namespace: manuscript-submission
port: 8080
tools:
- name: process-submission
description: "Given manuscript details, create editorial record, assign editor, track in CRM, and acknowledge."
inputParameters:
- name: manuscript_id
in: body
type: string
description: "The manuscript submission identifier."
- name: journal_code
in: body
type: string
description: "The target journal code."
- name: author_email
in: body
type: string
description: "The corresponding author's email."
- name: title
in: body
type: string
description: "The manuscript title."
steps:
- name: create-record
type: call
call: "editorial.create-manuscript"
with:
manuscript_id: "{{manuscript_id}}"
journal_code: "{{journal_code}}"
title: "{{title}}"
author_email: "{{author_email}}"
- name: assign-editor
type: call
call: "editorial.assign-editor"
with:
manuscript_id: "{{manuscript_id}}"
journal_code: "{{journal_code}}"
- name: create-case
type: call
call: "salesforce.create-case"
with:
subject: "Manuscript submission: {{manuscript_id}} - {{title}}"
type: "Submission"
journal: "{{journal_code}}"
- name: send-acknowledgment
type: call
call: "sendgrid.send-email"
with:
to: "{{author_email}}"
template_id: "submission_acknowledgment"
dynamic_data:
manuscript_id: "{{manuscript_id}}"
title: "{{title}}"
journal: "{{journal_code}}"
editor: "{{assign-editor.editor_name}}"
consumes:
- type: http
namespace: editorial
baseUri: "https://api.wiley.com/editorial/v2"
authentication:
type: bearer
token: "$secrets.editorial_api_token"
resources:
- name: manuscripts
path: "/manuscripts"
operations:
- name: create-manuscript
method: POST
- name: assignments
path: "/manuscripts/{{manuscript_id}}/assign"
inputParameters:
- name: manuscript_id
in: path
operations:
- name: assign-editor
method: POST
- type: http
namespace: salesforce
baseUri: "https://wiley.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-email
method: POST
Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.
naftiko: "0.5"
info:
label: "Marketing Campaign Performance Orchestrator"
description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
tags:
- marketing
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: run-marketing-campaign-performance-orchestrator
description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Marketing Campaign Performance Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Sends a notification message to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel Notification"
description: "Sends a notification message to a Microsoft Teams channel."
tags:
- collaboration
- microsoft-teams
- messaging
capability:
exposes:
- type: mcp
namespace: teams-messaging
port: 8080
tools:
- name: send-teams-notification
description: "Send a notification to a Microsoft Teams channel."
inputParameters:
- name: team_id
in: body
type: string
description: "The Teams team ID."
- name: channel_id
in: body
type: string
description: "The Teams channel ID."
- name: message
in: body
type: string
description: "The notification message."
call: "msteams.send-message"
with:
team_id: "{{team_id}}"
channel_id: "{{channel_id}}"
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-message
method: POST
Sends a message to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Message Sender"
description: "Sends a message to a Microsoft Teams channel."
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-microsoft
description: "Sends a message to a Microsoft Teams channel."
inputParameters:
- name: entity_id
in: body
type: string
description: "The microsoft teams message sender identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.wiley.com/communications/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: microsoft
path: "/microsoft/teams/message/sender/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-microsoft
method: GET
When an Open Access article is accepted, verifies institutional funding agreements in Salesforce, processes the Article Processing Charge via SAP, sends the invoice to the author via SendGrid, and updates the editorial system.
naftiko: "0.5"
info:
label: "Open Access APC Processing Pipeline"
description: "When an Open Access article is accepted, verifies institutional funding agreements in Salesforce, processes the Article Processing Charge via SAP, sends the invoice to the author via SendGrid, and updates the editorial system."
tags:
- publishing
- open-access
- salesforce
- sap
- sendgrid
- billing
capability:
exposes:
- type: mcp
namespace: open-access
port: 8080
tools:
- name: process-apc
description: "Given a manuscript ID and author details, verify funding, process APC, send invoice, and update records."
inputParameters:
- name: manuscript_id
in: body
type: string
description: "The manuscript identifier."
- name: author_email
in: body
type: string
description: "The corresponding author's email."
- name: institution_id
in: body
type: string
description: "The author's institutional affiliation ID."
- name: journal_code
in: body
type: string
description: "The journal code."
steps:
- name: check-funding
type: call
call: "salesforce.check-oa-agreement"
with:
institution_id: "{{institution_id}}"
journal_code: "{{journal_code}}"
- name: create-invoice
type: call
call: "sap.create-billing-document"
with:
customer_id: "{{institution_id}}"
amount: "{{check-funding.apc_amount}}"
description: "APC for {{manuscript_id}} in {{journal_code}}"
discount: "{{check-funding.discount_pct}}"
- name: send-invoice
type: call
call: "sendgrid.send-email"
with:
to: "{{author_email}}"
template_id: "apc_invoice"
dynamic_data:
manuscript_id: "{{manuscript_id}}"
amount: "{{create-invoice.net_amount}}"
invoice_number: "{{create-invoice.document_number}}"
- name: update-editorial
type: call
call: "editorial.update-manuscript"
with:
manuscript_id: "{{manuscript_id}}"
oa_status: "apc_invoiced"
invoice_number: "{{create-invoice.document_number}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://wiley.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: oa-agreements
path: "/sobjects/OA_Agreement__c"
operations:
- name: check-oa-agreement
method: GET
- type: http
namespace: sap
baseUri: "https://wiley-s4.sap.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: billing
path: "/A_BillingDocument"
operations:
- name: create-billing-document
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-email
method: POST
- type: http
namespace: editorial
baseUri: "https://api.wiley.com/editorial/v2"
authentication:
type: bearer
token: "$secrets.editorial_api_token"
resources:
- name: manuscripts
path: "/manuscripts/{{manuscript_id}}"
inputParameters:
- name: manuscript_id
in: path
operations:
- name: update-manuscript
method: PATCH
Retrieves an author's ORCID profile including name, affiliations, and publication history.
naftiko: "0.5"
info:
label: "ORCID Author Profile Lookup"
description: "Retrieves an author's ORCID profile including name, affiliations, and publication history."
tags:
- research
- orcid
- author-profiles
capability:
exposes:
- type: mcp
namespace: author-profiles
port: 8080
tools:
- name: get-orcid-profile
description: "Look up an author by ORCID ID. Returns name, affiliations, and work count."
inputParameters:
- name: orcid_id
in: body
type: string
description: "The ORCID identifier (e.g., 0000-0002-1234-5678)."
call: "orcid.get-record"
with:
orcid_id: "{{orcid_id}}"
outputParameters:
- name: name
type: string
mapping: "$.person.name.given-names.value + ' ' + $.person.name.family-name.value"
- name: affiliations
type: array
mapping: "$.activities-summary.employments.affiliation-group"
- name: works_count
type: integer
mapping: "$.activities-summary.works.group.length"
consumes:
- type: http
namespace: orcid
baseUri: "https://pub.orcid.org/v3.0"
authentication:
type: bearer
token: "$secrets.orcid_token"
inputParameters:
- name: Accept
in: header
value: "application/json"
resources:
- name: records
path: "/{{orcid_id}}"
inputParameters:
- name: orcid_id
in: path
operations:
- name: get-record
method: GET
When a manuscript needs peer review, searches for qualified reviewers in the reviewer database, sends invitation emails via SendGrid, creates tracking records in the editorial system, and notifies the editor in Slack.
naftiko: "0.5"
info:
label: "Peer Review Assignment Orchestrator"
description: "When a manuscript needs peer review, searches for qualified reviewers in the reviewer database, sends invitation emails via SendGrid, creates tracking records in the editorial system, and notifies the editor in Slack."
tags:
- peer-review
- publishing
- sendgrid
- slack
- editorial
capability:
exposes:
- type: mcp
namespace: peer-review
port: 8080
tools:
- name: assign-reviewers
description: "Given a manuscript ID, find reviewers, send invitations, create tracking records, and notify editor."
inputParameters:
- name: manuscript_id
in: body
type: string
description: "The manuscript identifier."
- name: subject_area
in: body
type: string
description: "The manuscript subject area for reviewer matching."
- name: reviewer_count
in: body
type: integer
description: "Number of reviewers to invite."
- name: editor_email
in: body
type: string
description: "The handling editor's email."
steps:
- name: find-reviewers
type: call
call: "editorial.search-reviewers"
with:
subject_area: "{{subject_area}}"
count: "{{reviewer_count}}"
exclude_authors: "{{manuscript_id}}"
- name: send-invitations
type: call
call: "sendgrid.send-email"
with:
to: "{{find-reviewers.emails}}"
template_id: "reviewer_invitation"
dynamic_data:
manuscript_id: "{{manuscript_id}}"
subject_area: "{{subject_area}}"
- name: create-review-records
type: call
call: "editorial.create-review-assignments"
with:
manuscript_id: "{{manuscript_id}}"
reviewer_ids: "{{find-reviewers.reviewer_ids}}"
- name: notify-editor
type: call
call: "slack.post-message"
with:
channel: "editorial-ops"
text: "Peer review invitations sent for {{manuscript_id}}. {{reviewer_count}} reviewers invited in {{subject_area}}. Pending responses."
consumes:
- type: http
namespace: editorial
baseUri: "https://api.wiley.com/editorial/v2"
authentication:
type: bearer
token: "$secrets.editorial_api_token"
resources:
- name: reviewers
path: "/reviewers/search"
operations:
- name: search-reviewers
method: POST
- name: review-assignments
path: "/manuscripts/{{manuscript_id}}/reviews"
inputParameters:
- name: manuscript_id
in: path
operations:
- name: create-review-assignments
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-email
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Checks the status of peer reviews for a manuscript.
naftiko: "0.5"
info:
label: "Peer Review Status Check"
description: "Checks the status of peer reviews for a manuscript."
tags:
- publishing
- editorial
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-peer
description: "Checks the status of peer reviews for a manuscript."
inputParameters:
- name: entity_id
in: body
type: string
description: "The peer review status check identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: peer
path: "/peer/review/status/check/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-peer
method: GET
When a manuscript is submitted, runs a plagiarism check via the similarity detection service, logs results in the editorial system, and alerts the editor in Slack if similarity exceeds threshold.
naftiko: "0.5"
info:
label: "Plagiarism Detection Orchestrator"
description: "When a manuscript is submitted, runs a plagiarism check via the similarity detection service, logs results in the editorial system, and alerts the editor in Slack if similarity exceeds threshold."
tags:
- peer-review
- publishing
- plagiarism
- slack
capability:
exposes:
- type: mcp
namespace: integrity-checks
port: 8080
tools:
- name: run-plagiarism-check
description: "Given a manuscript ID, run similarity check, log results, and alert if high similarity."
inputParameters:
- name: manuscript_id
in: body
type: string
description: "The manuscript identifier."
- name: similarity_threshold
in: body
type: number
description: "Similarity percentage threshold for alerting (e.g., 20)."
steps:
- name: run-check
type: call
call: "similarity.check-manuscript"
with:
manuscript_id: "{{manuscript_id}}"
- name: log-results
type: call
call: "editorial.update-manuscript"
with:
manuscript_id: "{{manuscript_id}}"
similarity_score: "{{run-check.similarity_pct}}"
similarity_report_url: "{{run-check.report_url}}"
- name: alert-editor
type: call
call: "slack.post-message"
with:
channel: "editorial-integrity"
text: "Similarity check for {{manuscript_id}}: {{run-check.similarity_pct}}% (threshold: {{similarity_threshold}}%). Report: {{run-check.report_url}}"
consumes:
- type: http
namespace: similarity
baseUri: "https://api.wiley.com/similarity/v1"
authentication:
type: bearer
token: "$secrets.similarity_api_token"
resources:
- name: checks
path: "/manuscripts/{{manuscript_id}}/check"
inputParameters:
- name: manuscript_id
in: path
operations:
- name: check-manuscript
method: POST
- type: http
namespace: editorial
baseUri: "https://api.wiley.com/editorial/v2"
authentication:
type: bearer
token: "$secrets.editorial_api_token"
resources:
- name: manuscripts
path: "/manuscripts/{{manuscript_id}}"
inputParameters:
- name: manuscript_id
in: path
operations:
- name: update-manuscript
method: PATCH
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Triggers a Power BI dataset refresh for publishing and subscription analytics dashboards.
naftiko: "0.5"
info:
label: "Power BI Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for publishing and subscription analytics dashboards."
tags:
- analytics
- power-bi
- reporting
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: refresh-dataset
description: "Trigger a Power BI dataset refresh."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Power BI workspace ID."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID."
call: "powerbi.trigger-refresh"
with:
group_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: group_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
Triggers a Power BI dataset refresh.
naftiko: "0.5"
info:
label: "Power BI Dashboard Refresher"
description: "Triggers a Power BI dataset refresh."
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-power
description: "Triggers a Power BI dataset refresh."
inputParameters:
- name: entity_id
in: body
type: string
description: "The power bi dashboard refresher identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.wiley.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: power
path: "/power/bi/dashboard/refresher/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-power
method: GET
Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.
naftiko: "0.5"
info:
label: "Procurement Spend Analysis Orchestrator"
description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
tags:
- procurement
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-procurement-spend-analysis-orchestrator
description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Procurement Spend Analysis Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 1 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 1"
description: "Orchestrates publishing workflow 1 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-001
description: "Orchestrates publishing workflow 1 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 1 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 2 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 2"
description: "Orchestrates publishing workflow 2 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-002
description: "Orchestrates publishing workflow 2 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 2 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves publishing operational data for workflow 3.
naftiko: "0.5"
info:
label: "Publishing Data Query 3"
description: "Retrieves publishing operational data for workflow 3."
tags:
- publishing
- operations
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-data-3
description: "Query publishing data for workflow 3."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-3
method: GET
Orchestrates publishing workflow 4 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 4"
description: "Orchestrates publishing workflow 4 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-004
description: "Orchestrates publishing workflow 4 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 4 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 5 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 5"
description: "Orchestrates publishing workflow 5 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-005
description: "Orchestrates publishing workflow 5 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 5 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves publishing operational data for workflow 6.
naftiko: "0.5"
info:
label: "Publishing Data Query 6"
description: "Retrieves publishing operational data for workflow 6."
tags:
- publishing
- operations
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-data-6
description: "Query publishing data for workflow 6."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-6
method: GET
Orchestrates publishing workflow 7 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 7"
description: "Orchestrates publishing workflow 7 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-007
description: "Orchestrates publishing workflow 7 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 7 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 8 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 8"
description: "Orchestrates publishing workflow 8 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-008
description: "Orchestrates publishing workflow 8 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 8 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves publishing operational data for workflow 9.
naftiko: "0.5"
info:
label: "Publishing Data Query 9"
description: "Retrieves publishing operational data for workflow 9."
tags:
- publishing
- operations
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-data-9
description: "Query publishing data for workflow 9."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-9
method: GET
Orchestrates publishing workflow 10 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 10"
description: "Orchestrates publishing workflow 10 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-010
description: "Orchestrates publishing workflow 10 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 10 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 11 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 11"
description: "Orchestrates publishing workflow 11 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-011
description: "Orchestrates publishing workflow 11 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 11 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves publishing operational data for workflow 12.
naftiko: "0.5"
info:
label: "Publishing Data Query 12"
description: "Retrieves publishing operational data for workflow 12."
tags:
- publishing
- operations
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-data-12
description: "Query publishing data for workflow 12."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-12
method: GET
Orchestrates publishing workflow 13 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 13"
description: "Orchestrates publishing workflow 13 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-013
description: "Orchestrates publishing workflow 13 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 13 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 14 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 14"
description: "Orchestrates publishing workflow 14 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-014
description: "Orchestrates publishing workflow 14 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 14 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves publishing operational data for workflow 15.
naftiko: "0.5"
info:
label: "Publishing Data Query 15"
description: "Retrieves publishing operational data for workflow 15."
tags:
- publishing
- operations
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-data-15
description: "Query publishing data for workflow 15."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-15
method: GET
Orchestrates publishing workflow 16 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 16"
description: "Orchestrates publishing workflow 16 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-016
description: "Orchestrates publishing workflow 16 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 16 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 17 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 17"
description: "Orchestrates publishing workflow 17 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-017
description: "Orchestrates publishing workflow 17 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 17 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves publishing operational data for workflow 18.
naftiko: "0.5"
info:
label: "Publishing Data Query 18"
description: "Retrieves publishing operational data for workflow 18."
tags:
- publishing
- operations
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-data-18
description: "Query publishing data for workflow 18."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-18
method: GET
Orchestrates publishing workflow 19 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 19"
description: "Orchestrates publishing workflow 19 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-019
description: "Orchestrates publishing workflow 19 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 19 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 20 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 20"
description: "Orchestrates publishing workflow 20 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-020
description: "Orchestrates publishing workflow 20 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 20 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves publishing operational data for workflow 21.
naftiko: "0.5"
info:
label: "Publishing Data Query 21"
description: "Retrieves publishing operational data for workflow 21."
tags:
- publishing
- operations
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-data-21
description: "Query publishing data for workflow 21."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-21
method: GET
Orchestrates publishing workflow 22 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 22"
description: "Orchestrates publishing workflow 22 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-022
description: "Orchestrates publishing workflow 22 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 22 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 23 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 23"
description: "Orchestrates publishing workflow 23 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-023
description: "Orchestrates publishing workflow 23 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 23 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves publishing operational data for workflow 24.
naftiko: "0.5"
info:
label: "Publishing Data Query 24"
description: "Retrieves publishing operational data for workflow 24."
tags:
- publishing
- operations
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-data-24
description: "Query publishing data for workflow 24."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-24
method: GET
Orchestrates publishing workflow 25 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 25"
description: "Orchestrates publishing workflow 25 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-025
description: "Orchestrates publishing workflow 25 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 25 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 26 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 26"
description: "Orchestrates publishing workflow 26 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-026
description: "Orchestrates publishing workflow 26 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 26 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves publishing operational data for workflow 27.
naftiko: "0.5"
info:
label: "Publishing Data Query 27"
description: "Retrieves publishing operational data for workflow 27."
tags:
- publishing
- operations
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-data-27
description: "Query publishing data for workflow 27."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-27
method: GET
Orchestrates publishing workflow 28 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 28"
description: "Orchestrates publishing workflow 28 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-028
description: "Orchestrates publishing workflow 28 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 28 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates publishing workflow 29 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Publishing Workflow 29"
description: "Orchestrates publishing workflow 29 by coordinating across systems, validating data, and sending notifications."
tags:
- publishing
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: run-publishing-workflow-029
description: "Orchestrates publishing workflow 29 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Publishing Workflow 29 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.
naftiko: "0.5"
info:
label: "Quarterly Business Review Orchestrator"
description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
tags:
- analytics
- business
- sharepoint
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-quarterly-business-review-orchestrator
description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Quarterly Business Review Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
When an author submits supplementary research data, uploads to the research data repository, generates a data DOI, links it to the article record, and notifies the data team in Slack.
naftiko: "0.5"
info:
label: "Research Data Repository Upload Pipeline"
description: "When an author submits supplementary research data, uploads to the research data repository, generates a data DOI, links it to the article record, and notifies the data team in Slack."
tags:
- research
- data-repository
- publishing
- slack
capability:
exposes:
- type: mcp
namespace: research-data
port: 8080
tools:
- name: publish-research-data
description: "Given a manuscript ID and data package, upload to repository, mint DOI, link to article, and notify."
inputParameters:
- name: manuscript_id
in: body
type: string
description: "The associated manuscript identifier."
- name: dataset_title
in: body
type: string
description: "Title of the research dataset."
- name: data_file_url
in: body
type: string
description: "URL to the data package file."
- name: author_email
in: body
type: string
description: "The data author's email."
steps:
- name: upload-data
type: call
call: "repository.upload-dataset"
with:
title: "{{dataset_title}}"
file_url: "{{data_file_url}}"
manuscript_id: "{{manuscript_id}}"
- name: mint-doi
type: call
call: "repository.create-doi"
with:
dataset_id: "{{upload-data.dataset_id}}"
title: "{{dataset_title}}"
- name: link-to-article
type: call
call: "editorial.add-supplementary-data"
with:
manuscript_id: "{{manuscript_id}}"
data_doi: "{{mint-doi.doi}}"
data_url: "{{upload-data.url}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "research-data"
text: "Research data published for {{manuscript_id}}: {{dataset_title}}. DOI: {{mint-doi.doi}}. Repository: {{upload-data.url}}"
consumes:
- type: http
namespace: repository
baseUri: "https://api.wiley.com/data-repository/v1"
authentication:
type: bearer
token: "$secrets.repository_api_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: upload-dataset
method: POST
- name: dois
path: "/datasets/{{dataset_id}}/doi"
inputParameters:
- name: dataset_id
in: path
operations:
- name: create-doi
method: POST
- type: http
namespace: editorial
baseUri: "https://api.wiley.com/editorial/v2"
authentication:
type: bearer
token: "$secrets.editorial_api_token"
resources:
- name: supplementary
path: "/manuscripts/{{manuscript_id}}/supplementary"
inputParameters:
- name: manuscript_id
in: path
operations:
- name: add-supplementary-data
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When an article retraction is approved, updates the article metadata in the content system, registers the retraction with Crossref, notifies indexing services, and alerts the editorial team in Slack.
naftiko: "0.5"
info:
label: "Retraction Notice Pipeline"
description: "When an article retraction is approved, updates the article metadata in the content system, registers the retraction with Crossref, notifies indexing services, and alerts the editorial team in Slack."
tags:
- publishing
- peer-review
- crossref
- slack
- integrity
capability:
exposes:
- type: mcp
namespace: article-retraction
port: 8080
tools:
- name: process-retraction
description: "Given an article DOI and retraction reason, update metadata, register with Crossref, and notify."
inputParameters:
- name: article_doi
in: body
type: string
description: "The article DOI to retract."
- name: retraction_reason
in: body
type: string
description: "The reason for retraction."
- name: journal_code
in: body
type: string
description: "The journal code."
steps:
- name: update-metadata
type: call
call: "content.update-article-status"
with:
doi: "{{article_doi}}"
status: "retracted"
retraction_reason: "{{retraction_reason}}"
- name: register-crossref
type: call
call: "crossref.register-retraction"
with:
doi: "{{article_doi}}"
reason: "{{retraction_reason}}"
- name: alert-team
type: call
call: "slack.post-message"
with:
channel: "editorial-integrity"
text: "RETRACTION NOTICE: {{article_doi}} ({{journal_code}}). Reason: {{retraction_reason}}. Crossref updated. Indexing services notified."
consumes:
- type: http
namespace: content
baseUri: "https://api.wiley.com/content/v2"
authentication:
type: bearer
token: "$secrets.content_api_token"
resources:
- name: articles
path: "/articles/{{doi}}"
inputParameters:
- name: doi
in: path
operations:
- name: update-article-status
method: PATCH
- type: http
namespace: crossref
baseUri: "https://doi.crossref.org"
authentication:
type: basic
username: "$secrets.crossref_user"
password: "$secrets.crossref_password"
resources:
- name: deposits
path: "/servlet/deposit"
operations:
- name: register-retraction
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Queries Snowflake for reviewer performance metrics and generates a summary for editorial boards.
naftiko: "0.5"
info:
label: "Reviewer Performance Report"
description: "Queries Snowflake for reviewer performance metrics and generates a summary for editorial boards."
tags:
- peer-review
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: reviewer-analytics
port: 8080
tools:
- name: get-reviewer-performance
description: "Fetch reviewer performance metrics for a journal and period."
inputParameters:
- name: journal_code
in: body
type: string
description: "The journal code."
- name: year
in: body
type: string
description: "The reporting year."
call: "snowflake.execute-query"
with:
statement: "SELECT reviewer_id, reviews_completed, avg_turnaround_days, avg_quality_score, invitation_acceptance_rate FROM publishing.reviewer_metrics WHERE journal_code = '{{journal_code}}' AND year = '{{year}}' ORDER BY avg_quality_score DESC"
database: "WILEY_ANALYTICS"
outputParameters:
- name: results
type: array
mapping: "$.data"
consumes:
- type: http
namespace: snowflake
baseUri: "https://wiley.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
Retrieves a Salesforce institutional account by ID and returns name, subscription tier, and contract details.
naftiko: "0.5"
info:
label: "Salesforce Account Lookup"
description: "Retrieves a Salesforce institutional account by ID and returns name, subscription tier, and contract details."
tags:
- crm
- salesforce
- subscriptions
capability:
exposes:
- type: mcp
namespace: crm
port: 8080
tools:
- name: get-institution-account
description: "Look up a Salesforce institutional account by ID."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account ID."
call: "salesforce.get-account"
with:
account_id: "{{account_id}}"
outputParameters:
- name: name
type: string
mapping: "$.Name"
- name: subscription_tier
type: string
mapping: "$.Subscription_Tier__c"
- name: contract_end
type: string
mapping: "$.Contract_End_Date__c"
- name: total_journals
type: integer
mapping: "$.Total_Journals__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://wiley.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
Retrieves a Salesforce account by account ID.
naftiko: "0.5"
info:
label: "Salesforce Account Viewer"
description: "Retrieves a Salesforce account by account ID."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-salesforce
description: "Retrieves a Salesforce account by account ID."
inputParameters:
- name: entity_id
in: body
type: string
description: "The salesforce account viewer identifier."
call: "sales-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: sales-api
baseUri: "https://api.wiley.com/sales/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: salesforce
path: "/salesforce/account/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-salesforce
method: GET
When an expense report is submitted in SAP Concur, validates and posts to SAP S/4HANA, and notifies finance.
naftiko: "0.5"
info:
label: "SAP Concur Expense Report Sync"
description: "When an expense report is submitted in SAP Concur, validates and posts to SAP S/4HANA, and notifies finance."
tags:
- finance
- sap-concur
- sap-s4hana
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: expense-management
port: 8080
tools:
- name: sync-expense-report
description: "Given a Concur expense report ID, validate, post to SAP, and notify finance."
inputParameters:
- name: report_id
in: body
type: string
description: "The SAP Concur expense report identifier."
steps:
- name: get-report
type: call
call: "concur.get-expense-report"
with:
report_id: "{{report_id}}"
- name: post-to-sap
type: call
call: "sap.create-expense-entry"
with:
amount: "{{get-report.total_amount}}"
currency: "{{get-report.currency_code}}"
cost_center: "{{get-report.cost_center}}"
- name: notify-finance
type: call
call: "msteams.send-message"
with:
channel_id: "finance-expenses"
text: "Expense report {{report_id}} for {{get-report.total_amount}} posted to SAP. Document: {{post-to-sap.document_number}}"
consumes:
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: sap
baseUri: "https://wiley-s4.sap.com/sap/opu/odata/sap/API_FINANCIALACCOUNTING_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: journal-entries
path: "/A_JournalEntry"
operations:
- name: create-expense-entry
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-message
method: POST
Looks up a SAP purchase order by number.
naftiko: "0.5"
info:
label: "SAP Purchase Order Status"
description: "Looks up a SAP purchase order by number."
tags:
- procurement
- sap
- purchase-order
capability:
exposes:
- type: mcp
namespace: erp-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}}"
outputParameters:
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: vendor
type: string
mapping: "$.d.Supplier.CompanyName"
- name: total_value
type: string
mapping: "$.d.TotalAmount"
consumes:
- type: http
namespace: sap
baseUri: "https://wiley-s4.sap.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
Retrieves a SAP purchase order by number.
naftiko: "0.5"
info:
label: "SAP Purchase Order Viewer"
description: "Retrieves a SAP purchase order by number."
tags:
- procurement
- sap
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-sap
description: "Retrieves a SAP purchase order by number."
inputParameters:
- name: entity_id
in: body
type: string
description: "The sap purchase order viewer identifier."
call: "procurement-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: procurement-api
baseUri: "https://api.wiley.com/procurement/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: sap
path: "/sap/purchase/order/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-sap
method: GET
Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
naftiko: "0.5"
info:
label: "Security Audit Orchestrator"
description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
tags:
- security
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: run-security-audit-orchestrator
description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Security Audit Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Creates a new incident in ServiceNow.
naftiko: "0.5"
info:
label: "ServiceNow Incident Creator"
description: "Creates a new incident in ServiceNow."
tags:
- it
- servicenow
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: get-servicenow
description: "Creates a new incident in ServiceNow."
inputParameters:
- name: entity_id
in: body
type: string
description: "The servicenow incident creator identifier."
call: "it-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: it-api
baseUri: "https://api.wiley.com/it/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: servicenow
path: "/servicenow/incident/creator/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-servicenow
method: GET
Retrieves a ServiceNow incident by number and returns status, priority, and assigned group.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Retrieves a ServiceNow incident by number and returns status, priority, and assigned group."
tags:
- it-ops
- servicenow
- incident
capability:
exposes:
- type: mcp
namespace: it-service
port: 8080
tools:
- name: get-incident
description: "Look up a ServiceNow incident by number."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number."
call: "servicenow.get-incident"
with:
number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
- name: assigned_group
type: string
mapping: "$.result.assignment_group.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://wiley.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{number}}"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
Retrieves a document from SharePoint.
naftiko: "0.5"
info:
label: "SharePoint Document Viewer"
description: "Retrieves a document from SharePoint."
tags:
- collaboration
- sharepoint
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-sharepoint
description: "Retrieves a document from SharePoint."
inputParameters:
- name: entity_id
in: body
type: string
description: "The sharepoint document viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.wiley.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: sharepoint
path: "/sharepoint/document/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-sharepoint
method: GET
Posts a formatted message to a specified Slack channel.
naftiko: "0.5"
info:
label: "Slack Channel Message Post"
description: "Posts a formatted message to a specified Slack channel."
tags:
- collaboration
- slack
- messaging
capability:
exposes:
- type: mcp
namespace: messaging
port: 8080
tools:
- name: post-slack-message
description: "Post a message to a Slack channel."
inputParameters:
- name: channel
in: body
type: string
description: "The Slack channel name or ID."
- name: text
in: body
type: string
description: "The message text."
call: "slack.post-message"
with:
channel: "{{channel}}"
text: "{{text}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Sends a notification to a Slack channel.
naftiko: "0.5"
info:
label: "Slack Notification Publisher"
description: "Sends a notification to a Slack channel."
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-slack
description: "Sends a notification to a Slack channel."
inputParameters:
- name: entity_id
in: body
type: string
description: "The slack notification publisher identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.wiley.com/communications/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: slack
path: "/slack/notification/publisher/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-slack
method: GET
Runs an analytics query against the Snowflake data warehouse.
naftiko: "0.5"
info:
label: "Snowflake Analytics Query"
description: "Runs an analytics query against the Snowflake data warehouse."
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-snowflake
description: "Runs an analytics query against the Snowflake data warehouse."
inputParameters:
- name: entity_id
in: body
type: string
description: "The snowflake analytics query identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.wiley.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: snowflake
path: "/snowflake/analytics/query/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-snowflake
method: GET
Executes a publishing analytics query against Snowflake for submissions, reviews, and publication metrics.
naftiko: "0.5"
info:
label: "Snowflake Publishing Analytics Query"
description: "Executes a publishing analytics query against Snowflake for submissions, reviews, and publication metrics."
tags:
- analytics
- snowflake
- publishing
capability:
exposes:
- type: mcp
namespace: publishing-analytics
port: 8080
tools:
- name: query-publishing-metrics
description: "Run a publishing analytics query on Snowflake for a journal and period."
inputParameters:
- name: journal_code
in: body
type: string
description: "The journal code."
- name: year
in: body
type: string
description: "The reporting year."
call: "snowflake.execute-query"
with:
statement: "SELECT month, total_submissions, acceptance_rate, avg_review_days, total_published FROM publishing.monthly_metrics WHERE journal_code = '{{journal_code}}' AND year = '{{year}}' ORDER BY month"
database: "WILEY_ANALYTICS"
outputParameters:
- name: results
type: array
mapping: "$.data"
consumes:
- type: http
namespace: snowflake
baseUri: "https://wiley.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
When a special issue is proposed, creates a project in Salesforce, sets up a shared workspace in SharePoint, notifies the editorial board in Microsoft Teams, and opens a timeline tracking sheet in Google Sheets.
naftiko: "0.5"
info:
label: "Special Issue Proposal Workflow"
description: "When a special issue is proposed, creates a project in Salesforce, sets up a shared workspace in SharePoint, notifies the editorial board in Microsoft Teams, and opens a timeline tracking sheet in Google Sheets."
tags:
- publishing
- special-issues
- salesforce
- sharepoint
- microsoft-teams
- google-sheets
capability:
exposes:
- type: mcp
namespace: special-issues
port: 8080
tools:
- name: launch-special-issue
description: "Given proposal details, create project, set up workspace, notify board, and create timeline."
inputParameters:
- name: journal_code
in: body
type: string
description: "The journal code."
- name: issue_title
in: body
type: string
description: "The special issue title."
- name: guest_editor_email
in: body
type: string
description: "The guest editor's email."
- name: submission_deadline
in: body
type: string
description: "Submission deadline in YYYY-MM-DD format."
steps:
- name: create-project
type: call
call: "salesforce.create-opportunity"
with:
name: "Special Issue: {{issue_title}} ({{journal_code}})"
stage: "Planning"
close_date: "{{submission_deadline}}"
- name: create-workspace
type: call
call: "sharepoint.create-folder"
with:
site_id: "special_issues"
folder_path: "{{journal_code}}/{{issue_title}}"
- name: notify-board
type: call
call: "msteams.send-message"
with:
channel_id: "editorial-{{journal_code}}"
text: "New special issue proposed: {{issue_title}} for {{journal_code}}. Guest editor: {{guest_editor_email}}. Deadline: {{submission_deadline}}. Workspace: {{create-workspace.url}}"
- name: create-timeline
type: call
call: "gsheets.create-spreadsheet"
with:
title: "Timeline: {{issue_title}} - {{journal_code}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://wiley.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: 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: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: spreadsheets
path: "/spreadsheets"
operations:
- name: create-spreadsheet
method: POST
Verifies whether an institution has active subscription access to a specific journal or content collection.
naftiko: "0.5"
info:
label: "Subscription Access Verification"
description: "Verifies whether an institution has active subscription access to a specific journal or content collection."
tags:
- subscriptions
- access
- entitlements
capability:
exposes:
- type: mcp
namespace: subscription-access
port: 8080
tools:
- name: verify-access
description: "Check if an institution has active access to a journal or collection."
inputParameters:
- name: institution_id
in: body
type: string
description: "The institutional subscriber identifier."
- name: journal_code
in: body
type: string
description: "The journal ISSN or code."
call: "entitlements.check-access"
with:
institution_id: "{{institution_id}}"
resource_id: "{{journal_code}}"
outputParameters:
- name: has_access
type: boolean
mapping: "$.entitlement.active"
- name: subscription_type
type: string
mapping: "$.entitlement.type"
- name: expiry_date
type: string
mapping: "$.entitlement.end_date"
consumes:
- type: http
namespace: entitlements
baseUri: "https://api.wiley.com/entitlements/v1"
authentication:
type: bearer
token: "$secrets.entitlements_api_token"
resources:
- name: access
path: "/institutions/{{institution_id}}/access/{{resource_id}}"
inputParameters:
- name: institution_id
in: path
- name: resource_id
in: path
operations:
- name: check-access
method: GET
When an institutional subscription approaches renewal, retrieves account details from Salesforce, generates a renewal proposal in Google Sheets, sends it via SendGrid, and creates a follow-up task.
naftiko: "0.5"
info:
label: "Subscription Renewal Pipeline"
description: "When an institutional subscription approaches renewal, retrieves account details from Salesforce, generates a renewal proposal in Google Sheets, sends it via SendGrid, and creates a follow-up task."
tags:
- subscriptions
- salesforce
- google-sheets
- sendgrid
- renewals
capability:
exposes:
- type: mcp
namespace: subscription-renewal
port: 8080
tools:
- name: initiate-renewal
description: "Given a Salesforce account ID, generate renewal proposal, send to contact, and create follow-up."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce institutional account ID."
- name: renewal_year
in: body
type: string
description: "The renewal year."
steps:
- name: get-account
type: call
call: "salesforce.get-account"
with:
account_id: "{{account_id}}"
- name: get-usage
type: call
call: "usage.get-annual-summary"
with:
customer_id: "{{account_id}}"
year: "{{renewal_year}}"
- name: create-proposal
type: call
call: "gsheets.create-spreadsheet"
with:
title: "Renewal Proposal: {{get-account.name}} - {{renewal_year}}"
- name: send-proposal
type: call
call: "sendgrid.send-email"
with:
to: "{{get-account.contact_email}}"
template_id: "subscription_renewal"
dynamic_data:
institution_name: "{{get-account.name}}"
current_tier: "{{get-account.subscription_tier}}"
usage_summary: "{{get-usage.total_downloads}}"
proposal_url: "{{create-proposal.url}}"
- name: create-task
type: call
call: "salesforce.create-task"
with:
subject: "Follow up on renewal: {{get-account.name}}"
due_date_offset: "14"
priority: "High"
consumes:
- type: http
namespace: salesforce
baseUri: "https://wiley.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account
method: GET
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
- type: http
namespace: usage
baseUri: "https://api.wiley.com/usage/v5"
authentication:
type: bearer
token: "$secrets.usage_api_token"
resources:
- name: annual-summary
path: "/reports/summary"
operations:
- name: get-annual-summary
method: GET
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: spreadsheets
path: "/spreadsheets"
operations:
- name: create-spreadsheet
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-email
method: POST
Retrieves content usage statistics for a subscriber.
naftiko: "0.5"
info:
label: "Subscription Usage Report"
description: "Retrieves content usage statistics for a subscriber."
tags:
- publishing
- analytics
capability:
exposes:
- type: mcp
namespace: publishing
port: 8080
tools:
- name: get-subscription
description: "Retrieves content usage statistics for a subscriber."
inputParameters:
- name: entity_id
in: body
type: string
description: "The subscription usage report identifier."
call: "publishing-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: publishing-api
baseUri: "https://api.wiley.com/publishing/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: subscription
path: "/subscription/usage/report/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-subscription
method: GET
Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.
naftiko: "0.5"
info:
label: "Sustainability Metrics Collection Orchestrator"
description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
tags:
- sustainability
- analytics
- compliance
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: run-sustainability-metrics-collection-orchestrator
description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
When a professor adopts a Wiley textbook, creates a Salesforce opportunity, provisions digital access in the LMS integration, sends welcome materials via SendGrid, and notifies the sales rep in Slack.
naftiko: "0.5"
info:
label: "Textbook Adoption Pipeline"
description: "When a professor adopts a Wiley textbook, creates a Salesforce opportunity, provisions digital access in the LMS integration, sends welcome materials via SendGrid, and notifies the sales rep in Slack."
tags:
- publishing
- textbooks
- salesforce
- sendgrid
- slack
capability:
exposes:
- type: mcp
namespace: textbook-adoption
port: 8080
tools:
- name: process-adoption
description: "Given adoption details, create opportunity, provision access, send materials, and notify sales."
inputParameters:
- name: professor_email
in: body
type: string
description: "The adopting professor's email."
- name: isbn
in: body
type: string
description: "The textbook ISBN."
- name: institution_name
in: body
type: string
description: "The institution name."
- name: course_name
in: body
type: string
description: "The course name."
- name: student_count
in: body
type: integer
description: "Expected number of students."
steps:
- name: create-opportunity
type: call
call: "salesforce.create-opportunity"
with:
name: "Adoption: {{isbn}} - {{institution_name}} - {{course_name}}"
stage: "Adopted"
amount_estimate: "{{student_count}}"
- name: provision-access
type: call
call: "lms.provision-course-materials"
with:
isbn: "{{isbn}}"
professor_email: "{{professor_email}}"
student_count: "{{student_count}}"
- name: send-materials
type: call
call: "sendgrid.send-email"
with:
to: "{{professor_email}}"
template_id: "textbook_adoption_welcome"
dynamic_data:
isbn: "{{isbn}}"
course: "{{course_name}}"
access_url: "{{provision-access.url}}"
- name: notify-sales
type: call
call: "slack.post-message"
with:
channel: "textbook-adoptions"
text: "New adoption: {{isbn}} at {{institution_name}} for {{course_name}} ({{student_count}} students). Opportunity: {{create-opportunity.id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://wiley.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: lms
baseUri: "https://api.wiley.com/lms-integration/v1"
authentication:
type: bearer
token: "$secrets.lms_api_token"
resources:
- name: course-materials
path: "/provisions"
operations:
- name: provision-course-materials
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-email
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.
naftiko: "0.5"
info:
label: "Third Party Risk Assessment Orchestrator"
description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
tags:
- risk
- procurement
- compliance
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: run-third-party-risk-assessment-orchestrator
description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Third Party Risk Assessment Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.
naftiko: "0.5"
info:
label: "Vendor Contract Renewal Pipeline"
description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
tags:
- procurement
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-vendor-contract-renewal-pipeline
description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.wiley.com/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.wiley.com/v2"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves employee details from Workday.
naftiko: "0.5"
info:
label: "Workday Employee Directory Lookup"
description: "Retrieves employee details from Workday."
tags:
- hr
- workday
- employee
capability:
exposes:
- type: mcp
namespace: hr-directory
port: 8080
tools:
- name: get-employee
description: "Look up a Workday employee by worker ID."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.worker.name.full"
- name: department
type: string
mapping: "$.worker.organization.name"
- name: manager
type: string
mapping: "$.worker.manager.name.full"
- name: email
type: string
mapping: "$.worker.contact.email"
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
Retrieves employee profile from Workday.
naftiko: "0.5"
info:
label: "Workday Employee Profile"
description: "Retrieves employee profile from Workday."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-workday
description: "Retrieves employee profile from Workday."
inputParameters:
- name: entity_id
in: body
type: string
description: "The workday employee profile identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.wiley.com/hr/v1"
authentication:
type: bearer
token: "$secrets.wiley_api_token"
resources:
- name: workday
path: "/workday/employee/profile/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-workday
method: GET
Creates a Zoom webinar for author workshops or editorial board meetings, sends invitations via SendGrid, and posts to Slack.
naftiko: "0.5"
info:
label: "Zoom Webinar Scheduler"
description: "Creates a Zoom webinar for author workshops or editorial board meetings, sends invitations via SendGrid, and posts to Slack."
tags:
- collaboration
- zoom
- sendgrid
- slack
- events
capability:
exposes:
- type: mcp
namespace: webinar-mgmt
port: 8080
tools:
- name: schedule-webinar
description: "Given webinar details, create Zoom webinar, send invites, and announce."
inputParameters:
- name: topic
in: body
type: string
description: "The webinar topic."
- name: start_time
in: body
type: string
description: "Start time in ISO 8601 format."
- name: duration_minutes
in: body
type: integer
description: "Duration in minutes."
- name: panelist_emails
in: body
type: string
description: "Comma-separated panelist emails."
steps:
- name: create-webinar
type: call
call: "zoom.create-webinar"
with:
topic: "{{topic}}"
start_time: "{{start_time}}"
duration: "{{duration_minutes}}"
- name: send-invites
type: call
call: "sendgrid.send-email"
with:
to: "{{panelist_emails}}"
template_id: "webinar_invitation"
dynamic_data:
topic: "{{topic}}"
start_time: "{{start_time}}"
join_url: "{{create-webinar.join_url}}"
- name: announce
type: call
call: "slack.post-message"
with:
channel: "events-webinars"
text: "Webinar scheduled: {{topic}} at {{start_time}}. Registration: {{create-webinar.registration_url}}"
consumes:
- type: http
namespace: zoom
baseUri: "https://api.zoom.us/v2"
authentication:
type: bearer
token: "$secrets.zoom_token"
resources:
- name: webinars
path: "/users/me/webinars"
operations:
- name: create-webinar
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-email
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST