Skip to main content
Glama
AIR MCP Server

AIR MCP Server

by VericyIO

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
AIR_API_KEYYesYour AIR API key for authentication.

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
tasks
{
  "requests": {
    "tools": {
      "call": {}
    }
  }
}
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
air_list_domainsA

List domains visible to the API key. For domain-scoped service account keys, returns the single bound domain. Requires domains:read scope.

air_get_domainA

Resolve a domain by pid from air_list_domains results, or by orgSlug + domainSlug via slug lookup.

air_list_projectsA

List projects in a domain (paginated). Requires domains:read and projects:read. Use domainPid from air_list_domains.

air_get_projectA

Resolve a project by pid from air_list_projects, or by orgSlug + domainSlug + projectSlug.

air_create_projectA

Create a project in a domain. Requires domains:write (fullPipeline preset). Returns project pid and slug.

air_searchA

Full-text search across orgs, domains, and projects. Requires search:read scope (fullPipeline preset; not included in assessmentRunner).

air_list_documentsA

List document sources for a project. Poll until status is connected before starting an assessment. Requires projects:read.

air_get_document_download_urlA

Get a presigned download URL for an uploaded document source. Requires projects:read.

air_list_artifactsB

List document-derived artifacts for a project. Use artifact pids in air_start_assessment. Requires projects:read.

air_get_artifact_textB

Get extracted plain text for an artifact. Requires projects:read.

air_upload_document_initA

Start a presigned upload: returns uploadUrl and s3Key. PUT the raw file bytes to uploadUrl with the same contentType you passed here and no other headers — the URL signs content-type and host only, so any x-amz-* header (notably the checksum headers AWS SDKs add by default) invalidates the signature. Then call air_upload_document_complete with the returned s3Key. Requires projects:write.

air_upload_document_completeA

Finalize a presigned upload after the PUT to uploadUrl succeeded. Dispatches the document extraction workflow. Requires projects:write.

air_upload_documentA

Upload a text document, such as the scan summary, to a project in one call: start the upload, send the content, finish it, and wait until AIR has read it. Returns the source and its status. For binary files, use air_upload_document_init and the related tools. Requires projects:write.

air_list_assessmentsB

List assessment summaries for a project. Requires assessments:read.

air_get_assessmentB

Get assessment detail including status and workflowRunId. Requires assessments:read.

air_get_assessment_reportA

Fetch the structured risk assessment report for a completed run. Omit section to get the whole report; if it is too large for one response you get a section index instead — each section with its size and item count — so you can pull the parts you need. Pass section for one slice, and offset/limit to page through a list section such as riskRegister or evidenceAppendix. Requires assessments:read.

air_get_assessment_summaryA

Fetch a slim assessment report summary without the full risk/evidence payload: overview, quality, the EU AI Act tier (value, name, description, and final: true when no open question can change it) with the names of the matched criteria, section counts, the saved project choices (projectDecisions, each with posture and, when it came back, cameBackBecause), and changesSincePrevious — each checklist item that closed, is still open, is new, was newly judged, came back, or could not be judged since the previous completed scan, plus inputs: the documents added, removed, or changed in content (a re-upload of the same text is unchanged). Read those labels as given; do not work out the match yourself. Prefer this over air_get_assessment_report for triage. topRisks lists the first few risk-register items in short form; fetch the riskRegister section of air_get_assessment_report for the full list. Requires assessments:read.

air_list_open_factsA

List the open EU AI Act questions for an assessment: only facts whose answer can still change the tier and that are worth asking now, checklist facts first. screeningGroups are the checklist lines that still hold an open fact. Each item has question (ask it as written), help (one line on why it matters) and, for list facts, options (show the labels, send the values). Boolean facts take true, false, or null for "Not sure"; list facts take option values, or [] for none. answerConflicts are earlier answers that this scan read differently, with the scan's excerpts. Never show factPath, description or a raw null to the person. Prefer air_ask_open_facts when the client can show forms. Requires assessments:read.

