Skip to main content
Glama
MSPbotsAI

cisco-umbrella-mcp

by MSPbotsAI

cisco-umbrella-mcp

Cisco Umbrella MCP 서비스 — Cisco Umbrella REST API v2(최신 Secure Access/SASE 제품이 아닌 기존 Umbrella)를 래핑하는 무상태 HTTP MCP 서버로, MSPbots가 현재 사용하는 10개 엔드포인트로 범위가 제한됩니다: DNS/프록시/방화벽/AMP 사후 분석 활동 보고서, 로밍 컴퓨터, 앱 검색(애플리케이션/프로토콜/애플리케이션 카테고리), 관리형 제공업체 고객 목록, 제공업체 콘솔 요약.

기술 스택: Python 3.12 + uv + FastMCP (Starlette/Uvicorn)

에이전트가 이 도구를 사용하는 경우

Cisco Umbrella는 DNS/웹 계층에서 고객의 네트워크를 보호합니다 — 악성 도메인을 차단하고, 카테고리별로 웹 콘텐츠를 필터링하며, 네트워크 활동을 기록합니다. 에이전트는 다음과 같은 요청에 이 MCP를 사용해야 합니다:

  • "이 도메인이 최근 이 고객의 네트워크에서 조회되거나 차단되었나요?" → cisco_umbrella_get_activity_dns

  • "이 고객에 대해 어떤 웹 카테고리/URL이 필터링되거나 프록시되고 있나요?" → cisco_umbrella_get_activity_proxy

  • "지난 하루 동안 이 고객의 네트워크에 대한 방화벽 허용/차단이 있나요?" → cisco_umbrella_get_activity_firewall

  • "정상으로 보였던 파일이 나중에 악성코드로 플래그되었나요?" → cisco_umbrella_get_activity_amp_retrospective

  • "이 고객의 로밍 노트북과 마지막 동기화/상태를 나열해 주세요" → cisco_umbrella_list_roaming_computers

  • "Cisco Umbrella에서 관리하는 고객 조직을 나열해 주세요" / "고객별 Umbrella 패키지 사용량은 어떻게 되나요?" → cisco_umbrella_list_customers, cisco_umbrella_get_providers_console

주의사항: 이 자격 증명 세트는 고객별 자격 증명이 아닌 관리형 제공업체(MSSP) 루트 조직 키이므로, 위의 고객별 활동/장치 도구는 실제로 비어 있을 수 있습니다 — 검증된 세부 사항은 아래 알려진 격차를 참조하세요.

Related MCP server: cisco-secure-access-mcp

인증 방법 참고

Cisco Umbrella의 기존 REST API는 OAuth2 client_credentials 그랜트를 지원합니다 — 사용자 브라우저 리디렉션이 없는 순수한 서버 간 교환입니다. 관리자는 Umbrella 대시보드(Admin > API Keys)에서 API Key + Key Secret 쌍을 생성하며, 이 서비스는 호출할 때마다 해당 쌍을 단기(1시간) 베어러 토큰으로 교환합니다(리프레시 토큰이 없으므로 요청 간 캐싱이 없음 — covedataprotection-mcp/webroot-mcp/logmein-mcp와 동일한 "호출마다 재로그인" 패턴).

POST https://api.umbrella.com/auth/v2/token
Authorization: Basic base64(apiKey:keySecret)
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials

지역 참고: MSPbots의 Cisco Umbrella 통합 구성에는 dataCenter 필드(us/eu)가 있습니다. Cisco 자체 개발자 문서에 포함된 원시 OpenAPI 사양을 10개 엔드포인트 모두와 인증/토큰 엔드포인트에 대해 직접 검증했습니다: 모든 엔드포인트가 정확히 하나의 호스트 https://api.umbrella.com을 나열합니다 — 기존 Umbrella에는 별도의 EU 호스트가 없습니다. (Cisco의 최신 "Secure Access" 제품에는 자체 지역 개념이 있지만, 이 서비스가 대상으로 하는 제품과는 다른 제품입니다.) 따라서 이 서비스는 dataCenter 값을 완전히 무시합니다. 이 10개 엔드포인트에는 필요하지 않습니다.

