AOO Lens
에이전트 눈으로 지금 이 페이지를 봅니다
새 진단은 낯선 봇이 밖에서 사이트 전체를 돌며 점수를 냅니다. Lens는 지금 열어 둔 페이지 한 장을, 당신 브라우저 안에서, 자바스크립트가 다 실행된 뒤에 봅니다. 그래서 서버 진단이 원리상 볼 수 없는 것을 Lens만 볼 수 있습니다 — 페이지가 실행 중에 등록한 WebMCP 도구.
설치
아래 버튼을 북마크 바로 끌어다 놓으세요. 클릭하면 대신 복사됩니다.
도구 목록·스키마·품질 점수는 어느 브라우저에서나 보입니다. 도구를 직접 실행하려면 Chrome 149 이상에서 chrome://flags/#enable-webmcp-testing 을 켜야 합니다.
- 크기
- 37 KB
- 외부 요청
- 없음 · 전부 북마크 안에
- 데이터 전송
- 없음 · 브라우저 안에서만
보고 있는 페이지에서 바로, 양쪽을 한 번에
AOO Lens는 북마크 하나입니다. 지금 열어 둔 페이지에서 누르면 오른쪽에 패널이 열리고, 그 사이트가 에이전트에게 무엇을 내주고 있는지를 두 갈래로 보여 줍니다 — 페이지가 등록한 WebMCP 도구, 그리고 서버가 내주는 에이전트용 파일들.
둘을 한 화면에 둔 이유는 간단합니다. 하나만 보면 결론이 틀립니다. llms.txt도 sitemap도 완벽한 사이트가 도구를 하나도 등록하지 않았다면 에이전트는 읽기만 하고 아무 일도 못 합니다. 반대로 도구를 스무 개 등록해 놓고 첫 HTML이 빈 껍데기면, 에이전트는 그 도구가 있다는 사실조차 알기 전에 떠납니다.
왜 서버 진단만으로는 안 되는가
WebMCP 도구는 페이지의 자바스크립트가 실행되면서 navigator.modelContext에 등록됩니다. 서버에 요청을 보내 HTML을 받아 보는 방식으로는 원리상 보이지 않습니다. 브라우저 안에서, 그 페이지의 문맥에서 읽는 수밖에 없습니다 — 그래서 북마클릿입니다.
확장 프로그램이 아니라 북마크입니다. 심사도 권한 요청도 없고, 코드는 전부 북마크 안에 들어 있습니다. 외부 스크립트를 불러오지 않으므로 보안 정책(CSP)이 엄격한 사이트에서도 동작합니다.
밖에서 사이트를, 안에서 페이지를
둘은 같은 일을 다르게 하는 것이 아닙니다. 보는 사람이 다르고, 보는 시점이 다르고, 끝나고 남는 것이 다릅니다.
| 새 진단 · 그룹 진단 | AOO Lens | |
|---|---|---|
| 누가 보나 | 한국 서버의 익명 에이전트. 로그인하지 않은 낯선 방문자입니다 | 당신의 브라우저. 지금 그 세션, 그 지역 그대로 |
| 언제 보나 | 기본 하네스에서는 자바스크립트 실행 전의 첫 HTML | 자바스크립트가 전부 실행된 뒤의 페이지 |
| 보는 범위 | 사이트 전체 — 업종에 맞는 10개 과제 | 지금 열어 둔 페이지 한 장 |
| 드는 것 | 약 4분, 모델 호출 비용 | 즉시, 무료, 모델 호출 없음 |
| 남는 것 | 342개 사이트와 비교되는 점수. 보드에 오릅니다 | 화면에 뜨는 판독뿐. 점수도 기록도 남지 않습니다 |
| WebMCP 도구 | 옵트인 프로브를 켜야 보입니다 | 기본으로 보이고, 그 자리에서 실행까지 됩니다 |
WebMCP 도구는 페이지의 자바스크립트가 navigator.modelContext에 등록합니다. 서버에 HTML을 요청해서는 원리상 보이지 않습니다 — Lens가 확장 프로그램도 서비스도 아닌 북마클릿인 이유가 이것 하나입니다. 반대로 에이전트가 실제로 과제를 끝내는지, 답의 근거가 그 사이트에서 나왔는지는 Lens가 알 수 없습니다. 그건 진짜 에이전트를 투입해야 나오고, 새 진단이 하는 일입니다.
표면 탭이 보는 llms.txt·sitemap·robots는 새 진단의 발견 항목과 같은 것을 봅니다. 다른 점은 결과가 지금 이 페이지에서 즉시 나온다는 것뿐입니다.
사이트가 자기 사용법을 직접 알려 주는 방식
지금까지 에이전트는 사람처럼 화면을 읽고 버튼 위치를 찍어 눌렀습니다. WebMCP는 그 반대입니다 — 사이트가 "우리 사이트에서는 이런 일을 이렇게 시키면 됩니다"를 기계가 읽는 형식으로 선언합니다.
페이지가 navigator.modelContext.registerTool()로 도구를 등록하면, 브라우저 안의 에이전트가 그 목록을 읽고 이름과 설명을 보고 필요한 것을 골라 호출합니다. DOM을 긁지 않고, 좌표를 찍지 않습니다. W3C webmachinelearning/webmcp 제안으로 표준화가 진행 중이고, Chrome 149부터 오리진 트라이얼로 쓸 수 있습니다.
도구 하나의 모양
| 필드 | 무엇인가 | 없으면 |
|---|---|---|
| name | 고유 식별자. snake_case 40자 이내가 관행입니다. | 등록이 거부됩니다 |
| description | 자연어 설명. 모델이 이 도구를 고를지 말지의 근거 전부입니다. | 모델이 이름만 보고 추측합니다 |
| inputSchema | JSON Schema. 어떤 인자를 어떤 형식으로 받는지. | 인자를 잘못 채웁니다 |
| execute | 실제로 일을 하는 콜백. (input, client)를 받습니다. | 등록이 거부됩니다 |
| annotations.readOnlyHint | 부작용이 없는 도구인지. true면 안전한 조회. | 에이전트가 안전과 위험을 구분하지 못합니다 |
client.requestUserInteraction()으로 실행 도중 사용자 확인을 받을 수 있습니다 — 결제·예약 같은 도구가 반드시 써야 하는 장치입니다.
세 가지 위험 등급
- 조회(Answer) — 검색·상세·재고 확인처럼 부작용이 없는 것. readOnlyHint: true.
- 조작(Action) — 장바구니·폼 입력·이동처럼 페이지를 움직이지만 되돌릴 수 있는 것.
- 민감(Sensitive) — 결제·예약·구독처럼 돈이나 약속이 걸린 것. 사용자 확인 없이 실행되면 안 됩니다.
명세에 등급 필드가 따로 있는 것이 아니라, readOnlyHint와 도구의 이름·설명으로 읽어 냅니다. Lens도 같은 방식으로 분류하고, 분류 근거를 패널에 함께 보여 줍니다.
패널이 보여 주는 것
WebMCP 탭
- navigator.modelContext가 이 페이지에 있는지 — 없으면 왜 없는지(브라우저 미지원 / 사이트 미등록)까지.
- 등록된 도구 전체 목록. 이름·설명·입력 스키마를 그대로 펼쳐 봅니다.
- 도구마다 조회 / 조작 / 민감 등급.
- 도구 세트 품질 점수 0–100과 구체적 지적 — 설명이 짧은 도구, 설명 없는 파라미터, readOnlyHint 없는 민감 도구, 설명 길이 합계 초과 등.
- 도구 직접 실행. 스키마에서 인자를 미리 채워 주고, 결과를 그대로 보여 줍니다.
표면 탭
- llms.txt · llms-full.txt · sitemap.xml · robots.txt · openapi.json · /.well-known/mcp.json · /.well-known/ai-plugin.json 존재 여부와 크기.
- 첫 HTML에 본문이 들어 있는지 — 원본 응답의 링크·글자 수를 화면에 그려진 것과 비교합니다. 차이가 크면 빈 껍데기입니다.
- robots.txt가 GPTBot·ClaudeBot 같은 에이전트를 막고 있는지.
- schema.org JSON-LD 신원 정보의 타입.
- 첫 응답까지 걸린 시간.
표면 탭의 항목은 새 진단이 서버에서 재는 것과 같은 항목입니다. 다만 두 탭은 같은 눈으로 보지 않습니다. WebMCP 탭은 살아 있는 페이지를 읽으므로 로그인한 당신의 세션 그대로를 봅니다. 표면 탭은 쿠키를 일부러 빼고 요청하므로, 로그인해야 보이는 파일은 없는 것으로 나옵니다 — 낯선 에이전트가 받는 것과 같은 값을 재기 위해서입니다.
품질 점수는 도구가 잘 만들어졌는지만 봅니다
이 점수는 사이트 점수가 아닙니다. 등록된 도구 세트가 모델이 쓰기에 적절한 모양인지만 100점에서 깎아 내려갑니다. 도구가 하나도 없으면 0점입니다.
| 지적 | 감점 | 왜 |
|---|---|---|
| readOnlyHint를 쓴 도구가 하나도 없음 | -12 | 에이전트가 안전한 도구와 위험한 도구를 구분할 수단이 없습니다 |
| 설명이 없거나 25자 미만 | 개당 -6 (최대 -20) | 설명이 곧 도구를 고르는 근거입니다 |
| 민감한 도구에 readOnlyHint: false가 없음 | 개당 -7 (최대 -14) | 돈이 걸린 도구가 조회로 오인될 수 있습니다 |
| 설명 없는 파라미터 | 개당 -2 (최대 -15) | 이름만으로는 무엇을 넣을지 모델이 추측합니다 |
| 입력 스키마 없음 | 개당 -4 (최대 -12) | 인자를 받는 도구라면 형식을 선언해야 합니다 |
| 이름이 snake_case 40자를 벗어남 | 개당 -3 (최대 -9) | 관행에서 벗어난 이름은 도구 목록에서 읽기 어렵습니다 |
| 설명 길이 합계 8,000자 초과 | -8 | 전부 매 요청의 문맥에 실려 모델의 선택을 흐립니다 |
| 도구 40개 초과 | -5 | 선택 정확도가 떨어진다는 보고가 많습니다 |
이 도구가 못 하는 것
- 도구 실행에는 Chrome 149 이상과 chrome://flags/#enable-webmcp-testing 플래그가 필요합니다. 플래그 없이도 도구 목록·스키마·품질 점수는 그대로 보입니다.
- 한 페이지만 봅니다. 사이트가 경로마다 다른 도구를 등록한다면 그 경로에서 각각 눌러야 합니다.
- 품질 점수는 도구의 모양만 봅니다. 도구가 실제로 올바른 답을 주는지는 실행해 봐야 알 수 있고, 그건 AOO 전체 진단이 하는 일입니다.
- iframe 안의 페이지는 WebMCP 제공자가 될 수 없습니다(명세상 최상위 문서만 가능). Lens도 최상위에서만 동작합니다.
- 표면 검사는 같은 출처 요청이라 로그인 쿠키의 영향을 받지 않도록 credentials를 빼고 보냅니다. 로그인해야 보이는 파일은 없는 것으로 나옵니다.