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

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
solveB

Execute Z3 Python code to solve SMT constraints.

The code can use any Z3 Python API functions. Common imports (Solver, Int, Real, Bool, And, Or, Not, etc.) are pre-loaded.

Example:

x = Int('x')
y = Int('y')
solver = Solver()
solver.add(x + y == 10)
solver.add(x - y == 4)
if solver.check() == sat:
    print(solver.model())
solve_smtlibC

Solve an SMT problem in SMT-LIB 2.0 format.

Example:

(declare-const x Int)
(declare-const y Int)
(assert (= (+ x y) 10))
(assert (= (- x y) 4))
(check-sat)
(get-model)
check_satA

Check satisfiability of a list of constraints.

Provide constraints as Z3 Python expressions. Variables will be auto-declared based on usage.

Example constraints:

  • "x + y == 10"

  • "x > 0"

  • "And(x < 100, y < 100)"

proveA

Attempt to prove a theorem by showing its negation is unsatisfiable.

Provide the theorem as a Z3 expression. If the negation is unsatisfiable, the theorem is proven.

Example: prove "ForAll([x], x + 0 == x)" for integer x

simplifyA

Simplify a Z3 expression.

Returns the simplified form of the given expression.

Example: simplify "And(x > 0, x > 0)" -> "x > 0"

solve_logic_programA

Solve a structured logic program (Logic-LLM format).

The program should have sections:

Declarations

  • EnumSort, IntSort, Function declarations

Constraints

  • Logical constraints

Example:

# Declarations
Color = EnumSort([red, green, blue])
assign = Function(Object -> Color)

# Constraints
assign(obj1) != assign(obj2)
session_add_variableB

Add a variable to the current solver session.

Supported types: int, real, bool, bitvec (with bits parameter)

session_add_constraintA

Add a constraint to the current solver session.

The constraint should be a valid Z3 expression using previously declared variables.

session_checkB

Check satisfiability of current session constraints and get the model if satisfiable.

session_pushA

Push a new context onto the solver stack (for backtracking).

session_popB

Pop a context from the solver stack (backtrack).

session_resetA

Reset the current solver session, clearing all variables and constraints.

list_sessionsA

List all active solver sessions.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation4/5

Most tools have clear distinct purposes, but check_sat, session_check, and solve all involve satisfiability checking and could cause confusion if descriptions are not carefully read. The session_* family is well-grouped.

Naming Consistency4/5

Uses snake_case consistently, but some tools are single verbs (prove, simplify, solve) while others use noun_verb_noun pattern (session_add_constraint) or verb_noun (check_sat, list_sessions). The session_ prefix provides grouping but introduces inconsistency.

Tool Count5/5

13 tools is appropriate for an SMT solver server, covering constraint solving, session management, multiple input formats, and theorem proving. Not too few or too many.

Completeness4/5

Covers core SMT operations well: standalone checking, session management, multiple input formats, and simplification. Minor gap: standalone check_sat may not return model, but session_check does. No explicit session deletion, but reset suffices.

Maintenance

ActivityInactive
ResponsivenessNo issues