빠른 시작

# Install dependencies
cd D:\claude\project\cisco-umbrella-mcp
uv sync

# Run in stdio mode (for Claude Desktop)
$env:UMBRELLA_API_KEY="your_api_key"
$env:UMBRELLA_KEY_SECRET="your_key_secret"
uv run cisco-umbrella-mcp

구성

.env.example을 .env로 복사하고 값을 입력하세요:

변수

기본값

설명

UMBRELLA_API_KEY

—

Cisco Umbrella API Key (Admin > API Keys)

UMBRELLA_KEY_SECRET

—

Cisco Umbrella Key Secret (생성 시 한 번만 표시됨)

AUTH_MODE

gateway

gateway = 헤더를 통한 요청별 자격 증명(SOP 준수); env = 환경 변수의 공유 자격 증명(로컬 개발 전용)

MCP_TRANSPORT

stdio

stdio (Claude Desktop) 또는 http (게이트웨이)

MCP_HTTP_PORT

8080

HTTP 서버 포트

HEADER 인증 매개변수 설명

게이트웨이 모드에서 각 요청은 다음 두 HTTP 헤더를 반드시 포함해야 합니다:

헤더

유형

필수 여부

기본값

열거값

필드 설명

예시

X-Umbrella-Api-Key

string

예

없음

없음

Cisco Umbrella API Key(Umbrella 관리자 Admin > API Keys 페이지에서 생성)

AbCdEf1234567890

X-Umbrella-Key-Secret

string

예

없음

없음

Cisco Umbrella Key Secret(생성 시 한 번만 표시되며, API Key와 함께 client_credentials로 토큰 교환에 사용)

xyz9876543210abcdef

Claude Desktop 설정

claude_desktop_config.json에 추가하세요:

{
  "mcpServers": {
    "cisco-umbrella": {
      "command": "uv",
      "args": ["run", "--directory", "D:/claude/project/cisco-umbrella-mcp", "cisco-umbrella-mcp"],
      "env": {
        "UMBRELLA_API_KEY": "your_api_key",
        "UMBRELLA_KEY_SECRET": "your_key_secret"
      }
    }
  }
}

전송 모드

stdio (Claude Desktop / CLI)

$env:UMBRELLA_API_KEY="your_api_key"
$env:UMBRELLA_KEY_SECRET="your_key_secret"
uv run cisco-umbrella-mcp

HTTP — 단일 테넌트

$env:UMBRELLA_API_KEY="your_api_key"
$env:UMBRELLA_KEY_SECRET="your_key_secret"
$env:MCP_TRANSPORT="http"
$env:AUTH_MODE="env"
uv run cisco-umbrella-mcp

HTTP — 게이트웨이 / 멀티 테넌트

$env:MCP_TRANSPORT="http"
$env:AUTH_MODE="gateway"
uv run cisco-umbrella-mcp
# Each request must include: X-Umbrella-Api-Key and X-Umbrella-Key-Secret headers

사용 가능한 도구 (10)

도구

설명

API

매개변수

cisco_umbrella_get_activity_dns

DNS 활동 이벤트

GET /reports/v2/activity/dns

from_, to (필수), limit, offset, domains, categories, identityids, verdict, threats, timezone

cisco_umbrella_get_activity_proxy

프록시(SWG) 활동 이벤트

GET /reports/v2/activity/proxy

from_, to (필수), limit, offset, domains, urls, categories, identityids, verdict, threats, filename, timezone

cisco_umbrella_get_activity_firewall

방화벽 활동 이벤트

GET /reports/v2/activity/firewall

from_, to (필수), limit, offset, identityids, ruleid, verdict, categories, timezone

cisco_umbrella_get_activity_amp_retrospective

AMP 사후 분석 활동 이벤트

GET /reports/v2/activity/amp-retrospective

from_, to (필수), limit, offset, ampdisposition, sha256, timezone

cisco_umbrella_list_roaming_computers

로밍 클라이언트 엔드포인트 나열

GET /deployments/v2/roamingcomputers

page, limit, name, status, swg_status, last_sync_before, last_sync_after