air_ask_open_factsA

Ask the person the open EU AI Act questions one at a time. Each dialog shows the full question, then Yes, No and Not sure, or the labelled options. Saves each answer and re-checks the tier, until no question is open or every open one is "Not sure". proposedAnswers may only cover facts marked suggestFromCode, which the code can show; never suggest what the system is used for or whom it affects. Pass back notSureFactPaths from the last call as skipFactPaths. Answers are kept on the project for later scans. Requires assessments:write.

air_submit_fact_answersA

Submit answers for open EU AI Act facts and re-derive the tier on this assessment, with no new scan. Pass factPath + value + a short justification in the person's words. An array fact accepts only its allowedValues; any other word is refused with 422 naming the allowed values. Answers are kept on the project, so later scans start from them; null ("I don't know") clears a kept answer. Answering a conflicted fact replaces the kept answer. Requires assessments:write.

air_get_assessment_stagesA

List per-stage checkpoint logs for an assessment run. Requires assessments:read.

air_get_assessment_input_artifactsB

List artifacts used as inputs when the assessment report was generated. Requires assessments:read.

air_create_assessment_draftA

Create an assessment draft without starting the pipeline. Requires assessments:write.

air_start_assessmentA

Start a risk assessment on a project. Consumes org credits and dispatches the risk pipeline. Requires assessments:write. Returns assessmentPid and reportUrl. Give the person the reportUrl link when the scan starts.

air_retry_assessmentA

Retry a failed assessment from the last completed stage. Requires assessments:write and consumes credits.

air_list_project_fact_answersC

Active answers already saved on the project. factPath is for the tool call. Do not show factPath to the person. Requires projects:read.

air_ask_screening_questionsA

Before a scan, ask the person each EU AI Act screening question in its own dialog, with the full question and Yes, No and Not sure, or the labelled options. Facts the project already holds an answer for are left out. Returns the answers to hold: after air_start_assessment, send them with air_save_prepared_answers. It saves nothing itself. Requires projects:read.

air_save_prepared_answersA

Save the checklist answers right after air_start_assessment. They are kept on the project and applied when the scan reads its facts; a scan that reads a different value from the documents raises it as a conflict. Refused once the scan has read its facts. It does not recompute the tier. Requires assessments:write.

air_get_rules_noticeC

due is true when the latest completed scan used older AIR EU AI Act rules and nobody has said later to the current ones. lastCompleted.tier is the stored tier and lastCompleted.tierUnderCurrentRules is what the same facts give now. postponed says when someone said later to the current rules. Do not decide the version yourself. Requires projects:read.

air_postpone_rules_noticeC

The person said later to the current AIR rules. Records who and when. The notice returns when the rules move past this version. Refused when nothing is due. Requires projects:write.

air_recheck_tierA

Re-check a scan's EU AI Act tier under the current AIR rules from the facts it already holds. Reads no documents and spends no credit. Returns previousTier, the new tier, and the questions that can still change it. Requires assessments:write.

air_list_project_decisionsA

List saved choices for a project, each judged against assessmentPid. posture: stands (quiet; the topic is raised on the same documents and seriousness the person decided on), conflicts (show the saved sentence and ask again; cameBackBecause says why: new_evidence = the scan cites text that was not in the documents they decided on, more_serious = the topic moved up, for example from the watchlist to a risk, review_due = six months have passed), settled (the accepted gap is no longer open). Requires projects:read.

air_record_project_decisionA

Save a developer choice on the project, in the person's own words. Ask them first. Use not_applicable when the whole topic (themeId) does not apply to this system: later scans keep that topic and its gaps quiet while it is raised on the same documents and seriousness, and bring it back when the scan cites new text, the topic grows more serious, or six months have passed. Use accept_gap when the topic applies but the person accepts one missing control (controlId required): the gap stays listed with the saved sentence beside it. Pass the assessmentPid the person decided on; the choice remembers that scan's documents. The scan the choice is recorded on does not judge it; later scans do. A later choice for the same theme or control replaces the earlier one. Requires projects:write.

