Whisper

One routable IPv6 per AI agent, verifiable from the DNS root. Keyless tools need no signup.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
100%
이름 품질
75%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (3)

  • LOWTool 'whisper_lookupTlsFingerprint' doesn't follow camelCase/snake_casewhisper_lookupTlsFingerprint에서
  • LOWTool 'whisper_lookupTorRelay' doesn't follow camelCase/snake_casewhisper_lookupTorRelay에서
  • LOWTool 'whisper_topAsnsByPrefixCount' doesn't follow camelCase/snake_casewhisper_topAsnsByPrefixCount에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~5,908토큰 (도구 정의)
~3.4 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 4.62%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "whisper": {
      "command": "npx",
      "args": [
        "@whisper-security/whisper-mcp"
      ]
    }
  }
}

실행 가능한 패키지

npm@whisper-security/whisper-mcp0.219.3stdio

원격 엔드포인트

https://whisper.online/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (17)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟡whisper_signup(input)

Start or complete Whisper signup from an email address alone, and receive an API key that unlocks the provisioning and governance skills on this card. Send {"email":"..."} to start; a six-digit code arrives by email; send {"signup_id":"...","code":"123456"} to complete. No human step, no account needed first. Example call: {"skill":"signup","input":{"email":"[email protected]"}}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "description": "Arguments for this operation, as an object. The example passes {\"email\":\"[email protected]\"}."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "Whether the step succeeded."
    },
    "signup_id": {
      "type": "string",
      "description": "Returned by the first step. Send it back with the six-digit code from the email to finish."
    },
    "api_key": {
      "type": "string",
      "description": "Returned by the second step. This is the credential; send it as the X-API-Key header and the provisioning and governance tools appear in tools/list."
    },
    "message": {
      "type": "string",
      "description": "What to do next, in a sentence."
    }
  },
  "required": [
    "ok"
  ],
  "description": "The result of a signup step: an id to continue with, or the API key itself."
}
🟢whisper_verify(input)

Is this IPv6 address or hostname a real Whisper agent, and whose? Grades the full keyless trust chain: the reverse DNS record, the forward AAAA confirming it back to the same address, and the DANE-EE certificate pin published in DNSSEC-signed DNS. Returns is_whisper_agent with the evidence for the verdict either way, so a negative answer is an answer and not an error. Answers without an API key, and every leg of it is independently checkable from the DNS root with dig. Example call: {"skill":"verify","input":"2a04:2a01:b69a:6717:e3b0:51ff:3bf7:f478"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes 2a04:2a01:b69a:6717:e3b0:51ff:3bf7:f478."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "is_whisper_agent": {
      "type": "boolean",
      "description": "The verdict. False is an ANSWER, not a failure: the address or name is simply not a Whisper agent, and the evidence says which leg of the chain is missing."
    },
    "evidence": {
      "type": "object",
      "description": "What was checked and what was found: the address or fqdn as given, the PTR, and the forward record that did or did not confirm it."
    },
    "detail": {
      "type": "string",
      "description": "A sentence explaining a negative verdict. Absent on a positive one."
    },
    "fqdn": {
      "type": "string",
      "description": "The agent's canonical hostname, forward-confirmed against the address. Positive verdicts only."
    },
    "operator": {
      "type": "string",
      "description": "The opaque handle of the account that owns this agent."
    },
    "tenant": {
      "type": "string",
      "description": "The tenant handle, which also appears inside the fqdn."
    },
    "dane_ok": {
      "type": "boolean",
      "description": "Whether the certificate this address actually serves satisfies the DANE-EE pin published for it in DNSSEC-signed DNS. This is the leg that cannot be forged without the zone."
    },
    "jws_ok": {
      "type": "boolean",
      "description": "Whether a verifiable signed identity document can be produced for this agent."
    },
    "verified_at": {
      "type": "string",
      "description": "When this verdict was graded, ISO 8601."
    }
  },
  "required": [
    "is_whisper_agent",
    "evidence"
  ],
  "description": "Whether an address or hostname is a Whisper agent, with the evidence for the verdict either way. Every leg is independently checkable from the DNS root with dig."
}
🟢whisper_rdap(input)

The public registration record for any address in Whisper's space, in RFC 9083 form: the handle, the agent's label, its country, and the entities behind it. The same document the RDAP service serves at /ip/{address}, which any RDAP client can already read. Answers without an API key. Example call: {"skill":"rdap","input":"2a04:2a01:b69a:6717:e3b0:51ff:3bf7:f478"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes 2a04:2a01:b69a:6717:e3b0:51ff:3bf7:f478."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "objectClassName": {
      "type": "string",
      "description": "Always \"ip network\" for this tool (RFC 9083)."
    },
    "handle": {
      "type": "string",
      "description": "The registry handle for this address."
    },
    "name": {
      "type": "string",
      "description": "The label its owner gave it."
    },
    "type": {
      "type": "string",
      "description": "What kind of allocation this is."
    },
    "country": {
      "type": "string",
      "description": "Two-letter country code of the registration."
    },
    "ipVersion": {
      "type": "string",
      "description": "\"v6\" or \"v4\"."
    },
    "startAddress": {
      "type": "string",
      "description": "First address of the range."
    },
    "endAddress": {
      "type": "string",
      "description": "Last address of the range."
    },
    "status": {
      "type": "array",
      "description": "Registry status values for the object."
    },
    "entities": {
      "type": "array",
      "description": "The parties behind the registration, in RFC 9083 entity form."
    },
    "events": {
      "type": "array",
      "description": "Registration lifecycle events with their timestamps."
    },
    "remarks": {
      "type": "array",
      "description": "Free-text notes the registry publishes with the object."
    },
    "links": {
      "type": "array",
      "description": "Related RDAP and web resources."
    },
    "notices": {
      "type": "array",
      "description": "Service-level notices, including the terms of use."
    },
    "rdapConformance": {
      "type": "array",
      "description": "The RDAP extensions this answer conforms to."
    }
  },
  "required": [
    "objectClassName",
    "handle"
  ],
  "description": "The public registration record for one address, RFC 9083 shaped, byte-for-byte what the RDAP service serves at /ip/{address}."
}
🟢whisper_identify(input)