cisco_umbrella_list_applications

검색된 클라우드 애플리케이션 나열

GET /reports/v2/appDiscovery/applications

sources, identity, labels, controllable, categories, subcategory, limit, offset

cisco_umbrella_list_protocols

검색된 네트워크 프로토콜 나열

GET /reports/v2/appDiscovery/protocols

identity, limit, offset, sort, order

cisco_umbrella_list_application_categories

애플리케이션 카테고리 나열

GET /reports/v2/appDiscovery/applicationCategories

limit, offset

cisco_umbrella_list_customers

이 관리형 제공업체 계정의 고객 조직 나열

GET /admin/v2/managed/customers

page, limit

cisco_umbrella_get_providers_console

제공업체 콘솔 구독/사용량 요약 가져오기(목록이 아닌 단일 객체)

GET /reports/v2/providers/consoles

없음

from_/to는 Umbrella 보고 API 규칙에 따라 에포크 밀리초, ISO-8601 또는 상대 오프셋(예: "-1days", "-7days", "now")을 허용합니다. (from_는 from이 Python 예약어이므로 끝에 밑줄이 있습니다 — 내부적으로 리터럴 from 쿼리 매개변수에 매핑됩니다.)

알려진 격차

두 개의 실제 관리형 제공업체(MSSP) 계정으로 테스트했습니다. 10개 도구 중 2개만 검증된 실제 데이터로 확인되었습니다; 나머지 8개는 차단되었거나 검증되지 않았습니다(빈 결과는 정확성을 증명하지 않습니다 — 오류가 발생하지 않았다는 의미일 뿐입니다).

✅ 확인됨 (실제, 비어 있지 않음, 교차 검증된 데이터):

  • cisco_umbrella_get_providers_console — 두 테스트 계정 모두에서 실제 구독 요약(customerCount: 77 및 customerCount: 47 각각).

  • cisco_umbrella_list_customers — 계정 1에서 77개의 실제 고객 조직(실제 회사 이름)을 반환했습니다. 계정 2에서는 403 Access Forbidden으로 실패 — 해당 계정의 토큰을 디코딩하여 admin.customers:read 범위가 실제로 없다는 것을 확인했습니다(계정 1의 76개 범위 대비 총 20개 범위). 코드 버그가 아니라 실제 키별 권한 차이입니다.

