Hi @iyashk-DB - Thank you for the tips.  Does the following sample code look correct?  Thanks for your help!

#################################################################
###### Create the stored procedure to write data to a table #####
%sql
CREATE OR REPLACE PROCEDURE myCatalog.mySchema.insert_data_procedure(
col1_value STRING,
col2_value STRING
)
LANGUAGE SQL
AS
BEGIN
INSERT INTO myCatalog.mySchema.myTable (column1, column2)
VALUES (col1_value, col2_value);
END;

#######################################################################
###### Define to execute a parameterized call to stored procedure #####
import requests

def call_insert_data_procedure(
col1_value: str,
col2_value: str,
databricks_host: str,
databricks_token: str
) -> str:
"""
Calls the insert_data_procedure stored procedure in Databricks via the SQL Statement Execution API.

Args:
col1_value (str): Value for the first column.
col2_value (str): Value for the second column.
databricks_host (str): Databricks workspace URL.
databricks_token (str): Databricks personal access token.

Returns:
str: Status message.
"""
endpoint = f"{databricks_host}/api/2.0/sql/statements/"
headers = {
"Authorization": f"Bearer {databricks_token}",
"Content-Type": "application/json"
}
sql = (
"CALL myCatalog.mySchema.insert_data_procedure("
f"'{col1_value}', '{col2_value}');"
)
payload = {
"statement": sql,
"warehouse_id": "<your_warehouse_id>"
}
response = requests.post(endpoint, headers=headers, json=payload)
response.raise_for_status()
return "Procedure executed successfully."


###########################################################
##### Define as a tool for an agent (LangChain style) #####
from langchain.tools import Tool

insert_data_tool = Tool(
name="InsertDataProcedure",
func=lambda col1, col2: call_insert_data_procedure(
col1, col2, "<your_databricks_host>", "<your_databricks_token>"
),
description="Inserts data into notification_schedule using the stored procedure."
)