Skip to main content
Glama
jupiterbak

AYX-MCP-Wrapper

by jupiterbak

start_workflow_execution

Initiate workflow execution by ID with input data to create a queued job and obtain a job ID for tracking.

Instructions

Start a workflow execution by its ID and return the job ID. This will create a new job and add it to the execution queue. This call will return a job ID that can be used to get the job details later. The input data is a list of name-value pairs, each containing a name and value.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
workflow_idYes
input_dataNo

Implementation Reference

  • Core handler function in AYXMCPTools class that validates input, enqueues the workflow job using Alteryx API, and returns the job response.
    def start_workflow_execution(self, workflow_id: str, input_data: list[InputData] = None):
        """Start a workflow execution by its ID and return the job ID. This will create a new job and add it to the execution queue.
        This call will return a job ID that can be used to get the job details. Once the job is executed, 
        the results can be retrieved via the produced JobID
        The input data is a list of name-value pairs, each containing a name and value."""
        try:
            workflow = self.workflows_api.workflows_get_workflow(workflow_id)
            if not workflow:
                return "Error: Workflow not found"
            questions = self.workflows_api.workflows_get_workflow_questions(workflow_id)
            if (not questions or len(questions) == 0) and (input_data):
                return "Error: Workflow has no questions, input data not allowed"
            if questions and len(questions) > 0:
                for question in questions:
                    if question.name not in [item.name for item in input_data]:
                        return f"Error: Input data must contain the question '{question.name}'"
                    
            # Convert InputData objects to AppValue objects
            app_values = None
            if input_data:
                app_values = [server_client.AppValue(name=item.name, value=item.value) for item in input_data]
                    
            # Proper type conversion
            workflow = server_client.WorkflowView(workflow)
            contract = server_client.EnqueueJobContract(worker_tag=workflow.worker_tag, questions=app_values)
            api_response = self.workflows_api.workflows_enqueue(workflow_id, contract)
            return pprint.pformat(api_response)
        except ApiException as e:
            return f"Error: {e}"
  • Pydantic BaseModel defining the structure for input data parameters (list of name-value pairs) used in workflow execution.
    class InputData(BaseModel):
        name: str
        value: str
  • MCP tool registration decorator (@app.tool()) that wraps and delegates to the core handler in tools.py.
    @self.app.tool()
    def start_workflow_execution(workflow_id: str, input_data: list[InputData] = None):
        """Start a workflow execution by its ID and return the job ID. 
        This will create a new job and add it to the execution queue.
        This call will return a job ID that can be used to get the job details later. 
        The input data is a list of name-value pairs, each containing a name and value."""
        return self.tools.start_workflow_execution(workflow_id, input_data)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jupiterbak/AYX-MCP-Wrapper'

If you have feedback or need assistance with the MCP directory API, please join our Discord server