openPASO (formerly OASiS): an MCP server that lets an AI model run nine finite-element and multiphysics codes, with curated knowledge, verified execution and cross-code coupling. Under active development; contributions welcome.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 58 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
audit_results
-
benchmark_poisson_cross_solver
-
benchmark_problem
-
browse_solver_tests
-
build_source
-
check_input
-
check_simulation_quality
-
compare_solvers
-
couple
-
couple_levels
-
couple_precice
-
coupled_solve
-
deep_validate
-
developer
-
discover
-
discover_sources
-
ensure_source
-
examples
-
fetch_source
-
generate_mesh
-
get_example_input
-
get_example_inputs
-
get_input_file_guide
-
get_input_schema
-
get_job_status
-
get_module_info
-
get_solver_architecture
-
get_solver_capabilities_matrix
-
get_solver_info
-
knowledge
-
list_jobs
-
list_solver_source_files
-
list_solvers
-
list_template_variants
-
list_tutorials
-
parameter_study
-
plot_all_fields
-
plot_result
-
post_process
-
prepare_simulation
-
query_documentation
-
read_solver_test_file
-
recommend_solver_for
-
rediscover_backends
-
reload_catalog
-
restart_simulation
-
run_simulation
-
run_with_generator
-
search_examples
-
session_insights
-
setup_backend
-
submit_critic_review
-
transfer_field
-
validate_physics
-
verify_interface_flux
-
verify_mesh_independence
-
verify_pde_consistency
-
visualize
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 8bae1cf · analyzer v33 · 1d ago
skills & prompt files 3
danger signals5
- dynamic code execution eval()/exec() Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fsi_solid_fourc.py :206
v = eval(e.replace("^", "**"), {"__builtins__": {}}, - dynamic code execution __import__() Hereon-InstituteMS-openPASO-8bae1cf/src/core/autodiscovery.py :59
mod = __import__(import_name) - dynamic code execution eval()/exec() Hereon-InstituteMS-openPASO-8bae1cf/src/core/residual_gate.py :126
value = eval(code, {"__builtins__": {}}, env) # noqa: S307 - dynamic code execution __import__() Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :8728
mod = __import__(where[0], fromlist=[where[1]]) - dynamic code execution eval()/exec() Hereon-InstituteMS-openPASO-8bae1cf/src/tools/pde_consistency.py :208
out = eval(expr, {"__builtins__": {}}, env) # noqa: S307
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 322
filesystem 150
- fs Hereon-InstituteMS-openPASO-8bae1cf/check_install.py :24
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/fsi_reference_newtonkrylov.py :38
import shutil - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_dealii.py :31
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_dealii_elastic.py :36
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_dealii_transient.py :61
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_dune.py :9
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_dune_3d.py :113
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_dune_elastic.py :79
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_febio.py :43
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_febio_elastic.py :327
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fenics.py :15
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fenics_elastic.py :36
from pathlib import Path
show 28 more
- fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fenics_thermoelastic.py :38
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fenics_transient.py :246
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fourc.py :16
import shutil - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fourc_thermoelastic.py :24
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fsi_fluid_fenics.py :47
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fsi_solid_fenics.py :25
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fsi_solid_fourc.py :105
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fsi_solid_skfem.py :24
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_kratos.py :21
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_kratos_3d.py :130
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_kratos_neumann.py :54
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_ngsolve.py :10
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_ngsolve_elastic.py :34
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_skfem.py :10
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_skfem_elastic.py :52
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_sparta.py :49
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_tsi_mech_fenics.py :37
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_tsi_mech_ngsolve.py :42
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_tsi_mech_skfem.py :40
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_tsi_thermal_fenics.py :45
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_tsi_thermal_ngsolve.py :46
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_tsi_thermal_skfem.py :50
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/data/kratos_knowledge.py :1797
with open("ProjectParameters.json", 'r') as parameter_file: - fs (weak) Hereon-InstituteMS-openPASO-8bae1cf/docs/_gen_reference.py :18
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/langgraph_eval/agent.py :38
import shutil - fs Hereon-InstituteMS-openPASO-8bae1cf/run_agent.py :24
from pathlib import Path - fs Hereon-InstituteMS-openPASO-8bae1cf/src/backends/dealii/backend.py :18
import shutil - fs Hereon-InstituteMS-openPASO-8bae1cf/src/backends/dune/backend.py :15
import shutil
110 more not shown — this panel samples each group; the count above is the real total.
shell / exec 36
- shell Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/fsi_reference_newtonkrylov.py :39
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_dealii.py :29
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_dealii_elastic.py :34
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_dealii_transient.py :59
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_febio.py :41
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_febio_elastic.py :325
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fourc.py :17
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fourc_thermoelastic.py :22
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_fsi_solid_fourc.py :102
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/data/coupling_participants/participant_sparta.py :47
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/langgraph_eval/agent.py :40
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/dealii/backend.py :297
import subprocess
show 24 more
- shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/dune/backend.py :90
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/febio/backend.py :62
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/fenics/backend.py :83
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/fourc/backend.py :147
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/kratos/backend.py :72
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/kratos/generators/cosimulation.py :32
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/kratos/generators/shape_optimization.py :29
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/ngsolve/backend.py :58
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/skfem/backend.py :40
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/backends/sparta/backend.py :383
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/core/autodiscovery.py :24
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/core/backend_setup.py :35
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/core/coupling_driver.py :84
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/core/field_series.py :21
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/core/precice_config.py :471
import subprocess - shell (weak) Hereon-InstituteMS-openPASO-8bae1cf/src/core/smoke_tests.py :12
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/core/source_build.py :21
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/core/source_discovery.py :23
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/core/source_fetch.py :18
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :672
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/tools/fourc_deck_lint.py :17
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/tools/participant_lint.py :733
import subprocess # noqa: PLC0415 - shell Hereon-InstituteMS-openPASO-8bae1cf/src/tools/simulation.py :64
import subprocess - shell Hereon-InstituteMS-openPASO-8bae1cf/src/tools/workspace_advisor.py :413
result = subprocess.run(cmd, cwd=work_dir, capture_output=True, ...)
secrets 2
- secrets Hereon-InstituteMS-openPASO-8bae1cf/check_install.py :154
in_shell = bool(os.environ.get("OPENROUTER_API_KEY", "").strip()) - secrets Hereon-InstituteMS-openPASO-8bae1cf/run_agent.py :258
api_key = os.environ.get("OPENROUTER_API_KEY", "").strip()
tool registrations 64
- benchmark_problem Hereon-InstituteMS-openPASO-8bae1cf/src/tools/benchmark.py :21
- benchmark_poisson_cross_solver Hereon-InstituteMS-openPASO-8bae1cf/src/tools/benchmark.py :182
- knowledge Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :3571
- discover Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :3647
- examples Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :3834
- submit_critic_review Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :4056
- run_with_generator Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :4187
- check_input Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :4396
- run_simulation Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :4438
- verify_pde_consistency Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :4844
- verify_interface_flux Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :4863
- audit_results Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :5076
show 28 more
- verify_mesh_independence Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :5120
- coupled_solve Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :5351
- couple Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :5452
- couple_levels Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :6757
- couple_precice Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :6934
- visualize Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :7084
- developer Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :7288
- prepare_simulation Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :7390
- transfer_field Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :7758
- generate_mesh Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :7855
- reload_catalog Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :7919
- rediscover_backends Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :7987
- setup_backend Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :8029
- session_insights Hereon-InstituteMS-openPASO-8bae1cf/src/tools/consolidated.py :8097
- transfer_field Hereon-InstituteMS-openPASO-8bae1cf/src/tools/coupling.py :1013
- coupled_solve Hereon-InstituteMS-openPASO-8bae1cf/src/tools/coupling.py :1086
- couple Hereon-InstituteMS-openPASO-8bae1cf/src/tools/coupling.py :1193
- get_solver_architecture Hereon-InstituteMS-openPASO-8bae1cf/src/tools/developer.py :231
- list_solver_source_files Hereon-InstituteMS-openPASO-8bae1cf/src/tools/developer.py :273
- get_solver_capabilities_matrix Hereon-InstituteMS-openPASO-8bae1cf/src/tools/developer.py :309
- discover_sources Hereon-InstituteMS-openPASO-8bae1cf/src/tools/developer.py :356
- fetch_source Hereon-InstituteMS-openPASO-8bae1cf/src/tools/developer.py :388
- build_source Hereon-InstituteMS-openPASO-8bae1cf/src/tools/developer.py :406
- ensure_source Hereon-InstituteMS-openPASO-8bae1cf/src/tools/developer.py :429
- list_solvers Hereon-InstituteMS-openPASO-8bae1cf/src/tools/discovery.py :12
- get_solver_info Hereon-InstituteMS-openPASO-8bae1cf/src/tools/discovery.py :40
- recommend_solver_for Hereon-InstituteMS-openPASO-8bae1cf/src/tools/discovery.py :74
- get_example_inputs Hereon-InstituteMS-openPASO-8bae1cf/src/tools/examples_search.py :64
24 more not shown — this panel samples each group; the count above is the real total.
declared dependencies 9
- sympy@*
- fenics-dolfinx@>=0.8
- gmsh@>=4.12
- ngsolve@>=6.2
- scikit-fem@>=10.0
- KratosMultiphysics@>=10.0
- dune-fem@>=2.10
- mpi4py@>=3.0
- pyprecice@>=3.0