⚠️ 검증되지 않음 — 두 계정 모두에서 형식은 올바르지만 빈 결과를 반환, 정확성이 입증되지 않음: cisco_umbrella_get_activity_dns, _proxy, _firewall, _amp_retrospective, cisco_umbrella_list_roaming_computers. Activity DNS의 라이브 OpenAPI 매개변수 정의를 Cisco 자체 문서와 직접 교차 확인했습니다(요약이 아닌 원시 사양을 가져옴) — from/to/limit는 구현된 것과 정확히 일치하며, 누락되거나 잘못 명명된 매개변수가 없습니다. 그럴듯한 설명은 두 테스트 계정 모두 관리형 제공업체 루트 조직이며, 자체 DNS/프록시/방화벽/AMP 트래픽이나 로밍 컴퓨터가 없다는 것입니다 — 해당 데이터는 각 관리 고객 조직 아래에 개별적으로 존재합니다. 기존 Umbrella에 대한 "이 고객 조직으로 쿼리" 범위 지정 매개변수/헤더를 Cisco 문서에서 검색했지만 찾지 못했습니다("Multi-Org" 토큰 범위 지정 개념이 존재하지만, 기존 Umbrella가 아닌 별도의 Secure Access/SASE 제품에만 해당). 고객별 데이터에 대한 의도된 경로로 보이는 별도의 "Providers" API 제품군(/providers/customers/{customerId}/...)이 있지만, 이 빌드에서 확인된 10개 엔드포인트 범위를 벗어납니다. 이 5개를 실제로 확인하려면 (제공업체 수준이 아닌) 실제 단일 고객 조직 자격 증명이 필요합니다.

  • cisco_umbrella_list_applications, _protocols, _application_categories (App Discovery) — 차단이 확인되었으며 코드 버그가 아닙니다. 두 테스트 계정 모두와 동일한 토큰을 사용한 직접 curl에서 동일하게 재현되었습니다(요청 구성 문제를 배제함): 계정 1에서는 403 Access Forbidden, 계정 2에서는 500/403. 두 토큰의 범위 목록에 reports.appdiscovery:read가 포함되어 있었으므로, 이는 권한이나 매개변수 문제가 아니라 패키지/자격 제한(유료 애드온인 App Discovery가 두 계정의 "Umbrella for MSSPs" 티어에 포함되지 않음)일 가능성이 가장 높습니다.

  • cisco_umbrella_get_providers_console는 목록이 아닌 단일 구독 요약 객체를 반환합니다 — 두 라이브 테스트를 통해 확인되었습니다. MSPbots 자체 구성 API 목록의 복수 이름("Providers Consoles")에도 불구하고, MSPbots의 기존 수집기가 기대하는 것(배열 vs 단일 객체)과 대조하여 다시 확인하십시오.

  • Applications 앱 검색 엔드포인트의 선택적 매개변수 목록이 완전히 빠짐없이 나열되지 않았을 수 있습니다(연구 중 해당 엔드포인트 스키마 끝부분의 매개변수 몇 개가 완전히 캡처되지 않음) — 여기에 문서화된 매개변수(sources, identity, labels, controllable, categories, subcategory, limit, offset)는 실제로 확인된 것이며, 아직 추가되지 않은 매개변수가 한두 개 더 있을 수 있습니다.

  • 범위는 MSPbots가 현재 사용하는 10개 작업(사용자 확인됨)으로 제한되며, Umbrella의 전체 API 표면(Networks, Internal Domains, Sites, Network Tunnels, Policies, Tagging, 고객별 작업을 위한 별도의 "Providers" API, API 키 자체를 관리하기 위한 Key Admin API도 포함)은 포함하지 않습니다.

API 참조

Available Tools

10 tools
cisco_umbrella_get_activity_amp_retrospectiveA

List AMP (Advanced Malware Protection) retrospective activity events — files that were re-classified as malicious after they were first seen.

    API: GET /reports/v2/activity/amp-retrospective

    Args:
        from_: Required. Start of the time range. Accepts epoch
            milliseconds, ISO-8601 (e.g. "2024-01-01T00:00:00Z"), or a
            relative offset (e.g. "-1days", "-7days", "now").
        to: Required. End of the time range. Same accepted formats as from_.
        limit: Max results per page (default 100).
        offset: Pagination offset.
        ampdisposition: Filter by AMP disposition, e.g. "malicious".
        sha256: Filter by a specific file's SHA-256 hash.
        timezone: IANA timezone name for the response's time fields.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
from_Yes
limitNo
offsetNo
sha256No
timezoneNo
ampdispositionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It mentions the API endpoint, default limit, and pagination offset, which hint at behavior. However, it does not disclose authentication needs, rate limits, or broader side effects (e.g., whether this is read-only). The word 'List' implies non-mutating, but that is implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized with a purpose line, API endpoint, and a list of args. It is front-loaded with the core purpose. It is longer than a simple two-liner but every line is informative. The structured arg list is easy to scan, though it could be slightly more concise if trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, endpoint, and all parameter semantics comprehensively. An output schema exists, so return values need no explanation. Missing pieces are explicit exclusions or caveats (e.g., 'not for DNS events') and any error/edge-case behavior. Overall it is complete for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does so thoroughly: from_ and to are explained with accepted formats (epoch ms, ISO-8601, relative offsets), limit has a default, offset is explained as pagination, ampdisposition has an example, sha256 is described, and timezone is defined. This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List AMP (Advanced Malware Protection) retrospective activity events' and explains what that means ('files that were re-classified as malicious after they were first seen'). This is a specific verb+resource+scope that distinguishes it from sibling activity tools like DNS, proxy, and firewall.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: this tool is for AMP retrospective events, which implies when to use it. However, it does not explicitly mention alternatives or exclusions relative to sibling activity tools. The description provides enough context for a basic selection decision, but lacks an explicit 'use this when' statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cisco_umbrella_get_activity_dnsA