air_get_domain_portfolioB

Domain-level portfolio dashboard. Requires portfolio:read (fullPipeline preset). Domain-scoped API keys only work for their bound domain.

air_submit_feedbackB

Send product feedback to Thalus. The person reviews the text before it is sent. A reply goes to the organization owner, or to an address the person gives. Works without an AIR account, where the person is asked for one.

air_request_creditsA

Ask Thalus for more assessment credits. The person reviews the amount and the reason before the request is sent, and Thalus replies by email to the organization owner. To buy credits immediately instead, call air_get_credit_balance for the purchase link.

air_get_credit_balanceA

Assessment credits available to this organization, with the plan and the cost per assessment. Call it before a batch of assessments so the limit is predicted instead of hit.

air_create_accountA

Open a form in this conversation to create an AIR account. The person types their own details and accepts the terms; the model supplies nothing. Needs no existing account.

air_signup_send_codeA

Signup form step one: send the verification code. Submitted by the form itself, not by the assistant.

air_signup_verify_codeA

Signup form step two: verify the code and create the account. Submitted by the form itself, not by the assistant.

air_sign_outA

Remove the AIR credentials stored on this machine and return to setup mode. The account itself is untouched. A key supplied through AIR_API_KEY cannot be removed here — the result says where to remove it instead.

air_wait_for_document_extractionA

Wait until sourcePid reaches connected or error, up to timeoutMs. Uses exponential backoff. Returns ready:false with the last observed status if the wait budget runs out — call again with the same sourcePid to keep waiting. Requires projects:read.

air_wait_for_assessmentA

Wait until an assessment is completed, failed, or reportAvailable, or until its step differs from lastStageLabel, up to timeoutMs. Uses exponential backoff. A new step returns ready:false with stageLabel ("Step 4 of 12: Checking each risk theme"), the line to show the person, and reportUrl. Call again with lastStageLabel set to the line you showed. Returns ready:false with the last observed status if the wait budget runs out — call again to keep waiting. Requires assessments:read.

air_run_assessment_from_fileA

Upload a local file, wait for extraction, start assessment on the new artifact. Consumes credits. Requires projects:write and assessments:write. Returns an MCP Task handle immediately. Reads filePath with your OS user permissions.

air_run_full_assessment_pipelineB

Start assessment on existing artifacts, wait for completion, return report summary. Consumes credits. Returns an MCP Task handle immediately; poll tasks/get until completed.

Prompts

Interactive templates invoked by user choice

NameDescription
run-assessment-workflowGuide through discover → upload → extract → assess → report using AIR MCP tools
review-assessment-reportFetch and summarize an assessment report by assessmentPid
explore-portfolioExplore domain portfolio dashboard for governance gaps (API key access)

Resources

Contextual data attached and managed by the client

NameDescription
AIR signup form

TDQS

B3.4/5.0

Scored across 45 tools

Disambiguation3/5

Several tools overlap significantly, especially around starting assessments (air_start_assessment, air_run_full_assessment_pipeline, air_run_assessment_from_file) and answering facts (air_ask_open_facts, air_submit_fact_answers, air_save_prepared_answers). Descriptions are detailed and provide some differentiation, but an agent could easily misselect among these similarly purposed tools.

Naming Consistency5/5

All tool names follow a consistent air_verb_noun or air_verb pattern in snake_case. There is no mixing of camelCase or inconsistent verb styles; the prefix and structure are predictable throughout.

Tool Count2/5

45 tools is excessive for the apparent scope, with multiple redundant entry points for the same core workflows (assessment initiation, fact answering, uploads). The server would benefit from consolidation to reduce cognitive load and misselection risk.

Completeness4/5

Core lifecycle for risk assessment is well covered: project creation, document upload and extraction, assessment start and reporting, fact answering, decisions, credits, and account flows. Minor gaps exist such as no project update/delete or document deletion, but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues