Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Server capabilities have not been inspected yet.

Tools

Functions exposed to the LLM to take actions

NameDescription
solve_z3C

Solve a Z3 constraint satisfaction problem.

Takes a structured problem definition and returns a solution using Z3 solver.
Handles both satisfiability and optimization problems.

Args:
    problem: Problem definition containing variables and constraints

Returns:
    Solution results as TextContent list, including values and satisfiability status
solve_z3_simpleB

Simplified interface for Z3 constraint problems.

A more direct way to solve Z3 problems without full model structure.
Just provide variables and constraints as simple lists.

Args:
    variables: List of dicts with 'name' and 'type' for each variable
    constraints: List of constraint expressions as strings
    description: Optional problem description

Returns:
    Solution results as TextContent list
solve_highs_problemA

Solve a HiGHs linear/mixed-integer programming problem.

This tool takes a HiGHs optimization problem defined with variables, objective,
and constraints, and returns a solution if one exists.

HiGHs is a high-performance linear programming solver that supports:
- Linear programming (LP)
- Mixed-integer programming (MIP)
- Both dense and sparse constraint matrices
- Various solver algorithms (simplex, interior point, etc.)

Example problem structure:
{
    "problem": {
        "sense": "minimize",
        "objective": {
            "linear": [1.0, 2.0, 3.0]
        },
        "variables": [
            {"name": "x1", "lb": 0, "ub": 10, "type": "cont"},
            {"name": "x2", "lb": 0, "ub": null, "type": "cont"},
            {"name": "x3", "lb": 0, "ub": 1, "type": "bin"}
        ],
        "constraints": {
            "dense": [
                [1, 1, 0],
                [0, 1, 1]
            ],
            "sense": ["<=", ">="],
            "rhs": [5, 3]
        }
    },
    "options": {
        "time_limit": 60.0,
        "output_flag": false
    }
}

Args:
    problem: The HiGHs problem definition with variables, objective, and constraints

Returns:
    A list of TextContent containing the solution or an error message
simple_highs_solverA

A simplified interface for solving HiGHs linear programming problems.

This tool provides a more straightforward interface for HiGHs problems,
without requiring the full HiGHSProblem model structure.

Args:
    sense: Optimization sense, either "minimize" or "maximize"
    objective_coeffs: List of objective function coefficients
    variables: List of variable definitions with optional bounds and types
    constraint_matrix: 2D list representing the constraint matrix (dense format)
    constraint_senses: List of constraint directions ("<=", ">=", "=")
    rhs_values: List of right-hand side values for constraints
    options: Optional solver options dictionary
    description: Optional description of the problem

Returns:
    A list of TextContent containing the solution or an error message
solve_cvxpy_problemB

Solve a CVXPY optimization problem.

This tool takes a CVXPY optimization problem defined with variables, objective,
and constraints, and returns a solution if one exists.

Example:

Solve the following problem:

    minimize ||Ax - b||₂²
    subject to:
    0 ≤ x ≤ 1
    where A = [1.0, -0.5; 0.5, 2.0; 0.0, 1.0] and b = [2.0, 1.0, -1.0]

Should be this tool call:

    simple_cvxpy_solver(
        variables=[{"name": "x", "shape": 2}],
        objective_type="minimize",
        objective_expr="cp.sum_squares(np.array(A) @ x - np.array(b))",
        constraints=["x >= 0", "x <= 1"],
        parameters={"A": [[1.0, -0.5], [0.5, 2.0], [0.0, 1.0]],
                    "b": [2.0, 1.0, -1.0]}
    )

Args:
    problem: The problem definition with variables, objective, and constraints

Returns:
    A list of TextContent containing the solution or an error message
simple_cvxpy_solverA

A simpler interface for solving CVXPY optimization problems.

This tool provides a more straightforward interface for CVXPY problems,
without requiring the full CVXPYProblem model structure.