List DNS activity events.

    API: GET /reports/v2/activity/dns

    Args:
        from_: Required. Start of the time range. Accepts epoch
            milliseconds, ISO-8601 (e.g. "2024-01-01T00:00:00Z"), or a
            relative offset (e.g. "-1days", "-7days", "now").
        to: Required. End of the time range. Same accepted formats as from_.
        limit: Max results per page (default 100).
        offset: Pagination offset.
        domains: Comma-separated domain filter.
        categories: Comma-separated content category ID filter.
        identityids: Comma-separated identity (e.g. roaming computer) ID filter.
        verdict: Filter by verdict, e.g. "allowed" or "blocked".
        threats: Comma-separated threat name filter.
        timezone: IANA timezone name for the response's time fields.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
from_Yes
limitNo
offsetNo
domainsNo
threatsNo
verdictNo
timezoneNo
categoriesNo
identityidsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It correctly implies a read operation via 'List' and includes details on pagination (limit, offset), but it does not disclose potential side effects, rate limits, or authentication requirements. The API endpoint is provided, adding some transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured as a docstring with a one-line summary, followed by the API endpoint and a formatted list of arguments. Every parameter earns its place, and the content is front-loaded with the core purpose. It is appropriately concise for a tool with 10 parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, output schema present), the description is nearly complete. It covers all parameters, clarifies required fields, and notes timezone handling. It does not explain the response structure, but the output schema likely covers that. Minor gap: no mention of error handling or boundary behaviors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions are absent (0% coverage), so the description fully compensates by explaining each parameter's format and purpose. It clarifies time formats, defaults (limit 100), and filter types (domains, categories, verdict, etc.), providing clear semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'List DNS activity events,' which is a specific verb and resource that clearly identifies the tool's purpose. The name and API endpoint further specify DNS activity, distinguishing it from sibling tools like proxy, firewall, and AMP retrospective activity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for DNS activity events, but it does not explicitly state when to choose this tool over the sibling activity tools (e.g., proxy, firewall). No alternative tools are mentioned, so the guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cisco_umbrella_get_activity_firewallA

List network firewall activity events.

    API: GET /reports/v2/activity/firewall

    Args:
        from_: Required. Start of the time range. Accepts epoch
            milliseconds, ISO-8601 (e.g. "2024-01-01T00:00:00Z"), or a
            relative offset (e.g. "-1days", "-7days", "now").
        to: Required. End of the time range. Same accepted formats as from_.
        limit: Max results per page (default 100).
        offset: Pagination offset.
        identityids: Comma-separated identity (e.g. network tunnel) ID filter.
        ruleid: Filter by firewall rule ID.
        verdict: Filter by verdict, e.g. "allowed" or "blocked".
        categories: Comma-separated category filter.
        timezone: IANA timezone name for the response's time fields.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
from_Yes
limitNo
offsetNo
ruleidNo
verdictNo
timezoneNo
categoriesNo
identityidsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the API method (GET) and the required time-range parameters, but does not explicitly state safety (e.g., read-only) or discuss behaviors like pagination limits, result ordering, or rate limits. The 'List' verb and GET API imply a non-destructive operation, but this is not spelled out.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It opens with a one-line purpose, gives the API endpoint, and then lists parameters in a readable format. Every sentence adds value; there is no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all parameters, required fields, and accepted formats, and an output schema exists so return values need no explanation. It could also mention explicit when-to-use vs. sibling tools, but that falls more under usage guidelines. Overall, it is sufficiently complete for a list operation with good parameter coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description is the only source of parameter meaning. It provides detailed semantics for every parameter: accepted time formats for from_/to, default for limit, offset as pagination, and definitions for each filter (identityids, ruleid, verdict, categories, timezone). This fully compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'List network firewall activity events,' which uses a specific verb and resource. It clearly distinguishes itself from sibling tools like get_activity_dns and get_activity_proxy by specifying 'firewall.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for firewall activity events, but it does not explicitly state when to use it over the sibling activity tools or mention any exclusions. The usage context is clear enough from the name and first line, but no alternatives or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cisco_umbrella_get_activity_proxyA

