# io.github.aristiun/aribot

> Threat modeling, code/cloud/pipeline scanning, shadow-AI discovery, compliance checks and fixes.

- name: io.github.aristiun/aribot
- version: 1.0.0
- connection class: R2 (oauth_consent_once)
- trust: 90/100
- quality: 74/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.aristiun%2Faribot
- tools: https://api.protogrid.dev/v1/servers/io.github.aristiun%2Faribot/tools

**An agent can connect after a one-time OAuth consent by a human.** Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "aribot": {
      "type": "http",
      "url": "https://mcp.aribot.ayurak.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 65
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-99d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 74/100 (needs work)

### protocol: n/a (weight 25)

- n/a `protocol.modern`, `protocol.stateless`, `protocol.transport`, `protocol.list_ttl`: no remote answered a protocol handshake (not probed yet, unreachable, or local-only)

### authorization: 83 (weight 15)

- pass `auth.prm`: Protected Resource Metadata (RFC 9728) published
- pass `auth.as_metadata`: authorization server metadata reachable
- warn `auth.cimd`: only Dynamic Client Registration, deprecated in 2026-07-28 in favour of CIMD
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 29 of 29 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 2 of 29 tools declare all four hints; missing: verify_threats_in_code (idempotentHint); generate_architecture (idempotentHint); file_threat_tickets (idempotentHint); …
- pass `tools.token_cost`: about 5,099 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 57 tool changes in 30 days
- fail `stability.rug_pull`: 6 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 29, about 5,099 tokens to load them all
- tool set hash: e15e994cd1b714799f19877031045dde
- tools last changed: 2026-10-17T03:20:38.521Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.aristiun/aribot.svg)](https://protogrid.dev/servers/io.github.aristiun/aribot)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-17 `comment_threat_on_change` changed (annotations)
- 2026-10-17 `get_threat_tickets` changed (annotations)
- 2026-10-17 `list_ticket_destinations` changed (annotations)
- 2026-10-17 `get_self_healing` changed (annotations)
- 2026-10-17 `get_agent_governance` changed (annotations)
- 2026-10-17 `get_shadow_ai` changed (annotations)
- 2026-10-17 `get_code_findings` changed (annotations)
- 2026-10-17 `run_ai_governance_audit` changed (annotations)
- 2026-10-17 `generate_architecture` changed (annotations)
- 2026-10-17 `get_insights` changed (annotations)

Full history: https://api.protogrid.dev/v1/servers/io.github.aristiun%2Faribot/changes

## Remotes

- https://mcp.aribot.ayurak.com/mcp (streamable-http, auth oauth2, reachable true, uptime30d 1)

## Packages

_none_

## Tools (29)

- `apply_remediation`: Apply a remediation for real (mode=live). Goes through Aribot's governance checks (attack-path reachability, autonomy policy and the approval flow). If your policy requires approval it returns 'requires_approval' rather than acting.
- `assign_threat`: Set the owner and due date of a threat entry; the linked ticket follows. Error codes: permission_missing, role_missing, destination_not_found, already_filed, rate_limited, assignee_unmapped, no_route, no_entry, not_found, invalid, no_company, tracker_error, filed_unrecorded, outcome_unknown, not_attempted, not_configured, tracker_unreachable, unsupported. filed_unrecorded and outcome_unknown mean the ticket may already exist in the tracker; not_attempted means the item was not sent.
- `code_review_scan`: Start (or re-run) a code-security scan for an existing scan/repository in your scope. Returns a poll pointer; results include SAST, secrets, deps, pipeline review and the traceability matrix.
- `comment_threat_on_change`: For a completed pipeline scan of a pull request: post, or update, one comment per threat whose linked code the pull request changes. A re-run with nothing changed makes no calls. Returns each comment's status (posted, updated, skipped with the reason, failed). Public repositories are skipped with the reason 'public repository'. Error codes: permission_missing, role_missing, destination_not_found, already_filed, rate_limited, assignee_unmapped, no_route, no_entry, not_found, invalid, no_company, tracker_error, filed_unrecorded, outcome_unknown, not_attempted, not_configured, tracker_unreachable, unsupported. filed_unrecorded and outcome_unknown mean the ticket may already exist in the tracker; not_attempted means the item was not sent.
- `compliance_scan`: Run a cloud/platform or compliance scan against an account or diagram in your scope (async). scan_type ∈ platform|compliance|pipeline|sbom. Returns a task id to poll.
- `compliance_status`: Company-level compliance posture: per-framework posture from the daily cloud scans (checks passed/failed, controls tested/failing), plus threat and control metrics from code scans. Pass `framework` (e.g. 'ISO 27001') to get that framework's most-failing controls. Rates are percentages (0-100).
- `discover_shadow_ai`: Scan connected repositories and network traffic for unmanaged LLMs, foundational model endpoints, vector databases, agent frameworks, and leaked API keys (async).
- `file_threat_tickets`: Send 1-50 threat report entries to the tracker their route points at (or `destination`). One ticket per threat per report; a repeat returns already_filed. dry_run=true returns the exact tickets without sending; a preview with public_repository=true goes to a public repository, visible to anyone. Error codes: permission_missing, role_missing, destination_not_found, already_filed, rate_limited, assignee_unmapped, no_route, no_entry, not_found, invalid, no_company, tracker_error, filed_unrecorded, outcome_unknown, not_attempted, not_configured, tracker_unreachable, unsupported. filed_unrecorded and outcome_unknown mean the ticket may already exist in the tracker; not_attempted means the item was not sent.
- `generate_architecture`: Generate a multi-tier cloud/AI architecture and auto-synthesize STRIDE/LINDDUN threat models, security requirements, and regulatory control mappings directly from a natural-language description. Runs in the background (a few minutes); returns the name the diagram is saved under.
- `generate_threat_model`: Create a threat model from a normalized architecture (ReactFlow nodes + edges). Aribot stores the components and generates the threats. Returns the diagram id.
- `get_agent_governance`: Your governed AI-agent fleet: each agent's id, name, cohort, whether it is active, its execution state (running, held, suspended), deviation score and the reason for any hold. Totals by state.
- `get_api_security`: API security inventory (part of Code Security): discovered API endpoints with authentication status, risk level and risk factors, plus method/risk breakdowns. Company-wide or one scan with `scan_id`.
- `get_billing`: Billing status + self-service payment for your company: credit-wallet balance, pay-per-use flag, license tier / annual commitment, per-action prices, purchasable plans, and any approved-but-unpaid plans. Pass `checkout_request_id` to get a hosted Stripe Checkout URL to COMPLETE an approved plan, `topup_amount` (EUR) to get one to TOP UP the wallet, or `request_plan` (starter|pay_per_use|pro|max|enterprise) to REQUEST a plan (files a request for super-admin approval — never grants). Returns the details needed to resolve a 402 (licence or credit required).
- `get_cloud_compliance`: Cloud security & compliance posture (Cloud Compliance): per connected cloud account, the latest CIS/NIST cloud-policy scan — daily-scan posture (checks passed/failed) and the last manual scan's compliance %, failing policies/records — plus a company rollup.
- `get_code_findings`: Findings from a code-security scan (SAST, secrets, dependencies): title, severity, file and line, CWE/OWASP category, status and the recommended fix. Latest completed scan when scan_id is omitted.
- `get_diagram_summary`: Summary of a diagram: threat counts by severity, risk value, compliance and framework coverage.
- `get_framework_coverage`: Get control-mapped coverage percentages, gap counts, and mapped controls for EU AI Act, DORA, NIST AI RMF, ISO 27001, SOC 2, etc.
- `get_insights`: Code-security metrics for a diagram: the threat → finding → control metrics of its latest code-security scan. code_scan is null when the diagram has no scan yet.
- `get_remediation`: Compute a remediation plan for a threat or finding without applying it (dry run). Runs Aribot's governed remediation checks and returns the proposed steps.
- `get_self_healing`: Remediation (self-healing) history: each planned or applied fix with its threat, rule, resource, mode (dry run or live), status and outcome, plus whether autonomous live remediation is switched on for your company.
- `get_shadow_ai`: AI usage found in your code and network traffic: provider, service type, model, endpoint, where it was found, risk level, classification and whether a hard-coded key was seen. Company-wide, or one scan with scan_id.
- `get_threat_tickets`: Tickets (tracker, number, state, assignee) for the given threat entries, or for a diagram.
- `get_traceability`: Return the diagram→threat→finding→control→requirement→remediation traceability matrix for a scan in your scope, with coverage metrics.
- `list_diagrams`: List your company's threat-model diagrams (id, name, last update), newest first, optionally filtered by part of the name.
- `list_ticket_destinations`: Trackers, routes and destinations this caller may send threats to (no credentials).
- `onboard_agents`: Bulk-onboard agent identities to the governed fleet (Agent Governance). Accepts plain ids or {agent_id} descriptors in `agents`, A2A 1.0 Agent Cards in `agent_cards` (name/url/provider/version/protocolVersion), or MCP client descriptors, under an optional `cohort` + shared auto-suspend policy. Idempotent. Requires the agent_governance licence + a manage:agents grant (or a first-party super-admin). Agents also self-onboard on first token/call.
- `run_ai_governance_audit`: Audit an architecture diagram or code scan against statutory AI governance frameworks (EU AI Act 2024, EU DORA 2022, NIST AI RMF 1.0, ISO 42001). Evaluates article-by-article conformity, satisfied controls, open gaps, and generates actionable remediation guidance.
- `sync_threat_tickets`: Pull the current state and assignee of this company's open tickets (max 50 per call, time-boxed). Returns {checked, changed, errors, remaining}; remaining > 0 means call again to continue. Error codes: permission_missing, role_missing, destination_not_found, already_filed, rate_limited, assignee_unmapped, no_route, no_entry, not_found, invalid, no_company, tracker_error, filed_unrecorded, outcome_unknown, not_attempted, not_configured, tracker_unreachable, unsupported. filed_unrecorded and outcome_unknown mean the ticket may already exist in the tracker; not_attempted means the item was not sent.
- `verify_threats_in_code`: Verify whether modelled STRIDE/LINDDUN threats are mitigated in a scan's uploaded code or AST. If threat_id is provided, returns synchronous verdict; otherwise dispatches batch verification across all diagram threats.
