API
키 없이 쓰는 진단 API
도메인을 진단하고, 목표별 결과를 읽고, 에이전트가 실제로 밟은 궤적을 스텝 단위로 가져올 수 있습니다. 모든 엔드포인트는 키가 필요 없습니다.
무엇을 측정하는가
AOO는 실제 LLM 에이전트를 사이트에 투입해 구체적인 작업을 시키고 매 툴 호출을 계측합니다. 요청한 URL, HTTP 상태, 그리고 가장 중요한 것 — 에이전트가 그 URL을 어떻게 알아냈는가입니다.
link · sitemap · llms_txt · robots_txt ← the site guided the agent earlier_response · web_search · model_recall · other ← it did not
라벨은 관측된 근거로부터 서버가 결정론적으로 부여합니다. 모델이 자기 스텝을 스스로 라벨링하지 않으므로 같은 궤적은 언제나 같은 점수를 냅니다. 정적 크롤링에서 추론한 값은 하나도 없습니다.
점수 구성
| goal id | category | kind | 무엇을 보는가 |
|---|---|---|---|
| enter | access | probe | Walks the homepage redirect chain with a non-browser client. Scores 0 on an infinite or cyclic redirect, which makes every other measurement moot. |
| welcome | access | probe | Checks for WAF/bot rejection (403/429) on the homepage and for robots.txt Disallow coverage. Bot blocking scores 0 — a blocked agent cannot read anything. |
| guidance | discovery | probe | Presence of /llms.txt (or /llms-full.txt), /sitemap.xml and /robots.txt, weighted 55/30/15. HTML shells served at those paths do not count as present. |
| readable | navigation | probe | Counts followable anchors in the homepage HTML as delivered. A client-rendered shell with no anchors scores 0 — most agents never execute the bundle. |
| intent:pricing | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:signup | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:api-docs | navigation | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:get-started | navigation | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:support | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:shipping | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:contact | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:fees | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:eligibility | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:booking | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:locations | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:stock | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:careers | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:policy | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:compare | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:latest | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:docs | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:civil | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:processing | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:products | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:nutrition | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
| intent:retailers | completion | trace | Runs a real agent on this task and scores how much of the outcome the site itself earned: verdict, whether the final answer cited the site, site-guided navigation share, and 2xx rate. |
사용 가능한 인텐트: pricing, signup, api-docs, get-started, support, shipping, contact, fees, eligibility, booking, locations, stock, careers, policy, compare, latest, docs, civil, processing, products, nutrition, retailers
빠른 시작
# 1. 이미 점수가 있는지 확인
curl "https://daas-aoo.listeningmind.ai/api/v1/score/your-site.com"
# 2. 없으면 진단 실행 (202 + 폴링 URL)
curl -X POST "https://daas-aoo.listeningmind.ai/api/v1/scan" \
-H "Content-Type: application/json" \
-d '{"url": "your-site.com"}'
# 3. 완료될 때까지 폴링
curl "https://daas-aoo.listeningmind.ai/api/v1/audits/AUDIT_ID"
# 4. 고친 뒤 다시 측정
curl -X POST "https://daas-aoo.listeningmind.ai/api/v1/scan" \
-H "Content-Type: application/json" \
-d '{"url": "your-site.com", "force": true}'인증과 제한
인증이 없습니다. 모든 엔드포인트가 키 없이 열려 있고 IP 단위로 제한됩니다. 진단은 실제 에이전트를 수 분간 돌리므로 일일 쿼터가 있으며, 제한에 걸리면 429와 Retry-After 헤더가 옵니다. 신선도 창 안에서 캐시로 응답한 요청은 쿼터를 쓰지 않습니다.
두 가지 하네스
fetch-agent는 원문 HTML을 읽습니다 — 실제 AI 어시스턴트가 보는 것입니다. playwright-agent는 렌더링 후를 읽습니다 — 사람이 보는 것입니다. 두 점수의 차이가 클라이언트 렌더링 사이트가 치르는 렌더링 격차입니다. 렌더링 하네스가 없는 인스턴스에서는 조용히 강등하지 않고 요청을 거부합니다.
측정하지 않는 것
읽기만 합니다. 폼 제출, 로그인, 계정 생성, 결제를 하지 않습니다. robots.txt를 준수하고 AOO-Bot으로 자신을 식별하며(이전 이름 AGO-Bot으로 적힌 robots.txt 규칙도 지킵니다) 호스트당 초당 1회를 넘지 않습니다. 결제 레일, 리더보드, 제3자 리뷰는 측정하지 않으며 해당 필드는 추측으로 채우지 않고 아예 없습니다.
User-agent: AOO-Bot Disallow: /
MCP 서버
MCP를 지원하는 에이전트에 붙이면 진단·점수 조회·궤적 열람을 도구로 쓸 수 있습니다. REST와 같은 함수를 호출하는 얇은 투영이라, 터미널의 점수와 리포트의 점수가 어긋날 일이 없습니다.
{
"mcpServers": {
"ago": {
"type": "streamable-http",
"url": "https://daas-aoo.listeningmind.ai/api/mcp"
}
}
}도구: get_score · scan_domain · get_audit · run_trace · get_trace · list_goals · get_leaderboard · list_scanned_domains · server-card.json
CLI
MCP 클라이언트가 없어도 터미널에서 같은 진단을 돌릴 수 있습니다. CLI는 아무것도 계산하지 않고 서버 응답만 출력합니다.
# 점수만 조회 — 즉시, 아무것도 실행하지 않음 npx @ago/cli score your-site.com # 종합 진단 npx @ago/cli audit your-site.com # CI 게이트 — 기준 미만이면 exit 1 npx @ago/cli audit your-site.com --min-score 70 # 단일 작업의 궤적을 스텝별로 npx @ago/cli trace your-site.com --intent api-docs export AGO_BASE_URL=https://daas-aoo.listeningmind.ai
CLI 패키지(@ago/cli)와 환경변수(AGO_BASE_URL)의 ago는 AOO의 이전 이름에서 온 것으로, 이름을 바꾸지 않고 그대로 씁니다.
엔드포인트
/api/v1/score/{domain}읽기 전용이며 스캔을 유발하지 않습니다. 읽기 요청이 조용히 에이전트 실행 비용을 쓰면 안 되기 때문입니다. 점수가 없으면 404와 함께 next_action이 옵니다.
curl "https://daas-aoo.listeningmind.ai/api/v1/score/stripe.com?include=trend"
/api/v1/scan인텐트 배터리를 순차 실행해 사이트를 점수화합니다. 202와 폴링 URL을 즉시 반환합니다 — 실제 에이전트가 수 분간 돌기 때문에 동기 응답은 없습니다. 신선도 창 안의 기존 결과가 있으면 그것을 반환하고 쿼터를 쓰지 않습니다.
curl -X POST "https://daas-aoo.listeningmind.ai/api/v1/scan" \
-H "Content-Type: application/json" \
-d '{"url": "your-site.com"}'/api/v1/scan/streamphase · probe · run_update · score · goals · findings · synthesis · result 이벤트를 흘려보냅니다. 15초마다 ping을 보내 유휴 프록시가 연결을 끊지 않게 합니다.
curl -N "https://daas-aoo.listeningmind.ai/api/v1/scan/stream?domain=your-site.com"
/api/v1/audits/{audit_id}카테고리, 근거가 붙은 목표별 점수, 사이트 점검 결과, 발견된 문제, 종합 처방, 그리고 작업별 결과가 각각 실제 실행 기록으로 연결됩니다.
curl "https://daas-aoo.listeningmind.ai/api/v1/audits/AUDIT_ID"
/api/v1/tracesintent_id를 주거나 자유 문장 task를 줍니다. 자유 문장은 그대로 사용합니다 — 프롬프트가 계측 장치의 일부라 AOO가 임의로 고쳐 쓰지 않습니다.
curl -X POST "https://daas-aoo.listeningmind.ai/api/v1/traces" \
-H "Content-Type: application/json" \
-d '{"url": "your-site.com", "intent_id": "get-started"}'/api/v1/traces/{run_id}에이전트가 밟은 모든 스텝과, 각 URL을 어떻게 알아냈는지의 attribution이 붙어 있습니다. 점수가 얹혀 있는 원본 근거입니다.
curl "https://daas-aoo.listeningmind.ai/api/v1/traces/RUN_ID"
/api/v1/goals목표 id는 메이저 버전 내에서 안정적입니다. CI는 카테고리 합계가 아니라 명시적 목표 id나 점수 임계값으로 게이트하세요.
curl "https://daas-aoo.listeningmind.ai/api/v1/goals"
/api/v1/history도메인을 지정하면 해당 도메인의 점수 추이를 반환합니다.
curl "https://daas-aoo.listeningmind.ai/api/v1/history?domain=your-site.com"
/api/v1/badge/{domain}README에 삽입할 수 있는 자족적 SVG입니다.

버전 정책
major는 안정 필드가 사라지거나 이름이 바뀌거나 의미가 달라질 때, minor는 필드 추가와 목표 카탈로그 변경, patch는 문서 수정입니다. 메이저 고정은 안전합니다. 안정 필드는 domain, score, score_max, grade, 카테고리 id와 배점, 목표 id, verdict, outcome, 4대 지표, generated_at 입니다.
v2.0.0