Args:
    variables: List of variable definitions, each with 'name' and 'shape'
    objective_type: Either 'minimize' or 'maximize'
    objective_expr: The objective function expression as a string
    constraints: List of constraint expressions as strings
    parameters: Dictionary of parameter values (e.g., matrices A, b)
    description: Optional description of the problem

Returns:
    A list of TextContent containing the solution or an error message
solve_ortools_problemA

Solve a constraint programming problem using Google OR-Tools.

This tool takes a constraint programming problem defined with variables,
constraints, and an optional objective, and returns a solution if one exists.

Important Note:
    Each constraint expression must be a single evaluable Python statement.
    You cannot use Python control flow (loops, if statements) in the expressions.
    Instead, you need to generate separate constraints for each case.

Example:
    Nurse Scheduling Problem:
    ```python
    # Schedule 4 nurses across 3 shifts over 3 days
    shifts_var = Variable(
        name="shifts_var",
        type=VariableType.BOOLEAN,
        shape=[4, 3, 3],  # [nurses, days, shifts]
        description="Binary variable indicating if a nurse works a shift",
    )

    constraints = []

    # INCORRECT - This will fail:
    # Constraint(
    #     expression=(
    #         "for d in range(3): for s in range(3): "
    #         "model.add(sum([shifts_var[n][d][s] for n in range(4)]) == 1)"
    #     )
    # )

    # CORRECT - Add each constraint separately:
    # Each shift must have exactly one nurse
    for d in range(3):
        for s in range(3):
            constraints.append(
                Constraint(
                    expression=f"model.add(sum([shifts_var[n][{d}][{s}] for n in range(4)]) == 1)",
                    description=f"One nurse for day {d}, shift {s}",
                )
            )

    # Each nurse works at most one shift per day
    for n in range(4):
        for d in range(3):
            constraints.append(
                Constraint(
                    expression=f"model.add(sum([shifts_var[{n}][{d}][s] for s in range(3)]) <= 1)",
                    description=f"Max one shift for nurse {n} on day {d}",
                )
            )

    # Each nurse works 2-3 shifts total
    for n in range(4):
        constraints.append(
            Constraint(
                expression=f"model.add(sum([shifts_var[{n}][d][s] for d in range(3) for s in range(3)]) >= 2)",
                description=f"Min shifts for nurse {n}",
            )
        )

    problem = Problem(
        variables=[shifts_var],
        constraints=constraints,
        description="Hospital nurse scheduling problem",
    )
    ```

Args:
    problem: The problem definition with variables, constraints, and optional objective

Returns:
    A list of TextContent containing the solution or an error message

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 7 tools

Disambiguation2/5

There is significant overlap and confusion between tool pairs: simple_cvxpy_solver vs solve_cvxpy_problem, simple_highs_solver vs solve_highs_problem, and solve_z3 vs solve_z3_simple. Each pair appears to solve the same type of problem with only interface differences, making it difficult for an agent to choose correctly without deep understanding of the subtle distinctions in input formats.

Naming Consistency3/5

The naming is mixed with no clear pattern: some tools use 'simple_' prefix (simple_cvxpy_solver, simple_highs_solver, solve_z3_simple), others use 'solve_' prefix (solve_cvxpy_problem, solve_highs_problem, solve_ortools_problem, solve_z3), and there's inconsistency in suffix usage (_solver vs _problem). While readable, the conventions vary enough to cause confusion.

Tool Count4/5

With 7 tools, the count is reasonable for an optimization solver server covering multiple backends (CVXPY, HiGHs, OR-Tools, Z3). However, the duplication within backends makes the count feel slightly inflated rather than each tool earning its distinct place.

Completeness4/5

The server covers multiple optimization domains (convex, linear/mixed-integer, constraint programming, SMT) with solve capabilities, which is appropriate for a solver-focused toolset. Minor gaps might include lack of model validation or result analysis tools, but core solving functionality is well-represented across supported backends.

Maintenance

ActivityInactive
ResponsivenessNo issues