LeashIndex Get the report

Index / messaging

hardly

io-github-b1tninja-hardly declares 71 capabilities across 71 tools, with 2 critical issues. One of them, no-revocation, is recorded for every server in the index because MCP has no field in which to declare a way to switch a tool off; a missing declaration is not evidence that the control is missing.

98/100 exposureHigh exposure

Manifest recorded 2026-10-29 from tools/list answered by the PyPI package hardly==1.0.0 (published to PyPI as hardly, listed in the official MCP registry as io.github.b1tninja/hardly 1.0.0), run in an isolated container with no network access and no credentials. The date changes only when the manifest does. Not verified by a maintainer.

Issues

These describe what this server's manifest declares. A product can provide controls that MCP has no way to express — token revocation, an admin console, audit logs — and this page cannot see them. The absence of a declaration is not evidence that a control is absent.

critical · no-revocation · All 71 tools

71 of 71 tools declare no way for the customer to switch them off once granted. This applies to every tool because MCP has no field in which to declare a revocation mechanism; the product may provide one outside MCP that a manifest cannot show.

critical · irreversible-uncapped · 8 of 71 tools

8 tools are classified as irreversible and declare no limit.

high · no-expiry · All 71 tools

71 of 71 tools declare no expiry. This applies to every tool because MCP has no field in which to declare an expiry; the product may provide one outside MCP that a manifest cannot show.

high · no-audit-trail · All 71 tools

71 of 71 tools declare no record of their actions that the customer can read. This applies to every tool because MCP has no field in which to declare an audit requirement; the product may provide one outside MCP that a manifest cannot show.

high · uncapped-write · 30 of 71 tools

30 tools can modify data and declare no limit.

low · uncapped-read · 33 of 71 tools

33 tools can read data and declare no limit.

Declared capabilities

How each tool was read. declared means the server's own annotation said so — self-reported and unverified. inferred is from the tool's name. assumed means nothing indicated either way.

ToolRead asBasis
hardly_server_statusread inferred
hardly_guide_helpwrite assumed
hardly_guide_moderead inferred
hardly_guide_task_planwrite assumed
hardly_session_openread inferred
hardly_session_closedelete inferred
hardly_session_listread inferred
hardly_write_session_copywrite inferred
hardly_har_file_checkwrite assumed
hardly_write_har_prunedwrite inferred
hardly_write_har_scrubbedwrite inferred
hardly_write_har_splitwrite inferred
hardly_write_har_mergedwrite inferred
hardly_catalog_listread inferred
hardly_write_catalog_recordread inferred
hardly_send_catalog_verifysend inferred
hardly_browser_startwrite assumed
hardly_browser_stopwrite assumed
hardly_capture_listread inferred
hardly_browser_capture_discoverwrite assumed
hardly_browser_interactwrite assumed
hardly_browser_inspectread inferred
hardly_browser_run_stepsread inferred
hardly_write_screenshotwrite inferred
hardly_session_plan_stepswrite assumed
hardly_session_overviewread inferred
hardly_session_traffic_statsread inferred
hardly_session_body_coverageread inferred
hardly_session_issuesread inferred
hardly_session_duplicatesread inferred
hardly_session_slow_requestswrite inferred
hardly_session_reportwrite assumed
hardly_session_site_briefwrite assumed
hardly_session_storywrite assumed
hardly_session_timelineread inferred
hardly_session_redirect_historyread inferred
hardly_session_trace_valueread inferred
hardly_session_sqlread inferred
hardly_session_compareread inferred
hardly_entry_searchread inferred
hardly_entry_getread inferred
hardly_entry_aroundread inferred
hardly_entry_initiatorsread inferred
hardly_entry_compareread inferred
hardly_entry_build_curlwrite assumed
hardly_entry_body_queryread inferred
hardly_entry_outlinewrite assumed
hardly_entry_dependenciesread inferred
hardly_endpoint_listread inferred
hardly_endpoint_schemawrite inferred
hardly_spec_contract_checkread inferred
hardly_tech_stackwrite assumed
hardly_endpoint_graphqlread inferred
hardly_endpoint_streamswrite assumed
hardly_endpoint_paginationwrite assumed
hardly_endpoint_arcgisread inferred
hardly_page_listread inferred
hardly_page_formswrite assumed
hardly_page_uiwrite assumed
hardly_page_embedded_routeswrite assumed
hardly_page_tablesread inferred
hardly_auth_reportwrite assumed
hardly_gate_bot_protectionread inferred
hardly_send_entrysend inferred
hardly_send_entry_ablationsend inferred
hardly_send_entry_seriessend inferred
hardly_send_site_crawlsend inferred
hardly_send_arcgis_exploresend inferred
hardly_send_redirect_walksend inferred
hardly_write_exportwrite inferred
hardly_client_buildwrite assumed
Answering this question about your own agent? The self-serve stack report applies the same reading to your own stack or server and gives you a dated document you can hand to a customer's security review. It is generated in your browser, with nobody to wait for. Buying one does not change this page, its score or its place in the index — see Independence.
Maintain this server? If this page misreads your manifest, or your server has changed, submit its current tools/list response and it will be re-scored and dated. Corrections are published alongside the original, not in place of it.