Identify an indicator (domain, IP, hash, …) against the graph. Answers without an API key. Example call: {"skill":"identify","input":"example.com"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes example.com."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_assess(input)

Assess the risk/policy posture of one or more indicators. Answers without an API key. Example call: {"skill":"assess","input":"example.com"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes example.com."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_walk(input)

Walk the graph from an indicator across its relationships. Answers without an API key. Example call: {"skill":"walk","input":"example.com"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes example.com."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
⚪whisper_watch(input)

Watch an indicator for change/activity over time. Answers without an API key. Example call: {"skill":"watch","input":{"action":"list"}}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "object",
      "description": "Arguments for this operation, as an object. The example passes {\"action\":\"list\"}."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_explain(input)

Explain a verdict - the evidence and reasoning behind it. Answers without an API key. Example call: {"skill":"explain","input":"example.com"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes example.com."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_variants(input)

Enumerate variants/permutations of an indicator. Answers without an API key. Example call: {"skill":"variants","input":"example.com"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes example.com."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_origins(input)

Trace the origins/provenance of an indicator. Answers without an API key. Example call: {"skill":"origins","input":"example.com"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes example.com."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_history(input)

Historical records for an indicator (incl. whois/bgp history). Answers without an API key. Example call: {"skill":"history","input":"example.com"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes example.com."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_lookupTlsFingerprint(input)

Look up a TLS (JA3/JA4) fingerprint in the graph. Answers without an API key. Example call: {"skill":"lookupTlsFingerprint","input":"ja3:771,4865-4866-4867"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes ja3:771,4865-4866-4867."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_lookupTorRelay(input)

Look up Tor relay metadata for an address. Answers without an API key. Example call: {"skill":"lookupTorRelay","input":"185.220.101.1"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes 185.220.101.1."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_asset(input)

Resolve an asset and its catalog of attributes. Answers without an API key. Example call: {"skill":"asset","input":"example.com"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes example.com."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_threatintel(input, sub)

Threat-intelligence indicator family (candidate apex/CDN/hosting). A family verb: name the sub-verb as "sub" alongside the input. Sub-verbs: candidateCdnApex, candidateMultiTenantApex, candidateSharedHostingIp.. Answers without an API key. Example call: {"skill":"threatintel","sub":"candidateCdnApex","input":5}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "integer",
      "description": "A row limit. The example passes 5."
    },
    "sub": {
      "type": "string",
      "description": "Which sub-verb of this family to run. The example runs \"candidateCdnApex\"."
    }
  },
  "required": [
    "sub",
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_psl(input, sub)

Public-suffix-list family (tld-plus-one, is-public-suffix, affiliation). A family verb: name the sub-verb as "sub" alongside the input. Sub-verbs: tldPlusOne, isPublicSuffix, affiliation.. Answers without an API key. Example call: {"skill":"psl","sub":"tldPlusOne","input":"a.b.example.co.uk"}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "The indicator to look up: a domain, an IP address, an ASN or a file hash. The example passes a.b.example.co.uk."
    },
    "sub": {
      "type": "string",
      "description": "Which sub-verb of this family to run. The example runs \"tldPlusOne\"."
    }
  },
  "required": [
    "sub",
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}
🟢whisper_topAsnsByPrefixCount(input)

Top ASNs ranked by announced-prefix count. Answers without an API key. Example call: {"skill":"topAsnsByPrefixCount","input":10}

입력 스키마

{
  "type": "object",
  "properties": {
    "input": {
      "type": "integer",
      "description": "A row limit. The example passes 10."
    }
  },
  "required": [
    "input"
  ]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The column names, in order. Every row object has exactly these keys, so this is the row shape and reading it is cheaper than inspecting a row."
    },
    "rows": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The answers, one object per row, keyed by the column names above. An empty array means the question was understood and nothing matched, which is an answer and not a failure."
    },
    "statistics": {
      "type": "object",
      "description": "What the query cost.",
      "properties": {
        "rowCount": {
          "type": "integer",
          "description": "How many rows came back."
        },
        "executionTimeMs": {
          "type": "integer",
          "description": "Milliseconds the graph spent answering."
        }
      },
      "required": [
        "rowCount"
      ]
    }
  },
  "required": [
    "columns",
    "rows"
  ],
  "description": "A tabular graph answer: the column names, the rows keyed by them, and the cost."
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 17개