Agent Help Network MCP server
2026년 11월 15일 커밋호스트 에이전트 정책, 공식 API 경로 및 서비스 상태를 제공하여 AI 에이전트의 웹 접속 차단 문제를 해결하도록 돕습니다.
다른 이름 agent-help-network/agent-help-network, agent-help-network
- 스타
- 0
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- 0.1.3
- 마지막 커밋
- 2026년 11월 15일
- 라이선스
- Apache-2.0
Agent Help Network MCP란?
Agent Help Network은(는) MCP server입니다. 호스트 에이전트 정책, 공식 API 경로 및 서비스 상태를 제공하여 AI 에이전트의 웹 접속 차단 문제를 해결하도록 돕습니다.
프로젝트 README에서 생성된 요약
Agent Help Network MCP server 정보
Agent Help Network는 AI 에이전트가 특정 웹사이트 접속이 차단되는 이유를 파악할 수 있는 방법을 제공합니다. 에이전트가 403 Forbidden 상태, 로그인 벽, CAPTCHA 또는 5xx 서버 오류와 같은 문제에 직면했을 때, 이 서비스를 쿼리하여 호스트가 실제로 허용하는 범위를 확인할 수 있습니다. 서비스는 호스트의 선언된 에이전트 정책, 공식 API 경로 및 현재 서비스 상태를 반환하여, 에이전트가 공식 개발자 경로로 전환할지 아니면 작업을 사람에게 넘길지 결정하도록 지원합니다.
이 서비스는 REST API 또는 MCP server를 통해 접근할 수 있는 원격 서비스입니다. 개발자는 LangChain, CrewAI, OpenAI Agents SDK, Claude Agent SDK와 같은 프레임워크용 어댑터를 포함하는 ahn-client Python 패키지를 사용하여 워크플로우에 통합할 수 있습니다. 또한 Claude Code 플러그인으로도 사용할 수 있습니다. 서비스는 무료로 제공되는 읽기 전용 서비스이며, 계정이나 API key가 필요하지 않습니다. 사전 점검 용도가 아닌, 웹 단계가 실패한 이후에만 호출하도록 설계되었습니다.
활용 사례
- 1웹 접속 차단 해결에이전트는 선언된 robots 정책과 에이전트 규칙을 확인하여 웹사이트가 자동화된 접속을 허용하는지 판단할 수 있습니다.
- 2공식 API 대안 탐색로그인 벽이 있는 웹 페이지를 자동화하려고 시도하는 대신, 에이전트는 문서화된 공식 API 경로를 찾을 수 있습니다.
- 3서비스 가용성 확인에이전트는 연결 실패가 로컬 차단 때문인지 아니면 일반적인 서비스 중단 때문인지 확인할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Agent Help Network MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 Agent Help Network MCP 설치
$ claude mcp add --transport http agent-help-network https://agenthelpnetwork.com/mcpCursor에 Agent Help Network MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"agent-help-network": {
"url": "https://agenthelpnetwork.com/mcp"
}
}
}VS Code에 Agent Help Network MCP 설치
.vscode/mcp.json
{
"servers": {
"agent-help-network": {
"type": "http",
"url": "https://agenthelpnetwork.com/mcp"
}
}
}VS Code CLI에 Agent Help Network MCP 설치
$ code --add-mcp '{"name":"agent-help-network","type":"http","url":"https://agenthelpnetwork.com/mcp"}'Codex에 Agent Help Network MCP 설치
$ codex mcp add agent-help-network --url https://agenthelpnetwork.com/mcpCodex config.toml에 Agent Help Network MCP 설치
~/.codex/config.toml
[mcp_servers.agent-help-network] url = "https://agenthelpnetwork.com/mcp"
Gemini CLI에 Agent Help Network MCP 설치
$ gemini mcp add -s user --transport http agent-help-network https://agenthelpnetwork.com/mcpGemini settings.json에 Agent Help Network MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"agent-help-network": {
"url": "https://agenthelpnetwork.com/mcp",
"type": "http"
}
}
}자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능agent-help-network/agent-help-network is public and reachablegithub.com/agent-help-network/agent-help-network ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-12github.com/agent-help-network/agent-help-network ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답initialize answered with protocol 2025-06-18 in 311 ms통과
README
GitHub에서 보기Agent Help Network
English · 한국어
When a web step is blocked (403, login wall, CAPTCHA, 5xx), ask once: what does this host allow agents to do, what is its official path, is it up — and what to do next. Free, read-only, no account. Remote MCP · REST · Claude Code plugin · Python client.
Agent Help Network answers one question for a public hostname: what does this host allow agents to do, what is the official path, and is it up right now — plus any recent observations from other agents. It is meant for an agent whose web step is blocked (access denied, login wall, human verification, service error): instead of retrying blindly or handing the task back to a person sooner than needed, the agent first reads the host's own declared policy and official path. Agents read the answer over REST/OpenAPI or MCP; the human website shows the same answer in English and Korean. Steps that genuinely need a person's confirmation or decision are handed to that person.
Agent Help Network is an independent project. It is not an official service of, and is not affiliated with, endorsed by, or sponsored by, any AI provider or platform, any site it describes, or any provider whose status it links.
Install
Reading is free and needs no account.
claude plugin marketplace add agent-help-network/agent-help-network # Claude Code plugin (source: plugins/claude-code/ahn)
claude plugin install ahn@agent-help-network
pip install ahn-client # Python client (source: clients/python)
pip install "ahn-client[langchain]" # or [crewai], [openai-agents], [claude-agent-sdk]: framework adapters
Install in a client: the connect page has setup for the Claude Code plugin, Cursor, the OpenAI Agents SDK, and any other remote MCP client. For Python code (Playwright, Browser Use, plain HTTP) use the read-only ahn-client package from PyPI, which has no dependencies and sends only a hostname and enum codes. From version 0.3.0 it also has optional adapters that add a one-line answer when a web tool fails inside LangChain v1 ([langchain]), CrewAI ([crewai]), the OpenAI Agents SDK ([openai-agents]) or the Claude Agent SDK ([claude-agent-sdk]), and a Browser Use example. None of these is an official OpenAI, Meta, Anthropic, Muse, or dots integration.
Install in your coding agent: remote HTTP server, no account or key. Each client asks you to confirm before saving. Formats are from each vendor's docs: Cursor, VS Code, Cline, Codex.
- Cursor and VS Code one-click buttons: the connect page (GitHub does not render
cursor://orvscode:links, and the vendors document no https redirect for them) - VS Code, in
mcp.json:{"servers": {"agent-help-network": {"type": "http", "url": "https://agenthelpnetwork.com/mcp"}}} - Cline, in
cline_mcp_settings.json:{"mcpServers": {"agent-help-network": {"type": "streamableHttp", "url": "https://agenthelpnetwork.com/mcp"}}} - Codex, in
~/.codex/config.toml:
[mcp_servers.agent-help-network]
url = "https://agenthelpnetwork.com/mcp"
Plugin demo video: watch the Claude Code plugin work (WebM, 1 min 18 s, with English captions; captions file). GitHub does not play WebM inline, so this opens the file; the same video is embedded on the connect page.
A real response
Send the hostname only — never a URL path, query, credential, or conversation text — and avoid sensitive hostnames.
curl "https://agenthelpnetwork.com/v1/incidents/check?site_host=github.com&error_class=site_access"
A response for github.com, captured from the live service on 2026-10-18 and trimmed to the key fields (summary_line is the current sentence of its row, not the captured text): robots.rules held 22 agent-token entries at capture time (it has one entry per token in AGENT_USER_AGENTS in ahn/access_profile.py, and that table has grown since, so agents_blocked and agents_allowed below list only the tokens known then) and is cut to three here, path-sample lists are cut to at most three entries, and each next_checks entry also carries an English text. robots_detail, llms_detail, crawl_delay, the path samples, sitemaps, wildcard_crawl_delay, read_host, and provider_status.error_detail are shown as a fresh read under the current contract returns them (the profile cached at capture time predated them).
summary_line and next_action are the short form: read them first. They are computed after the answer is decided and never change recommendation or next_checks, which stay the verdict (D51; fields in the contract).
{
"site_host": "github.com",
"summary_line": "An official developer API is listed with a no-sign-up option (official_paths.access.auth). For API work use it, not page automation; for a task in the user's own account, hand the step to your user.",
"next_action": {"do": "use_official_path", "url": "https://docs.github.com/en/rest", "retry_after_seconds": null},
"links": {
"feedback": "https://github.com/agent-help-network/agent-help-network/discussions/categories/field-reports",
"changelog": "https://github.com/agent-help-network/agent-help-network/blob/main/docs/feedback-changelog.md"
},
"current_site_status": "unknown",
"evidence_level": "no_reports",
"summary_code": "NO_MATCHING_REPORTS_STATUS_UNKNOWN",
"observations": [],
"recommendation": {
"action": "use_official_path",
"confidence": "medium",
"reasons": ["official_path_available"]
},
"access_profile": {
"robots_status": "ok",
"robots": {
"rules": [
{"agent": "ChatGPT-User", "kind": "user_agent", "explicit_group": false, "root_allowed": true, "disallow_count": 162,
"crawl_delay": null, "disallow_paths": ["/account-login", "/copilot/", "/copilot/c/"]},
{"agent": "GPTBot", "kind": "training_crawler", "explicit_group": true, "root_allowed": true, "disallow_count": 162,
"crawl_delay": 1.0, "disallow_paths": ["/account-login", "/copilot/", "/copilot/c/"]},
{"agent": "Bytespider", "kind": "training_crawler", "explicit_group": true, "root_allowed": false, "disallow_count": 1,
"crawl_delay": null, "disallow_paths": ["/"]}
],
"wildcard_root_allowed": true,
"sitemaps": [],
"wildcard_crawl_delay": null,
"wildcard_disallow_paths": ["/account-login", "/copilot/", "/copilot/c/"],
"agents_blocked": ["Bytespider"],
"agents_allowed": ["OAI-SearchBot", "PerplexityBot", "Bingbot", "GPTBot", "ClaudeBot", "anthropic-ai"]
},
"robots_detail": "http_200",
"llms_txt_status": "present",
"llms_detail": "too_large",
"read_host": "github.com",
"source_urls": {"robots_txt": "https://github.com/robots.txt", "llms_txt": "https://github.com/llms.txt"},
"fetched_at": "2026-10-18T03:53:58.695938Z",
"freshness": "fresh"
},
"official_paths": {
"name": "GitHub",
"api_docs": "https://docs.github.com/en/rest",
"developer_portal": "https://docs.github.com/",
"note": null
},
"provider_status": {
"source_name": "GitHub Status",
"source_url": "https://www.githubstatus.com/",
"indicator": "none",
"freshness": "fresh",
"error_detail": null
},
"provider_source_state": "feed_connected",
"next_checks": [
{"code": "locate_failure_stage"},
{"code": "robots_allows_agents"},
{"code": "llms_txt_present"},
{"code": "official_path_available"},
{"code": "provider_clear"},
{"code": "reports_unknown"}
]
}
Values change over time; call the service rather than copying this example. The full field reference is in the API contract (English).
When to call it
Call it after a web step has failed, not before. Look the host up when a fetch or browser step reports a block or an outage: HTTP 401, 402, 403, 407, 408, 429, 451 or 5xx, a login wall, a human-verification page, a timeout, or a refused connection. A 404 or another plain 4xx is not a block and needs no lookup. Ask once per host; do not poll.
| Runtime | What happens on a failed web step | Install |
|---|---|---|
| Claude Code | The plugin adds one line after a failed WebFetch or browser step (when a line is added). |
claude plugin install ahn@agent-help-network |
| LangChain v1, CrewAI, OpenAI Agents SDK, Claude Agent SDK | The adapter adds one line to the failed tool result (CrewAI: to your callback and the log, not the prompt). | pip install "ahn-client[langchain]", [crewai], [openai-agents] or [claude-agent-sdk] |
| Any other MCP client | You call the check_incident tool. |
https://agenthelpnetwork.com/mcp |
| Plain Python, Playwright, Browser Use, REST | You call ahn.check() or the REST endpoint in your except block. |
pip install ahn-client |
Limits
- It acts only after a failure. A tool that returns the text of a 403 page as an ordinary result is not a failure to the framework, so no adapter sees it: make the tool raise (
response.raise_for_status()) or report an error. The Claude Code plugin likewise does not look up a browser step that "succeeds" but shows a block page, orcurlrun through Bash; use theahn-lookupskill or the MCP tool by hand. - A failure that is not a block or an outage (404, 422, a typo in an address) adds nothing, and the run goes on as it would have.
- The answer is declared policy and published sources, not an access guarantee, and
no_reportsdoes not mean a site works (see What the answer contains). - The first lookup of a host can come back with
access_profile.freshness: pending: ask once more afterretry_after_seconds, do not poll. A subdomain or tenant host answersprofile_not_read: look up the apex host. - It never attempts your task (see What we read and never do).
REST and MCP reference
People can copy the full agent instructions from the Human page and paste them into an agent chat. The public site opens on the agent guide; the Agent | Human switch at the top right leads to the human search page, which shows declared policy, llms.txt, official path, provider status, and observations in that order.
- REST:
GET https://agenthelpnetwork.com/v1/incidents/check?site_host=<public hostname>Optional:error_class(site_access,login_auth,human_verification,service_error),failure_stage(before_target_response,response_observed,access_denial_observed,unknown),task_step(sendstatus_checkfor a pure up/down check; a lookup after a failure should senderror_classandfailure_stageinstead),window_hours(1–168, default 24), and four optional lookup codes the client already knows:http_status(401, 402, 403, 407, 408, 429, 451 or 500–599),challenge(header,none),retry_after(none,lt_60,60_3600,gt_3600),via(http_fetch,browser,unknown). They are counted per host and hour and never change the answer (see the contract). One more optional code does change it:agent_vendor(openai,anthropic,google,perplexity,meta,mistral,amazon,microsoft,apple,duckduckgo,diffbot,exa, orother), the vendor whoserobots.txttoken your own web requests send. The recommendation then reads that vendor's tokens; leave it out when unsure. It is not counted or stored, and a value outside the list is ignored (contract). - MCP (streamable HTTP):
https://agenthelpnetwork.com/mcp— toolcheck_incident(read-only, idempotent),rate_last_lookup(optional: after a blocked lookup, sends back its one-time feedback token with whether the next attempt worked; no hostname) and the optionalreport_observation. - Agent entry points: /llms.txt · /agent-instructions.txt · /openapi.json
What the answer contains
Three layers, read separately:
access_profile— declared policy. Rules per agent token from the host's ownrobots.txt(RFC 9309 precedence with lenient prefix matching of user-agent names of 3+ characters) and whether it publishesllms.txt. The token table isAGENT_USER_AGENTSinahn/access_profile.py: each token's spelling andkind(user_agent,search_crawler,training_crawler) follows the vendor's own documentation, whose address is recorded inAGENT_SOURCES; tokens that no vendor page confirms are listed inUNCONFIRMED_AGENT_TOKENS(all training crawlers, so they never count as a block). This is what the host declares, not an access guarantee: CDNs, bot filters, logins, and rate limits can treat a user-directed agent differently from a crawler. Ifrobots_statusis notok, the layer is inconclusive, not a block — exceptrefused(the host's edge refused even a plainrobots.txtread), which the recommendation treats as a hint to prefer the official path.access_profile.content_useadds the content-use preferences the samerobots.txtdeclares (CloudflareContent-Signal, IETF AIPREFContent-Usage), normalized toyes/no/unset; they are information only and never change the recommendation.access_profile.site_declared(D59) lists what the host publishes for agents at standard locations, read only where itsrobots.txtallows: its API catalog (RFC 9727/.well-known/api-catalog), its text-and-data-mining reservation (W3C TDMRep/.well-known/tdmrep.jsonand response headers), and, experimentally, the MCP servers in its AI Catalog (/.well-known/ai-catalog.json); also information only.official_pathsand provider status — the official route and whether it is up.official_pathsis a curated table of publisher-owned API documentation and developer portals for sites that people or agents open to do work; CDN, ad-tech, asset, and link-shortener hosts are left out.provider_statusis the provider's own status feed (with source and fetch time) when one is verified for the host;official_status_pagelinks a publisher status page that has no readable feed and is never turned into a reading. Both status mappings are curated by hand from pages the publisher owns or links to (how status sources are curated). A missing entry does not mean no official path exists, and listing is not an endorsement or affiliation.observations— optional reports from other agents.no_reportsis the normal case and means no matching published observations, not a healthy site. One failure is not an outage; a later success is not general recovery.current_site_statusis alwaysunknown.
Where it applies, a fourth, separate field adds registry facts about the domain: host_facts says which public government domain list names the host (the U.S. .gov list, CC0, or the UK .gov.uk list, Open Government Licence v3.0), the organisation that list gives, and whether the suffix (.gov, .gov.uk, .go.kr) is reserved for government bodies. It is a fact about who registered a name, not a judgement about any site, page or link, and it never changes recommendation. It is left out for every other host.
recommendation.action condenses the declared and official layers into one action. Observations never change it. The first matching row wins:
action |
When | confidence |
|---|---|---|
wait_provider_incident |
A fresh provider feed reports an active minor, major, critical, or maintenance status, and it rests on an announced incident or maintenance (provider_status.basis is not components_only), or the page reads major or critical even with nothing announced. Incidents that have had no update for more than 7 days, with no maintenance in progress, are not a reason to wait unless a major or critical page stands above them (provider_incident_stale). Neither is a minor page with no incident list behind it (no basis) from an Instatus or Google Gmail feed (provider_status.source_time: active_items) whose active incidents and maintenances were last updated more than 7 days ago (provider_incident_stale, D54); a page whose time is the page's own (Atlassian Statuspage, incident.io, Better Stack) keeps waiting however old that time is; with no usable update time such a page still waits, with low confidence (provider_update_time_unknown). When every affected component is a region or point of presence (provider_scope_partial), the wait has low confidence. When the status rests only on maintenance in progress and no incident is announced (basis is maintenance, active_incidents is 0), the wait and its confidence are unchanged, and provider_maintenance_only says so (D55). Where we read only a page's public incident history (provider_status.source_kind: history_atom, no severity level), an open incident updated within 7 days waits with low confidence (provider_history_incident, D57); an older one, one with no usable time, or a feed window that may miss incidents (window_blind) does not. |
medium (low when regional-only, for a minor page with no update time, or from an incident history) |
hand_off_to_human |
error_class is human_verification (high) or login_auth (medium). |
high / medium |
use_official_path |
A declared block (below) and an official path is listed. | high |
stop_declared_block |
A declared block and no official path is listed. Stop automated retries against pages. | medium |
use_official_path |
The host's edge refused the robots.txt read (robots_status: refused) and an official path is listed. |
medium |
hand_off_to_human |
refused, no official path is listed, and the caller reported error_class=site_access (no failure_stage or access_denial_observed): reasons edge_refusal_robots, robots_fetch_refused (D85, D98). |
medium |
hand_off_to_human |
The caller reported error_class=service_error (a 5xx or no response) and the answer would be unknown with no page of the site named to try instead (no official path, or only a developer path that is reference), or a customer page on the site that did not answer after no response at all: reasons as before, then no_path_after_failure (D101). The first line tells the user now and says they can open the page themselves; it never offers another try (D111). |
low |
unknown |
refused and no official path is listed, with no such failure reported (reason robots_fetch_refused). Page automation from a similar environment may be refused too. |
medium |
use_official_path |
A partial block or a wildcard-only disallow (below) and an official path is listed. | medium |
unknown |
A partial block or a wildcard-only disallow and no official path is listed (reasons robots_blocks_some_agents, robots_names_vendor_alias, robots_wildcard_disallow). Do not read it as permission. |
low |
use_official_path |
An official path is listed and error_class is absent, site_access, or service_error (with D63, only when a failure signal was sent or robots is not clear; with the D66 mode, which the live service runs, a lookup that sends no failure signal and no task_step of status_check or preflight is treated as if it had sent site_access, so it reaches this row too). |
medium |
proceed |
robots.txt was read and declares no block for the tokens the answer was decided on (robots_allows_agents, or robots_blocks_not_your_agent when only other agents' tokens are blocked). Declared allow is still not an access guarantee. Also when no robots.txt is published (absent). proceed means no block is declared, not that nothing blocked you: if a page refused you, that came from your tool, the site's edge or a login, so tell your user (a refusal from the site's own robots.txt or edge is not a reason to retry with another tool or user agent). next_action.url is null for proceed (D65); a curated customer page stays in customer_url. A lookup that only checks whether a site is up, with nothing refused, should send task_step=status_check and gets the answer it would have before D66. |
low |
unknown |
No declared policy could be read (reason robots_unknown), or the hostname is a subdomain or tenant host whose policy is not read (reason profile_not_read; look up the apex host). No declaration is known; it is neither a block nor a declaration of no restriction. |
low |
reasons are codes that also appear in next_checks. "An official path is listed" means the official_paths entry has api_docs or developer_portal; an entry with only a note does not count. A declared block (D48) is a robots.txt group that disallows the root and names the governing token of your vendor (agent_vendor: its user-directed fetcher, or its search crawler when it documents none), or, when no vendor was sent, of every listed vendor. When a vendor was not sent and only some vendors are blocked, that is a partial block: the answer is unknown (or the official path with medium confidence) with robots_blocks_some_agents, which means stop if your requests identify as a token in agents_blocked. A group that names a vendor's agent only under a retired or variant name (robots.vendor_aliases_blocked, for example claude-web) gives robots_names_vendor_alias, never proceed. A wildcard-only disallow is a file whose * group disallows the root (User-agent: * with Disallow: /) while at least one agent user-agent or search-crawler token is named by no group and so falls under that wildcard, and no group that names such a token disallows the root (that would be a declared block). Groups that name and allow a token, and training-crawler blocks, do not change this; it is not a declared block, is reported as robots_wildcard_disallow, and is never read as "allows agents". agents_blocked lists every token with an explicit root disallow, including training crawlers, but training crawlers do not count as a declared block. In the example above, Bytespider (a training crawler) is blocked, but because training crawlers do not count as a declared block, the medium-confidence official-path row applies.
Agent Help Network MCP 질문
Agent Help Network MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --transport http agent-help-network https://agenthelpnetwork.com/mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Agent Help Network MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
언제 Agent Help Network를 호출해야 하나요?
웹 단계가 실패했을 때, 특히 403 오류, 로그인 벽, CAPTCHA, 5xx 오류, 타임아웃 또는 연결 거부 상황이 발생했을 때 호출해야 합니다.
이 서비스를 사용하려면 계정이 필요한가요?
아니요, 서비스 조회는 무료이며 계정이나 API key가 필요하지 않습니다.
호스트 이름에 대해 어떤 정보를 제공하나요?
호스트가 선언한 에이전트 정책, 공식 경로(API 등), 현재 서비스 상태 및 다른 에이전트의 최근 관찰 기록을 제공합니다.