List proxy (Secure Web Gateway) activity events.

    API: GET /reports/v2/activity/proxy

    Args:
        from_: Required. Start of the time range. Accepts epoch
            milliseconds, ISO-8601 (e.g. "2024-01-01T00:00:00Z"), or a
            relative offset (e.g. "-1days", "-7days", "now").
        to: Required. End of the time range. Same accepted formats as from_.
        limit: Max results per page (default 100).
        offset: Pagination offset.
        domains: Comma-separated domain filter.
        urls: Comma-separated URL filter.
        categories: Comma-separated content category ID filter.
        identityids: Comma-separated identity ID filter.
        verdict: Filter by verdict, e.g. "allowed" or "blocked".
        threats: Comma-separated threat name filter.
        filename: Filter by downloaded file name.
        timezone: IANA timezone name for the response's time fields.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
urlsNo
from_Yes
limitNo
offsetNo
domainsNo
threatsNo
verdictNo
filenameNo
timezoneNo
categoriesNo
identityidsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the HTTP method (GET) and details about timezone handling and pagination, which is useful. However, it does not explicitly state that this is a read-only operation, mention authentication requirements, or describe error behavior, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a well-structured docstring with the API endpoint followed by an Args list. Each parameter gets a single concise line, and the content is front-loaded with the core action. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 12 parameters and no schema descriptions, the description covers every parameter, the API endpoint, and special formatting details for time fields and timezone. An output schema exists, so return values are presumably covered there. It is complete for a reporting tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description fully compensates by explaining every parameter, including accepted formats for from_/to (epoch, ISO-8601, relative offsets), default values, and filter semantics with examples (e.g., verdict 'allowed' or 'blocked'). This adds substantial meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'List proxy (Secure Web Gateway) activity events', providing a specific verb and resource. The term 'proxy' differentiates it from sibling tools that focus on DNS, firewall, or AMP activities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives like DNS or firewall activity tools. While the name and description imply proxy/SWG reporting, there are no when-to-use or when-not-to-use statements, and no alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cisco_umbrella_get_providers_consoleA

Get this Umbrella Managed Provider console's subscription/usage summary (package name, total/used seats, customer count, status, renewal/expiry dates). Not a list — returns a single object.

    API: GET /reports/v2/providers/consoles
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden. It discloses the HTTP method (GET), the fact that it returns a single object, and the summary contents, which are meaningful behavioral traits. It does not mention authentication, errors, or rate limits, but for a simple read-only report call with no parameters, the added context is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: a single main sentence with a parenthetical list, a clarifying sentence about the return type, and an API reference. Every line adds value, with no redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool, the description is complete: it states the purpose, the return value's scope, the single-object semantics, and provides the exact API endpoint. The output schema covers detailed return values, so the description need not repeat them, and the simplicity of the tool means no additional context is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no properties, so the baseline is 4. The description does not need to explain parameters because there are none; it appropriately focuses on the output and semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as retrieving 'this Umbrella Managed Provider console's subscription/usage summary' and enumerates the specific fields (package name, seats, customer count, status, dates). The phrase 'Not a list — returns a single object' explicitly differentiates it from the sibling list tools, meeting the requirement for a specific verb+resource and sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it is for obtaining the console's subscription/usage summary and emphasizes that it returns a single object rather than a list, which helps choose it over list-oriented siblings. However, it does not explicitly name alternative tools or state when not to use it, so it falls slightly short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cisco_umbrella_list_application_categoriesB

