To solve this optimization problem, we need to define the decision variables, objective function, and constraints. Let's denote:

- $x_1$ as the number of folding bikes to stock,
- $x_2$ as the number of touring bikes to stock.

The profit from each folding bike is $200, and from each touring bike is $350. Thus, the total profit can be represented as $200x_1 + 350x_2$.

There are two main constraints:
1. The total demand constraint: $x_1 + x_2 \leq 100$, since the monthly demand will not exceed 100 bikes.
2. The inventory value constraint: $550x_1 + 700x_2 \leq 30000$, because the owner wants to ensure that there is at most $30,000 worth of bikes in stock.

We also have non-negativity constraints since we cannot stock a negative number of bikes: $x_1 \geq 0$ and $x_2 \geq 0$.

The objective is to maximize profit, which translates into the following linear programming problem:

Maximize: $200x_1 + 350x_2$

Subject to:
- $x_1 + x_2 \leq 100$
- $550x_1 + 700x_2 \leq 30000$
- $x_1, x_2 \geq 0$

Now, let's translate this problem into Gurobi code in Python:

```python
from gurobipy import *

# Create a new model
m = Model("Bike_Stocking")

# Define the decision variables
x1 = m.addVar(vtype=GRB.CONTINUOUS, name="folding_bikes")
x2 = m.addVar(vtype=GRB.CONTINUOUS, name="touring_bikes")

# Set the objective function
m.setObjective(200*x1 + 350*x2, GRB.MAXIMIZE)

# Add constraints
m.addConstr(x1 + x2 <= 100, "demand_constraint")
m.addConstr(550*x1 + 700*x2 <= 30000, "inventory_value_constraint")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Stock {x1.x} folding bikes")
    print(f"Stock {x2.x} touring bikes")
    print(f"Maximum profit: ${200*x1.x + 350*x2.x}")
else:
    print("No optimal solution found")

```
```python
from gurobipy import *

# Create a new model
m = Model("Bike_Stocking")

# Define the decision variables
x1 = m.addVar(vtype=GRB.CONTINUOUS, name="folding_bikes")
x2 = m.addVar(vtype=GRB.CONTINUOUS, name="touring_bikes")

# Set the objective function
m.setObjective(200*x1 + 350*x2, GRB.MAXIMIZE)

# Add constraints
m.addConstr(x1 + x2 <= 100, "demand_constraint")
m.addConstr(550*x1 + 700*x2 <= 30000, "inventory_value_constraint")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Stock {x1.x} folding bikes")
    print(f"Stock {x2.x} touring bikes")
    print(f"Maximum profit: ${200*x1.x + 350*x2.x}")
else:
    print("No optimal solution found")

```