mesa-clm
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ds_pingA | Liveness check. Echoes back the supplied message (or 'ok') and the running mesa-mcp version. No iRODS access required. |
| mesa_avu_apply_dataciteA | Validate a DataCite 4.x record and write it to an iRODS path as AVUs (canonical and/or CyVerse-template naming), mirrored to DuckLake as one snapshot. |
| mesa_datacite_exportB | Export DataCite AVUs as a DataCite 4.x XML (for DOI registration) or REST JSON document. |
| mesa_datacite_templateA | Return the DataCite 4.x field scaffold (field, required?, repeatable?, controlled vocabulary, canonical AVU key) to drive a complete, valid record. |
| mesa_datacite_validateA | Validate DataCite AVUs against the 4.x kernel: report missing mandatory fields, invalid controlled-vocabulary values, and whether the record is DOI-ready. |
| mesa_avu_apply_termA | Resolve an OLS term, build the canonical AVU triple (.<snake_label>, , ), write it to the iRODS path, and record the change in the project's DuckLake. Composite of mesa_avu_from_term + ds_add_avu, in one call. |
| mesa_avu_from_termA | Pure transformation: turn an OLS term + user value into the canonical AVU triple (attribute='.<snake_case_label>', value=, unit=) without writing to iRODS. |
| mesa_ols_generate_templateC | Generate a SCHEMAS-compatible template (prefix + top-level term fields) for an ontology. This is the function that drives the esiil-portal auto-generated AVU forms. |
| mesa_ols_get_ontologyA | Fetch metadata for a single OLS ontology (term count, version, homepage, preferred prefix). |
| mesa_ols_get_termA | Get the full record (label, CURIE, synonyms, definition, parents/children) for a single OLS term by IRI. |
| mesa_ols_get_term_hierarchyA | List the direct children of an OLS term. Use this to walk an ontology's class hierarchy one level at a time. |
| mesa_ols_list_ontologiesA | List ontologies available in the EMBL-EBI Ontology Lookup Service (OLS4), paginated. Returns 266+ ontologies (ENVO, GO, CHEBI, etc.). |
| mesa_policy_enableA | Enable a MESA policy on a project root collection by writing the |
| mesa_policy_disableA | Disable a MESA policy on a project root collection by removing the |
| mesa_ols_search_termsB | Search OLS terms across all ontologies or scoped to one. Optionally restrict to descendants of a parent IRI (hierarchy walk). |
| mesa_ducklake_init_projectA | Enroll an iRODS collection as a MESA project. Creates the <irods_path>/.mesa/ducklake/ sub-collection (or the configured ducklake.data_collection), sets the mesa.enabled=true AVU on the project root, and registers the project in the DuckLake catalog. Idempotent — safe to re-run. |
| ds_add_avuC | Add a new AVU (attribute-value-unit) to a file (data-object), directory (collection), resource, or user. |
| ds_add_avusA | Add MULTIPLE AVUs to one data-object/collection in a single call and mirror them all into DuckLake as ONE snapshot (efficient bulk tagging). |
| ds_copy_fileB | Copy a file (data-object) or directory (collection) to a new location. |
| ds_create_ticketA | Create a read or write iRODS ticket on a data object or collection. Returns the ticket string plus the restrictions that were applied. Anonymous users may not create tickets. |
| ds_delete_avuB | Delete an AVU (attribute-value-unit) from a file, directory, resource, or user. |
| ds_delete_fileC | Delete a file (data-object) or directory (collection). |
| ds_delete_ticketA | Revoke an existing iRODS ticket. Issuer or admin only — the server enforces this. Anonymous callers are rejected at the tool layer. |
| ds_directory_treeB | Get a recursive tree view of files (data-objects) and directories (collections). The specified path must be an iRODS path. The output is in JSON format. The output contains all entries in the given directory (collection) path. |
| ds_download_fileA | Returns how to download the full contgent of a file (data-object) with the specified path. The specified path must be an iRODS path. Returns how to download the file using WebDAV, GoCommands (gocmd), and iCommands. |
| ds_execute_ruleA | Run an iRODS rule. Supply either rule_name (server-installed) or rule_text (inline iRL). Output parameters are returned as a dict; iRODS stdout/stderr are returned when output_parameters includes 'ruleExecOut'. Path-typed input parameters are checked against the caller's accessible paths before the rule fires. |
| ds_get_file_infoC | Retrieve detailed metadata about a file or directory. |
| ds_get_metadataA | Fetch the full AVU metadata bundle for an iRODS path (data object or collection). Returns the resolved target type alongside the AVU list. |
| ds_get_policy_configA | Return the configuration of a named Policy Composition Framework policy. iRODS does not expose PCF config through PRC; this is a stub that returns |
| ds_get_rule_definitionA | Return the source of a named iRODS rule. iRODS does not expose rule sources through PRC; this is a best-effort tool whose |
| ds_get_ticket_infoA | Get information about a specific iRODS ticket, such as its ID and expiration time, in JSON format. Anonymous users are not allowed to get ticket information. |
| ds_list_allowed_directoriesB | Get a list of directories (collections) that this server is allowed to access. The output also contains API names that can be requested to each directory (collection). |
| ds_list_avusB | List AVUs (attribute-value-unit) from a file (data-object), directory (collection), resource, or user. |
| ds_list_directoryB | Get a list of files (data-objects) and directories (collections) in a specified path. The specified path must be an iRODS path. The output is in JSON format. The output contains entries in the given directory (collection) path. Use offset and limit parameters to paginate through large directories. |
| ds_list_directory_detailsA | Get a list of files (data-objects) and directories (collections) in a specified path with full detailed info. The specified path must be an iRODS path. The output is in JSON format. The output contains entries in the given directory (collection) path, and users or groups who can access the files (data-ojects). Files (data-objects) will also have replica information. Use offset and limit parameters to paginate through large directories. |
| ds_list_policiesA | List policies in effect for the Data Store. With |
| ds_list_rulesA | List iRODS rules visible to the caller. Returns a best-effort list of delayed rules; the static rule base is not exposed by PRC and the |
| ds_list_ticketsA | Get a list of iRODS tickets. Return information about the tickets, such as their IDs and expiration times, in JSON format. Anonymous users are not allowed to list tickets. |
| ds_make_directoryC | Make a new directory (collection). |
| ds_modify_accessC | Modify data access of a user or group to a file (data-object) or directory (collection). |
| ds_modify_access_inheritanceC | Modify data access inheritance flag of a file or directory. |
| ds_modify_ticketA | Modify restrictions on an existing iRODS ticket. Cannot change the ticket's mode — that is set at issuance time. Returns the applied restrictions. Anonymous users are not allowed to modify tickets. |
| ds_move_fileC | Move a file (data-object) or directory (collection) to a new location. |
| ds_read_fileB | Read the partial content of a file (data-object) with the specified path and offset. The specified path must be an iRODS path. If the file is too large to be displayed inline, use the WebDAV URI to access it. |
| ds_search_filesA | Recursively search for files (data-objects) and directories (collections) matching a pattern. The specified search root path must be an iRODS path. Use unix wildcards, such as '?' and '*', for the search pattern. The matching entries are returned in JSON format. |
| ds_search_files_by_avuC | Search for files (data-objects) and directories (collections) matching iRODS AVU (attribute-value-units) using specified attribute and value. The matching entries are returned in JSON format. |
| ds_search_metadataA | Search iRODS by AVU attribute/value/unit. More permissive than ds_search_files_by_avu: any combination of attribute, value, and unit can be supplied and you can restrict the result type to data objects, collections, or both. |
| ds_upload_fileB | Returns how to upload the full contgent of a file (data-object) to the specified path. The specified path must be an iRODS path. Returns how to upload the file using WebDAV, GoCommands (gocmd), and iCommands. |
| ds_use_ticketA | Supply an iRODS ticket to the caller's iRODS session. Subsequent operations by the same caller run with the ticket applied, and their AVU writes record the ticket id in DuckLake's via_ticket column. Other callers' sessions are unaffected. |
| ds_write_fileC | Write the partial content to a file (data-object) with the specified path and offset. The specified path must be an iRODS path. If the file is too large to be displayed inline, use the WebDAV URI to access it. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 50 tools
Most tools have distinct resource+action targets, but several pairs overlap: ds_list_directory vs ds_list_directory_details, ds_search_files_by_avu vs ds_search_metadata (both AVU search), ds_list_avus vs ds_get_metadata, and ds_add_avu vs ds_add_avus. The detailed descriptions do help an agent choose, and the mesa_* vs ds_* split separates higher-level workflows from raw iRODS ops, but the boundaries are not crisp.
A consistent verb_noun snake_case pattern (ds_add_avu, ds_delete_file, ds_make_directory, ds_list_rules) holds across the dominant ds_ family, with namespace prefixes (mesa_ols_, mesa_avu_, mesa_datacite_, mesa_policy_) grouping related tools predictably. Minor deviations exist, e.g. singular/plural drift (ds_add_avu vs ds_add_avus, ds_list_avus) and redundant qualifiers (ds_search_files_by_avu vs ds_search_metadata).
50 tools is very heavy and near the extreme end of the scale. While the surface genuinely spans multiple subsystems (iRODS CRUD, AVUs, tickets, policies, OLS ontologies, DataCite, DuckLake), the count suggests feature bloat and several entries are documented stubs (ds_get_policy_config, ds_get_rule_definition, ds_list_rules) that dilute the set.
Coverage is broad and near-complete: file/directory CRUD, AVU CRUD and search, ticket lifecycle, access and inheritance management, ontology lookup/hierarchy, DataCite validation/export, and project enrollment all exist. Gaps are minor (some PCF/rule inspection is a documented stub), and agents have viable workarounds via rules and search tools.