getAnalysis
ChatGPT패턴 분석 — 피처별 강함/약함(σ) + 절대 스코어 + 웹 상대평가 패턴 강약의 근거. report는 본인 평균 대비 σ이며, dp_feature_scores와 features.scores는 절대 스코어다. features는 세부 좌우축을 기본 제공하고 missing은 0이 아니라 미측정이다. relative_evaluation은 σ와 다른 통계이며 웹 Analysis 상대평가와 같은 값으로, DP 전체 유저 기준 percentile=rank/total*100(상위 N%), display_value=100-percentile, delta_rank=mean_rank-rank를 제공한다. ±15등 스케일에서 경계는 평균선이고 범위 밖은 clip한다. bar_height_percent는 실력%나 백분위가 아니다. 상세 해석은 Knowledge를 따른다.
getGlossary
ChatGPT용어·수치 정의 사전 (피처·별값·段位·태그) 피처 이름(NOTES/TRILL 등)·별값(star/r_star/zasa)·★↔段位·성향 태그의 정의. 세션 시작 때 1회 조회.
getGradeTargets
ChatGPTE모드 등급 목표 폴더 — 곧 딸 수 있는 등급(A/AA/AAA/MAX−) 점수(r★) 기준. 웹 PlayData의 AC/INF 수록·LEG 비트·AC series 98 제외·INF 변종 제외를 적용한다. 성적은 song_id로 매칭한다. 웹 무작위 선정과 달리 가까운 순 상위 limit개다.
getKnowledge
ChatGPT코칭 규칙이 가리키는 Knowledge 문서 전문을 읽는다(공통 필드·용어·단위인정·게이지·NPS). 해석이 애매할 때 해당 topic 을 읽는다.
getPersona
ChatGPT성향 리포트 — 한 줄 요약·서사·태그 "어떤 플레이어 / 스타일 / 성향" 질문에 사용.
getPlays
ChatGPT오소리 INF 기록기가 올린 최근 최대 100판의 22열 원본 플레이 기록(source 포함)을 원본 순서로 반환한다. source 두 값과 옵션 해석은 Knowledge §11.3 및 MCP getKnowledge(topic="knowledge")를 참고한다. 전체 이력이 아니다. 22열: timestamp=결과 화면 전환 저장 시각(UTC ISO); song_id=PlayData word 0 곡 ID; title=곡 목록 조회 곡명(UTF-16LE, 따옴표 이스케이프); difficulty=PlayData word 1 난이도; notes=차트 노트 수(배틀은 양쪽 합); ex_score=2×PGREAT+GREAT(배틀 합산 그대로); pgreat=PGREAT 총합(P1+P2); great=GREAT 총합(P1+P2); miss_count=PlayData word 3 미스 수; clear_lamp=램프 번호(1 FAILED, 3 E-CLEAR 확인; 배틀 -1 미기록); dj_rate_pct=EX/(notes×2)×100, 둘째 자리; dj_rank=레이트 등급; judge_16=0 P1 PGREAT, 1 P1 GREAT, 2 P1 GOOD, 3 P1 BAD, 4 P1 POOR, 5 P2 PGREAT, 6 P2 GREAT, 7 P2 GOOD, 8 P2 BAD, 9 P2 POOR, 10 P1 콤보 브레이크, 11 P2 콤보 브레이크, 12 P1 FAST, 13 P2 FAST, 14 P1 SLOW, 15 P2 SLOW; settings_p1_11=playSettings 원본 11 int32(P1 블록); settings_p2_11=+0x48 P2의 같은 11 int32; battle_flag=+0x28 배틀 ON 1/OFF 0; gauge_p1_w77=judgeData 77 P1 게이지 원본(의미·단위 미확정); gauge_p2_w78=judgeData 78 P2 게이지 원본(의미·단위 미확정); source=playdata 일반 플레이 또는 currentsong 배틀/속도 조절 판 복원 경로; app_version=기록 앱 버전; game_version=기록 게임 버전; play_speed=곡 재생 속도 배율 문자열. 기존 19/21열 업로드에서는 새 필드가 없을 수 있다. 배속 표기 응답 규칙: 속도 조절 판을 언급할 때 해당 문장이나 표의 해당 행에 배속을 함께 밝힌다(예: 0.70배속). 빈 값·누락은 속도 미상으로 표시하며 등속으로 추정하지 않는다. 속도 조절 판은 게임이 베스트에 저장하지 않으므로 베스트 갱신·점수 갱신이나 실력 근거로 사용하지 않는다. timestamp와 두 버전 열을 제외한 song_id~source 18칸이 모두 같은 음수 정수 문자열이면 오류 행이다. 오류 행은 진단용이므로 판 수·점수 해석에서 제외한다. clear_lamp=-1만으로는 오류 행이 아니다. 상세 정의·옵션 해석은 Knowledge §11.3 및 MCP getKnowledge(topic="knowledge")를 참고한다.
getProfile
ChatGPT프로필 — 별값·r★·段位·노트레이더·차트 수
getRecent
ChatGPT최근 또는 지정 날짜의 잔존 갱신 기록 hist의 그날 성적·직전값·EX/BP 차이를 최신순으로 반환한다. r_star_sample은 최신순 r★ 보유 성과 표본이며 기본 20건이다. 전체 플레이 이력이 아니며 날짜 누락은 미플레이를 뜻하지 않는다. history=absent/error면 성적과 표본은 null/빈 목록이다. 날짜는 recent-dates로 조회한다.
getRecentDates
ChatGPT날짜별 잔존 갱신 건수·곡 수 최신순 날짜 목록을 조회한 뒤 recent?date=로 상세 기록을 받는다. 날짜 목록에 없는 날을 안 친 날로 해석하지 않는다. hist 부재·오류면 dpRecent의 날짜만 제공하고 건수는 null이다.
getScores
ChatGPT점수 목록 — 곡 제목·zasa·EX비율 조인
getShelf
ChatGPT서열표 요약 — 게임레벨별 클리어 분포 + EC/HC/EXH 실력선 by_level은 웹 Stats와 같은 rating zasa 보유 DP11/12 및 exact Grid zasa 값별 그룹의 분모를 사용한다. AC/INF 수록 곡만 포함하고 LEG는 legen 비트를 쓴다. ALL 통계가 아니다. 기존 skill_line과 by_level을 보존하며 bands는 band 선택 또는 inclusive zasaMin/zasaMax로 고른다. rows는 안정 정렬 뒤 limit/offset 페이지이며 achievement의 unknown은 기준별 미확인 수, denominator=0이면 rate=null이다. grade와 bp는 결손 시 null이며 bp=0은 실제 0이다. 코치 추천은 randomize=false로 기존 정렬과 게이트만 적용하고 웹 v3·v1 리롤/seen/cycle과 별도다.
getSong
ChatGPT곡 난이도·패턴 설명 (IIDX ID 불필요) 특정 DP 곡의 오소리 체감 난이도(zasa)·EC/HC/EXH 필요 실력·패턴 피처 백분위·별값·수록 버전(series)·아케이드/INFINITAS 수록 여부(in_ac/in_inf). "XXX 곡 어때 / XXX[A] 난이도 / 이 곡 무슨 패턴 / 몇 작품 곡" 질문에 사용. 곡명이 모호하면 candidates 를 돌려준다.
getSongPatterns
ChatGPTGet every pattern run for one DP chart axis Returns every run for one of the 35 canonical DP axes. No run count, response size, or duration cap applies. Runs are ordered by start, end, hand (L/R/both), then original source order for complete ties. start/end are rounded to 2 decimals and nps to 1 decimal for output; calculations use original coordinates and notes/(end-start). Rounded coordinates may coincide; runs remain distinct and duration is never recomputed from rounded coordinates. The 35 axes use 44 valid axis/hand summary rows in getSong; empty groups are meaningful zero-run rows. Comparison is omitted entirely without iidxId. With ID, each run has comparison object or null and envelope comparisonStatus/comparisonStale. Stale comparisons remain available with status stale and comparisonStale=true. Unit is notes/s/hand except HSTAIR_SYNC, HSTAIR_SAMESHAPE and HSTAIR_DIFFSHAPE, which use notes/s/both-hands. Candidate and asset failures use status envelopes with HTTP 200 and no-store. Missing query, missing/invalid diff, missing/invalid axis, or invalid iidxId returns HTTP 400; not_found returns 404; no_such_diff returns 400. Ambiguous matches reuse the existing candidate response with HTTP 200 and no-store.
recommendSongs
ChatGPT추천곡 — kind=clear(클리어) / practice(약점 연습) / ladder(성장 로드맵) clear는 램프, practice는 패턴, ladder는 성장 구간 추천이다. ladder mode=lamp|score|nps는 solid·목표①·목표②를 반환하며 목표는 is_goal=true의 goal_stage로만 설명한다. nps는 도달 NPS 격자 기준이라 lamp와 다른 곡이 나오는 것이 정상이고, 빈 rows와 fallback_reason은 오류가 아니니 곡을 지어내지 마라. explain=full은 엔진 근거, layout=on은 배치 결과를 추가한다. 상세 계약은 Knowledge를 따른다.