API

키 없이 쓰는 진단 API

도메인을 진단하고, 목표별 결과를 읽고, 에이전트가 실제로 밟은 궤적을 스텝 단위로 가져올 수 있습니다. 모든 엔드포인트는 키가 필요 없습니다.

v2.0.0 · Base URL https://daas-aoo.listeningmind.ai · OpenAPI · agents.md

무엇을 측정하는가

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

라벨은 관측된 근거로부터 서버가 결정론적으로 부여합니다. 모델이 자기 스텝을 스스로 라벨링하지 않으므로 같은 궤적은 언제나 같은 점수를 냅니다. 정적 크롤링에서 추론한 값은 하나도 없습니다.

점수 구성

발견
20
접근
30
탐색
30
완수
20
goal idcategorykind무엇을 보는가
enteraccessprobeWalks the homepage redirect chain with a non-browser client. Scores 0 on an infinite or cyclic redirect, which makes every other measurement moot.
welcomeaccessprobeChecks 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.
guidancediscoveryprobePresence 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.
readablenavigationprobeCounts followable anchors in the homepage HTML as delivered. A client-rendered shell with no anchors scores 0 — most agents never execute the bundle.
intent:pricingcompletiontraceRuns 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:signupcompletiontraceRuns 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-docsnavigationtraceRuns 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-startednavigationtraceRuns 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:supportcompletiontraceRuns 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:shippingcompletiontraceRuns 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:contactcompletiontraceRuns 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:feescompletiontraceRuns 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:eligibilitycompletiontraceRuns 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:bookingcompletiontraceRuns 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:locationscompletiontraceRuns 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:stockcompletiontraceRuns 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:careerscompletiontraceRuns 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:policycompletiontraceRuns 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:comparecompletiontraceRuns 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:latestcompletiontraceRuns 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:docscompletiontraceRuns 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:civilcompletiontraceRuns 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:processingcompletiontraceRuns 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:productscompletiontraceRuns 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:nutritioncompletiontraceRuns 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:retailerscompletiontraceRuns 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의 이전 이름에서 온 것으로, 이름을 바꾸지 않고 그대로 씁니다.

엔드포인트

GET/api/v1/score/{domain}
저장된 최신 점수 조회

읽기 전용이며 스캔을 유발하지 않습니다. 읽기 요청이 조용히 에이전트 실행 비용을 쓰면 안 되기 때문입니다. 점수가 없으면 404와 함께 next_action이 옵니다.

curl "https://daas-aoo.listeningmind.ai/api/v1/score/stripe.com?include=trend"
POST/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"}'
GET/api/v1/scan/stream
진단 실행 + SSE 스트리밍

phase · 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"
GET/api/v1/audits/{audit_id}
전체 리포트

카테고리, 근거가 붙은 목표별 점수, 사이트 점검 결과, 발견된 문제, 종합 처방, 그리고 작업별 결과가 각각 실제 실행 기록으로 연결됩니다.

curl "https://daas-aoo.listeningmind.ai/api/v1/audits/AUDIT_ID"
POST/api/v1/traces
단일 작업 실행

intent_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"}'
GET/api/v1/traces/{run_id}
실행 궤적 원본

에이전트가 밟은 모든 스텝과, 각 URL을 어떻게 알아냈는지의 attribution이 붙어 있습니다. 점수가 얹혀 있는 원본 근거입니다.

curl "https://daas-aoo.listeningmind.ai/api/v1/traces/RUN_ID"
GET/api/v1/goals
점수의 근거가 되는 목표 카탈로그

목표 id는 메이저 버전 내에서 안정적입니다. CI는 카테고리 합계가 아니라 명시적 목표 id나 점수 임계값으로 게이트하세요.

curl "https://daas-aoo.listeningmind.ai/api/v1/goals"
GET/api/v1/history
분석한 도메인과 점수 추이

도메인을 지정하면 해당 도메인의 점수 추이를 반환합니다.

curl "https://daas-aoo.listeningmind.ai/api/v1/history?domain=your-site.com"
GET/api/v1/badge/{domain}
SVG 점수 배지

README에 삽입할 수 있는 자족적 SVG입니다.

![agent operability](https://daas-aoo.listeningmind.ai/api/v1/badge/your-site.com)

버전 정책

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

v2.0.0