List application categories (App Discovery).

    API: GET /reports/v2/appDiscovery/applicationCategories

    Args:
        limit: Max results per page (1-100).
        offset: Pagination offset.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It includes the GET API endpoint, implying read-only, but fails to disclose pagination behavior, return format, permissions, rate limits, or other behavioral traits. The description stays at the surface level without revealing operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a clear purpose statement, the API endpoint, and an Args section with parameter details. Each line earns its place, with no filler, and the format is easily scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained. The description covers the core function and parameters, making it minimally viable for a simple list operation. However, it lacks any usage context, behavioral detail, or operational constraints, leaving gaps in full understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds valuable parameter semantics: 'limit: Max results per page (1-100)' and 'offset: Pagination offset.' This goes beyond the schema, which has 0% description coverage and only provides types and defaults. The range and purpose of parameters are clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List application categories (App Discovery).' with a specific verb and resource, and also provides the API endpoint for added clarity. However, it does not explicitly differentiate from sibling tools like 'cisco_umbrella_list_applications', though the resource name is distinct enough to infer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as 'cisco_umbrella_list_applications' or other list tools. There is no context on use cases, prerequisites, or when not to use it, so the usage guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cisco_umbrella_list_applicationsA

List discovered cloud applications (App Discovery).

    API: GET /reports/v2/appDiscovery/applications

    Args:
        sources: Comma-separated data source filter, e.g. "dns,swg,cdfw".
        identity: Filter by identity (e.g. roaming computer or network) ID.
        labels: Comma-separated label filter.
        controllable: Filter to only applications with a controllable policy.
        categories: Comma-separated application category ID filter.
        subcategory: Filter by application subcategory.
        limit: Max results per page.
        offset: Pagination offset.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
labelsNo
offsetNo
sourcesNo
identityNo
categoriesNo
subcategoryNo
controllableNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden for behavioral disclosure. It only states 'List' and lists parameters, but does not describe pagination behavior (e.g., default limit, max results), response structure, or any side effects beyond it being a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a one-line summary, API endpoint, and a clear list of args. It is concise and free of extraneous information, though the API line is somewhat redundant with the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation with an output schema, the description covers all parameters and the core purpose, but lacks usage guidance and behavioral details like pagination defaults. The output schema presumably covers return values, so the description is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All eight parameters are described with meaningful detail beyond the schema, including value formats (comma-separated, boolean), examples (sources: 'dns,swg,cdfw'), and semantics (limit as max results per page). Since schema coverage is 0%, this description fully compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'List discovered cloud applications (App Discovery).' with a clear verb and resource, and includes the API endpoint. This clearly distinguishes it from sibling tools like list_application_categories or get_activity_*.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no guidance on when to use this tool versus alternatives such as activity reporting or category listing. There is no mention of prerequisites, exclusions, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cisco_umbrella_list_customersA

List customer organizations under this Umbrella Managed Provider (MSP) account.

    API: GET /admin/v2/managed/customers

    Args:
        page: Page number (default 1).
        limit: Max results per page (default 100, max 100).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. The 'List' verb and 'GET' API endpoint indicate a read-only operation, and the max limit of 100 is disclosed. However, it does not mention authentication requirements, rate limits, or behavior beyond pagination, leaving some transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and well-structured: purpose in the first line, API endpoint for reference, then a clear args list. Every sentence provides value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, an output schema exists (so return values are covered), the description adequately covers purpose, scope, endpoint, and parameters. It lacks explicit guidance on when to prefer this tool over siblings, but it is otherwise complete for a straightforward list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining both parameters: page is the page number (default 1), and limit is max results per page (default 100, max 100). It adds the max constraint not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists customer organizations under the MSP account, using a specific verb ('List') and resource ('customer organizations'). It distinguishes itself from sibling tools that list other entities like roaming computers, applications, or protocols.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context that this is for the Umbrella Managed Provider (MSP) account, implying it should be used when the agent needs to see managed customer organizations. It does not explicitly mention when not to use it or name alternatives, but the MSP-specific scope differentiates it from sibling list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cisco_umbrella_list_protocolsA

