How to Use dcc.Input to pass input as JSON Serialized variable?

Hi everyone I am trying to build an interface for my scraper application and I am having a difficult time with passing user input into a variable I have tried everything and keep getting an error that my inputs are Object of type function is not JSON serializable. I am also getting this callback error:

raise exceptions.InvalidCallbackReturnValue(
dash.exceptions.InvalidCallbackReturnValue: The callback for <Output output-submit.children>
returned a value having type tuple
which is not JSON serializable.
The value in question is either the only value returned,
or is in the top level of the returned list,
and has string representation
(<function CSV at 0x11e00a430>, <function pages at 0x104cf4160>, <function url at 0x11e004550>)
In general, Dash properties can only be
dash components, strings, dictionaries, numbers, None,
or lists of those.

here is my code if you would like to help! I appreciate any help I can get.

app.layout = html.Div([
    html.Div(
        html.Header(
            html.H1("Price Scraper")
        )
    ),
    html.Div(children=[
        html.Label(' address:'),
        dcc.Input(
            id='input-url',
            placeholder='Input Address',
            type="text",
            style={"width": "25%"}
        ),
        html.Div(id='output-url'),
        # ____________________________#
        html.Label('How many pages to scrape:'),
        dcc.Input(
            id='input-pages',
            placeholder='Input or choose pages to scrape',
            type="number",
            min="0"
        ),
        html.Div(id='output-pages'),
        # -----------------------------#
        html.Label('CSV Filename:'),
        dcc.Input(
            id='input-csv',
            placeholder='Input filename ending in .csv',
            type="text"
        ),
        html.Div(id='output-csv'),
        # ------------------------------#
        html.Button('submit',
                    id='input-submit'),
        html.Div(id='output-submit',
                 children='Click the button to run program'),
    ]),
])


@app.callback(
    Output(component_id='output-url', component_property='children'),
    [Input(component_id='input-url', component_property='value')]
)
def url(input_value):
    url = str(input_value)



# ---------------#
@app.callback(
    Output(component_id='output-pages', component_property='children'),
    [Input(component_id='input-pages', component_property='value')]
)
def pages(input_value):
    pages = str(input_value)



# ---------------#
@app.callback(
    Output(component_id='output-csv', component_property='children'),
    [Input(component_id='input-csv', component_property='value')]
)
def CSV(input_value):
    CSV = str(input_value)





#---------------#
@app.callback(
    Output(component_id='output-submit', component_property='children'),
    [Input(component_id='input-submit', component_property='n_clicks')]
)

def run_script(n_clicks):
    if n_clicks:
        print(CSV, pages, url)
# ---------------#
if __name__ == "__main__":
     app.run(debug=True)