List discovered network protocols (App Discovery).

    API: GET /reports/v2/appDiscovery/protocols

    Args:
        identity: Filter by identity (e.g. roaming computer or network) ID.
        limit: Max results per page.
        offset: Pagination offset.
        sort: Sort field — "firstDetected" or "lastDetected".
        order: Sort order — "asc" or "desc".
    
ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitNo
orderNo
offsetNo
identityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses the HTTP method (GET) and the endpoint, implying read-only, and documents each parameter's meaning. However, it does not address pagination behavior limits, authentication, or other operational caveats, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by the API endpoint and a structured Args list. No redundant sentences; every element serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values are covered. The description explains all parameters and the endpoint. It lacks explicit cross-tool guidance, but overall it is sufficiently complete for a straightforward list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It does so thoroughly via an Args section that explains identity filtering, pagination, sort fields, and order values, adding substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'List discovered network protocols (App Discovery),' providing a specific verb, resource, and context. This clearly distinguishes it from sibling tools like list_applications and list_application_categories by focusing on protocols.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description identifies the App Discovery domain but does not explicitly explain when to choose this over list_applications or list_application_categories. Usage is implied by the tool name and resource, but no exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cisco_umbrella_list_roaming_computersA

List roaming computers (endpoints running the Umbrella roaming client).

    API: GET /deployments/v2/roamingcomputers

    Args:
        page: Page number (default 1).
        limit: Max results per page (default 100, max 100).
        name: Filter by computer name (partial match).
        status: Filter by status.
        swg_status: Filter by Secure Web Gateway module status.
        last_sync_before: Only computers that last synced before this time.
        last_sync_after: Only computers that last synced after this time.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNo
limitNo
statusNo
swg_statusNo
last_sync_afterNo
last_sync_beforeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the HTTP method (GET), pagination via page and limit, and filter semantics. However, in the absence of annotations, it does not explicitly state read-only nature, authentication needs, or behavior like how filters combine. Some behavioral traits are covered, but not all.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded: purpose first, then API endpoint, then a clear list of arguments. Every sentence contributes useful information without redundancy or fluff. The layout is scannable and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main purpose, endpoint, all parameters, and pagination. Since an output schema exists, the absence of response format details is acceptable. It could go further by specifying allowed filter values and date/time formats, but overall it is complete enough for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given schema description coverage is 0%, the description compensates by explaining each of the 7 parameters with meaningful details: defaults, max limit, partial matches for name, and the semantics of last_sync_before/after. It lacks allowed values for status and date formats, but provides substantial value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb 'List' and resource 'roaming computers', and clarifies in parentheses that these are endpoints running the Umbrella roaming client. This clearly distinguishes it from sibling tools like activity or application list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the tool's purpose clear but does not explicitly state when to use it versus alternatives or mention exclusions. Sibling tools are quite different, so usage is implied, but no direct guidance or alternative routing is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedcisco_umbrella_get_activity_amp_retrospective
    • First observedcisco_umbrella_get_activity_dns
    • First observedcisco_umbrella_get_activity_firewall
    • First observedcisco_umbrella_get_activity_proxy
    • First observedcisco_umbrella_get_providers_console
    • First observedcisco_umbrella_list_application_categories
    • First observedcisco_umbrella_list_applications
    • First observedcisco_umbrella_list_customers
    • First observedcisco_umbrella_list_protocols
    • First observedcisco_umbrella_list_roaming_computers

TDQS

A4/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct resource and action: four activity types (DNS, proxy, firewall, AMP), app discovery resources (applications, protocols, categories), roaming computers, and MSP-specific data (customers, console). No two tools appear to overlap in purpose.

Naming Consistency5/5

All tools follow a consistent cisco_umbrella_<verb>_<noun> pattern with snake_case. The verb varies logically: 'get' for single objects or specific activity endpoints, 'list' for collection endpoints. This is highly predictable.

Tool Count5/5

10 tools is well-scoped for an umbrella security API server: it covers several distinct functional areas (activity events, app discovery, roaming computers, MSP management) without becoming unwieldy. Each tool serves a clear purpose.

Completeness4/5

The set provides broad read-only access to multiple domains: activity reporting, app discovery, roaming computer lists, and MSP summary. It lacks individual item retrieval or management operations (e.g., get by ID, create/update/delete), but for a read-only reporting server this is a minor gap rather than a fatal one.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    MCP server for Proofpoint Email Protection - email security, threat intelligence, TAP (Targeted Attack Protection), and email filtering API integration
    40
    5
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    A read-only MCP server for Cisco Meraki Dashboard, enabling LLMs to discover devices, check health, troubleshoot, and generate reports via natural language.
    MIT