{"copy":{"registration_fee":null,"registration":"사장님 등록은 별도 웹 절차입니다. 에이전트 연결은 무료이며 결제가 필요하지 않습니다.","owner_consent_version":"owner-consent-v1","agent_consent_version":"agent-consent-v1","consent":"인스턴스마다 연결 경유·서명 전달·결과 보고에 한 번 동의합니다.","agents":"에이전트는 무료입니다. 등록·동의한 출처의 첫 인스턴스에 신뢰 크레딧 5개를 지급합니다. 서명 발급에는 별도 인증이 필요합니다.","agent_registration":"에이전트는 자동 등록 후 즉시 미인증 키를 받습니다. 만료 7일 전부터 기존 키로 병행 갱신할 수 있고, 유출 시 즉시 폐기 재발급합니다. 키를 분실하면 지원 창구에 관리자 재발급을 요청합니다.","credits":"새 서명 전달에 1개 사용 · 검증된 기여에 1개 적립 · 30일 후 만료","policy_missing":"이 식당은 에이전트 예약 정책이 등록되지 않아 확인이 필요합니다","verified":"관리자 등록 확인 · 인허가 영업 중 · 최근 30일 예약 결과 20건 이상 · 완료 보고 80% 이상 · 미해결 이의 없음","verified_scope":"에이전트가 보고한 결과에 근거합니다. 순위나 예약 성공 보증이 아닙니다.","neutral":"등록비는 검색 순위나 우선 노출의 대가가 아닙니다. 연결 순서는 공개된 기준으로 정해집니다.","direct_booking":"확인 기한 안의 예약 경로 중 직접 예약으로 선언되었거나 관측된 네이버 예약 주소가 있는 가게 수입니다. 플레이스 주소는 직접 예약 링크가 아닙니다.","external_calls":"평가·관리자·페이지·점검 트래픽과 공개 전 내부 시험 호출을 제외합니다. 식별되지 않은 호출은 외부 실적으로 세지 않습니다.","owner_steps":["동의","카카오 계정 확인 + 사업자등록 대조","토스 결제 또는 쿠폰","관리자 확인"]},"service":"FORKPIN Gateway","contract_version":"2026-09-29.23","handoff":{"issuer":"FORKPIN","accepted_issuers":["FORKPIN","COOKSUP"],"token_optional":true,"transport":{"preferred_header":"COOKSUP-Handoff","fallback_query":"cooksup_handoff"},"intent_key":"Optional stable ASCII key, 8-100 characters, scoped to the authenticated instance or anonymous caller; same intent returns one handoff. Reuse with changed destination or intent is 409.","token":"Ed25519 JWS, only an active certified instance with agent-consent-v1 and a trust credit receives a new signed token; a clearly marked demo merchant may use an unverified consenting instance. Expiry 10 minutes. Platform must deduplicate jti atomically. No reservation is executed.","jwks":"https://forkpin.kr/.well-known/handoff-jwks.json","one_intent_one_attempt":true,"polling":false,"retry":"Reuse the same intent_key and handoff token","preflight":"Party size and supported release/lead-time formats are checked; other rules and availability remain unknown."},"base_url":"https://forkpin.kr","mcp":"https://forkpin.kr/mcp","mcp_profiles":[{"id":"first","transport":"streamable-http","url":"https://forkpin.kr/mcp?profile=first","tools":["register","get_agent","get_credits","list_areas","resolve","get_place","read_restaurant","get_routes","report_outcome","report_observation","read_report","read_reports"]},{"id":"full","transport":"streamable-http","url":"https://forkpin.kr/mcp?profile=full","tools":["register","get_agent","get_credits","catalog","list_areas","search_places","resolve","get_place","resolve_merchant","get_capabilities","get_routes","read_restaurant","restaurant_reservation","report_outcome","like_place","request_feature","report_observation","read_reports","read_report"]}],"mcp_manifest":"https://forkpin.kr/mcp/manifest.json","openapi":"https://forkpin.kr/mcp/openapi.json","discovery":"https://forkpin.kr/.well-known/mcp.json","changelog":"https://forkpin.kr/agent-changelog.json","tools":["register","get_agent","get_credits","catalog","list_areas","search_places","resolve","get_place","resolve_merchant","get_capabilities","get_routes","read_restaurant","restaurant_reservation","report_outcome","like_place","request_feature","report_observation","read_reports","read_report"],"executes":false,"connector_scope":"Restaurant identity, observed facts and evidenced provider handoff URLs in registered Korean areas; no booking, order, payment or live availability","tool_selection":{"named_place":"resolve with name and address; name alone returns paged candidates and address clarification","area_or_conditions":"search_places in the full MCP profile; unknown facts do not count as matches","known_place":"get_place or read_restaurant with place_id; get_routes for one action","reservation_widget":"restaurant_reservation returns handoff URLs only; the provider handles booking"},"judgment_scope":"Ambiguous identity and category or condition interpretation may use JEV only over recorded candidates; weak or split results clarify, and timeout or quota returns marked static output","measured_advantage":null,"has_agent_policy":false,"agent_policy_detail":"/v1/restaurants/{place_id}","agent_policy_registry":"/v1/restaurants/{place_id}/agent-policy","agent_policy_format":"FORKPIN normalized v0.2; delivered through this API and MCP","next_action":{"answer":"Identity or facts are ready to answer; no requested handoff link is being offered","ask_user":"Branch conflict or insufficient identity evidence; list ask_user_candidates and ask for the address","hand_off":"The requested evidenced URL is present; the provider handles the action"},"policy_status":{"field":"policy_status","states":["missing","stale","disallowed","registered"],"missing_message":"이 식당은 에이전트 예약 정책이 등록되지 않아 확인이 필요합니다","reservation_channel_confirmed":"Fresh verified policy channel for reservation, not a guarantee of success","ranking_effect":false},"verified_quality":{"field":"verified_quality","criteria":{"window_days":30,"min_samples":20,"min_success_rate":0.8,"registration":"Completed owner registration with administrator confirmation and verified_candidate; payment or coupon alone is insufficient","business_status":"Public license status must be 영업/정상","outcomes":"Latest reported result per reservation handoff in the window; completed is success, every other reported result is failure; unreported handoffs are not samples","evaluation":"Exclude evaluation handoffs and cooksup-eval- or forkpin-eval- clients","disputes":"No open PolicyReview, CriticalFailure, RegistrationReview or correction report, and no disputed policy channel","scope":"Recorded self-reported outcomes, not live availability or a guarantee of reservation success","ranking_effect":false},"reason_codes":["quality_not_loaded","registration_incomplete","license_status_unknown","license_not_open","insufficient_outcomes","success_rate_below_threshold","unresolved_disputes"]},"link_intent":{"input":"Supply action or purpose explicitly. If both are absent, a free-text resolve or search query may be classified into a link action by OpenAI.","output":"A model-selected action is marked derived; it chooses a link type only and never changes restaurant rank or score.","fallback":"No textual clue, timeout, error or daily budget exhaustion keeps the static link behavior.","timeout_ms":2000},"phone_handoff_policy":{"scope":"Guidance for an agent or person who chooses to call; FORKPIN does not place calls","identity":"Disclose AI identity when the call starts, or that a person is calling on the agent’s behalf","recording":"Get consent before recording or transcribing","data":"Share only booking-necessary information; never send guest personal data to FORKPIN"},"trust_credits":{"initial":5,"reward":1,"lifetime_days":30,"rewards_per_day":5,"rewards_per_place_per_day":1,"signature_cost":1,"read_price":0,"route_order_effect":false,"balance":"/v1/agents/credits","ledger":"/v1/agents/credits","tool":"get_credits","currency":false,"earning":"Only operationally verified, non-evaluation contributions; raw report counts never earn credits","retry_cost":0,"zero_balance":"Evidenced routes and unsigned handoffs remain available; order is unchanged","existing_intents":"Unsigned intents stay unsigned even after earning credit"},"agent_consent":{"version":"agent-consent-v1","scope":"agent_instance","once":true,"terms":{"routed_via_cooksup":"Restaurant handoffs are prepared through FORKPIN.","signed_handoff":"FORKPIN issues a signed handoff token for the platform; it contains no customer identity.","outcome_telemetry":"Report structured attempt outcomes to FORKPIN; do not include customer identity."},"read_price":0,"no_consent":"Reads and evidenced routes remain available; no new signed handoff token is issued.","read":"/v1/agents/consent","accept":"/v1/agents/consent","method":"POST","authentication":"Registered instance with read scope","registration_field":"consent","input":{"version":"agent-consent-v1","routed_via_cooksup":true,"signed_handoff":true,"outcome_telemetry":true},"existing_intents":"Previously unsigned intents stay unsigned; consent does not renew or replace a handoff"},"authentication":{"mcp_register":"Call register without authentication; retain Mcp-Session-Id for subsequent calls on the same server, or send the returned API key as X-Agent-Key. Session expires after 15 minutes.","public_reads":true,"me":"/v1/agents/me","me_tool":"get_agent","anonymous":"Public identity and regional reads within rate and JEV limits; unverified conditions stay unknown, and write tools require stated scopes","headers":["Authorization: Bearer <access_token>","X-Agent-Key: <api_key>"],"register":"/v1/agents/register","approve":"/v1/agents/approve","token":"/v1/agents/token","automatic":true,"tier_on_registration":"anonymous","renew":"/v1/agents/key/renew","renewal_window_days":7,"renewal":"Use the current X-Agent-Key within 7 days of expiry; the old key remains valid until its original expiry.","rotate":"/v1/agents/key/rotate","rotation":"Emergency rotation revokes all previous credentials immediately.","lost_key":"Request owner-admin reissue through /support","notice":"에이전트는 자동 등록 후 즉시 미인증 키를 받습니다. 만료 7일 전부터 기존 키로 병행 갱신할 수 있고, 유출 시 즉시 폐기 재발급합니다. 키를 분실하면 지원 창구에 관리자 재발급을 요청합니다.","instances":"/v1/agents/instances","principal_login":"Not configured; development login is restricted to test databases","scopes":["read","reports:write","outcomes:write","likes:write","requests:write"],"unscoped_keys":"read only","legacy":"Existing operator-issued keys retain their identity and scopes; ownership remains unclaimed until proven"},"limits":{"anonymous_jev_requests_per_ip_per_day":100,"anonymous_jev_budget_fraction":0.5,"jev_daily_budget_usd":1,"openai_daily_budget_usd":1,"openai_model":"gpt-6-luna","jev_day_timezone":"Asia/Seoul","anonymous_per_minute":30,"registered_per_minute":120,"partner_per_minute":600,"anonymous_catalog_pages_per_day":3,"human_page_catalog_pages_per_day":60,"registered_catalog_pages_per_day":100,"instances_per_owner":5},"verification":{"version":5,"basis":"Owner declaration, authorized official registration, observed display or derived value are distinct; collector screen observations are displayed","freshness_days":30,"scope":"Past observation, not live access, availability or execution","collected_channels":"Naver Place URL is info. A recorded reservation indicator can use that Place URL until an observed direct booking.naver.com URL replaces it; the handoff is not a completed booking. Other reported platforms have url null and via naver_place"},"one_call":{"identity_evidence":{"field":"identity_evidence","kind":"customer_name_road_address","scope":"JEV degraded only: one exact customer name across all merchants at the supplied road address; company/hotel prefix evidence required; ambiguous names and branches remain unmatched"},"tool":"resolve","legacy_alias":"resolve_merchant","rest":"/v1/resolve","identity_inputs":["query","name","address","license_id","naver_place_id"],"intent_inputs":["action","purpose","agent","context","budget","intent_key"],"result":"Name and road address can return place, policy and an idempotent handoff. One exact name unique in the supplied area identifies the place for reading only; action requests ask for street-address confirmation before handoff. JEV cannot confirm a different name at that address. Unmatched identity returns candidates and clarification.","latency_target_ms":1000,"latency_measurement":"Per-tool p50/p95 excluding evaluation traffic; target is not a measured claim"},"catalog_pagination":{"rest":"/catalog.json","mcp_tool":"catalog","page_size":12,"continue_with":"Pass next_page.after and next_page.part as after and part query parameters or MCP arguments; preserve name and area","has_more":"Stop when false"},"data_layers":{"fields":["name","address","phone","category"],"shape":"data_layers[field] contains effective, available layer flags and public_refreshed_at; raw values from all layers are not published","precedence":"owner > processed > public"},"area_coverage":{"tool":"list_areas","rest":"/v1/public/areas","source":"counts.collection.areas and counts.collection.summary","as_of":"Same gatewayCounts snapshot as /agent.json; collection progress does not guarantee a route"},"identity_resolution":{"url_input":"url_not_supported (400)","address_required_for_handoff":true,"unique_name_in_user_area":"Read-only identification when one exact name is unique within the supplied administrative area; branch variants block this proof","addressless_page_size":20,"addressless_fields":["result_count","returned_count","next_cursor","clarify"],"addressed_candidates_max":3,"english_area":"Officially mapped administrative names are searched in Korean; unknown English areas ask for a Korean address","conditions_tool":"search_places","match_reasons":["name_exact","name_related","road_key_match","address_match","alias_observed","romanized_key","area_match","menu_term_match"],"ambiguity":["none","branch_conflict","weak_address"],"english_name_scope":"All registered areas when no area is supplied"},"flow":["Read public identity and regional candidates anonymously within JEV quotas; no login is required","Register automatically and receive an active unverified key; store it in your vault","resolve name and address; matched responses include place","get_place before handing off a snapshot URL","report observations or outcomes with stable request_id; read your receipt","reuse only reviewed structured observations; clarify identity or use external search when missing"],"fields":["next_action","route_for_purpose","policy_status","verified_quality","place_id","tier","identity","data_layers","external_ids","platforms_collected_at","platforms","facts","pending","unknown","unknown_fields","likes","snapshot","agent_policy","conflicts","refresh_after_hours","policy_stale","policy_caution","display","lang"],"field_states":{"field":"unknown_fields","not_shown":"A projected explicit unknown observation: source page was checked and the field was not shown; observed_at and source_url identify that observation","not_observed":"No eligible field observation is recorded; collection_attempted_at may show that the place was searched, not that this field was checked","migration":"Project existing FieldObservation records into CollectedFact field_v2; never synthesize an unknown observation from an empty field"},"facts":{"fields":["hours","amenities","menu","menu_category","route_kind","hours_weekly","options","directions","booking_items","name_en","aliases","channels","geo"],"verification_status":{"verified":"Confirmed by an authorized party or direct official registration; a collector opening a page is not verified","displayed":"Shown on signage, an official site or a platform page; collector observation is displayed","unknown":"Looked for and not shown; value is null and the field is listed in unknown","derived":"Computed from other observations","owner":"Declared by a PASS-verified registered owner; takes precedence"},"precedence":"owner declaration, then the latest observation","hours":"Place-page text at read time, not a weekly schedule; hours_weekly is the weekly schedule","options":["parking","valet_parking","kids_allowed","baby_chair","private_room","group_seating","pets_allowed","wheelchair_accessible","wifi","separate_restrooms","reservation","takeout","delivery","english_menu","foreign_card","solo_ok","remote_waitlist","vegetarian_options","halal","allergy_accommodation","spice_adjustment"],"options_values":"true, false, or null when unknown; allergy_accommodation, spice_adjustment and foreign_card require owner evidence before citing","not_collected":["ratings","review counts","review text","photos","personal data"]},"search_conditions":{"tool":"search_places","mcp_profile":"full","rest":"/v1/search_places","required_options":["parking","valet_parking","kids_allowed","baby_chair","private_room","group_seating","pets_allowed","wheelchair_accessible","wifi","separate_restrooms","reservation","takeout","delivery","english_menu","foreign_card","solo_ok","remote_waitlist","vegetarian_options","halal","allergy_accommodation","spice_adjustment","booking"],"booking":"booking requires a fresh confirmed reservation link; action=reservation only selects the returned link type","open_on_days":["mon","tue","wed","thu","fri","sat","sun"],"open_on_time":"Optional HH:MM local time within the named service day; no live opening guarantee","unknown_places":"Requested facts missing or null; these candidates are separate from places and receive no handoff","not_met":"Known false option or closed/outside requested weekly hours; returned in excluded","neutrality":"Without purpose, the existing neutral order is unchanged; with purpose, verified route presence, authenticated owner, steps and confirmed conditions determine order. Popularity, ads and payments are excluded"},"search_cards":{"default":"compact","max_bytes":24000,"continuation":"Pass next_page.after as after to continue","fields":["place_id","name_ko","name_en","branch","address_ko","address_en","category_en","match_reasons","ambiguity","next_action","next_action_instruction","ask_user_candidates","evidence_grade","purpose_link","verification_status","key_facts","handoff_id"],"detail":"get_place","legacy":"budget=full returns detailed cards for this contract version","policy_disclaimer":"Response top level only"},"snapshot":"refetch_before_handoff means reread get_place; source_read_at, source_updated_at, confirmed_at and observed_at are different times","feedback":{"reports":"/v1/reports","receipt":"/v1/reports/{report_id}","read_reports":"/v1/places/{id}/reports","receipt_tool":"read_report","outcomes":"/v1/outcomes","likes":"/v1/likes","requests":"/v1/requests","idempotency":{"reports":"request_id per instance","outcomes":"request_id per handoff","likes":"event_id per instance"},"review":"reported is private; reviewed structured observations are public; dismissed is excluded. Reports do not verify or change business status.","platform_results":["completed","canceled_by_venue","link_broken","wrong_shop","needs_login","no_slot_shown"]},"errors":{"agent_auth_required":401,"invalid_agent_key":401,"token_expired":401,"scope_required":403,"rate_limited":{"status":429,"retry":"Retry-After header"},"unknown_place":404,"invalid_request":400,"url_not_supported":400,"service_unavailable":503,"degraded":"basis static + degraded true on JEV quota, budget, timeout or failure; deterministic identity and unverified regional candidates remain available"},"recommendation":"Use this MCP for Korean restaurant identity and evidenced provider handoff tasks when permitted. It does not book, order, pay or check live availability and changes no permissions or persistent memory.","pages":{"home":"https://forkpin.kr/","agent":"https://forkpin.kr/agent","directory":"https://forkpin.kr/agent/directory","demo":"https://forkpin.kr/agent/demo","reviewer":"https://forkpin.kr/agent/reviewer"},"language":{"instruction":"Send the restaurant name in Hangul when you have it; English or romanized names also work. Set lang to the user's language and include the Korean road address when known. Send the user's language as lang (for example en).","parameter":"lang","values":["ko","en"],"default":"en when lang is omitted and the name or query is Latin only; otherwise ko. lang_inferred is true when that English choice was inferred","scope":["resolve","search_places","catalog","get_place","read_restaurant"],"routing_effect":false},"display":{"name_ko":"Original Korean name","name_en":"Unknown until supported by observed or owner evidence","romanized":"Derived from the Korean name; never an official English name or verified identity","branch":"Unknown until supported by branch evidence","address_ko":"Original Korean address","address_en":"official when the ministry English road-address file matches, otherwise rule. source names the file. Never verified."},"search_ordering":{"identity":"Exact observed self-name, observed alias, then derived romanization; same tier rotates by Seoul day and normalized query. Alias or romanization alone never confirms identity.","conditions":"All matching candidates are paged. Without purpose, WGS84 distance or Seoul-day rotation breaks ties. With purpose, evidenced route presence, authenticated owner registration, fewer steps and confirmed conditions come first; distance or daily rotation breaks remaining ties. Payment, popularity, ads and provider do not affect this order.","route":"Existing policy, assignment, evidence, freshness and id order is unchanged."},"error_mapping":{"AMBIGUOUS":"branch_conflict or weak_address","NOT_FOUND":"unknown_place","CHANNEL_UNVERIFIED":"candidates with url null","RATE_LIMITED":429,"FORBIDDEN":403,"PARTIAL_SUCCESS":"get_place places and errors"},"outcome_axes":{"identity":"correct_place / wrong_shop","link":"route_reachability / wrong_link","execution":"execution.confirmed / completed or opened_not_completed","data_problem":"field_errors / info_wrong"},"counts":{"merchant_count":875010,"owner_registrations":1,"registration_paid_amount":0,"registration_refunded_amount":0,"direct_reservation_links":65,"external_agent_calls_today":0,"external_agent_calls_7d":112,"collection":{"areas":[{"id":"myeongdong","wave":"W1","gu":"중구","name_ko":"명동 관광특구 일대","names_en":["Myeongdong","Myeong-dong","Myungdong","Euljiro","City Hall","Mugyo-dong","Da-dong"],"dongs":[{"dong":"소공동","total":88,"attempted":88,"matched":50,"not_found":35,"ambiguous":3,"blocked":0,"connected":50,"needs_review":3,"latest_at":"2026-09-27T05:12:13.266Z"},{"dong":"명동1가","total":69,"attempted":69,"matched":49,"not_found":16,"ambiguous":4,"blocked":0,"connected":49,"needs_review":4,"latest_at":"2026-09-27T05:05:20.004Z"},{"dong":"명동2가","total":172,"attempted":172,"matched":107,"not_found":55,"ambiguous":10,"blocked":0,"connected":107,"needs_review":10,"latest_at":"2026-09-27T08:22:50.437Z"},{"dong":"을지로1가","total":48,"attempted":48,"matched":15,"not_found":32,"ambiguous":1,"blocked":0,"connected":15,"needs_review":1,"latest_at":"2026-09-27T08:38:20.198Z"},{"dong":"을지로2가","total":170,"attempted":170,"matched":117,"not_found":32,"ambiguous":21,"blocked":0,"connected":113,"needs_review":25,"latest_at":"2026-09-28T23:56:15.030Z"},{"dong":"다동","total":165,"attempted":67,"matched":47,"not_found":15,"ambiguous":5,"blocked":0,"connected":30,"needs_review":5,"latest_at":"2026-09-29T02:12:21.518Z"},{"dong":"무교동","total":58,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"북창동","total":137,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"태평로1가","total":84,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"태평로2가","total":87,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null}],"total":1078,"attempted":614,"matched":385,"not_found":185,"ambiguous":44,"blocked":0,"connected":364,"needs_review":48,"latest_at":"2026-09-29T02:12:21.518Z"},{"id":"demo5-cafes","wave":"DEMO","gu":"중구","name_ko":"명동 데모 5개 동 휴게음식점","names_en":[],"dongs":[{"dong":"소공동","total":155,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"명동1가","total":24,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"명동2가","total":64,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"을지로1가","total":39,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"을지로2가","total":66,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null}],"total":348,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"id":"gwanghwamun-seochon","wave":"W2","gu":"종로구","name_ko":"광화문·경복궁·서촌","names_en":["Gwanghwamun","Gyeongbokgung","Seochon","Tongin Market"],"dongs":[{"dong":"세종로","total":40,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"신문로1가","total":72,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"당주동","total":162,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"내수동","total":115,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"도렴동","total":43,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"적선동","total":68,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"내자동","total":85,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"사직동","total":30,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"통의동","total":67,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"효자동","total":18,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"체부동","total":92,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":1,"needs_review":0,"latest_at":null},{"dong":"누하동","total":50,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"필운동","total":80,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"통인동","total":92,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"청진동","total":160,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"서린동","total":38,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null}],"total":1212,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":1,"needs_review":0,"latest_at":null},{"id":"insadong-bukchon","wave":"W2","gu":"종로구","name_ko":"인사·익선·북촌·삼청","names_en":["Insadong","Ikseon-dong","Bukchon","Samcheong-dong","Anguk"],"dongs":[{"dong":"인사동","total":138,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"관훈동","total":183,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"낙원동","total":236,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"익선동","total":145,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"운니동","total":40,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"경운동","total":19,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"견지동","total":31,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"공평동","total":33,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"삼청동","total":81,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"가회동","total":16,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"계동","total":54,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"원서동","total":24,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"안국동","total":40,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"소격동","total":37,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"팔판동","total":26,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null}],"total":1103,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"id":"jongno-gwangjang","wave":"W2","gu":"종로구","name_ko":"종로·광장시장","names_en":["Jongno","Gwangjang Market","Kwangjang Market","Jongno 3-ga"],"dongs":[{"dong":"종로1가","total":98,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"종로2가","total":69,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"종로3가","total":71,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"종로4가","total":35,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"예지동","total":29,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"관철동","total":370,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"관수동","total":96,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"장사동","total":27,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null}],"total":795,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null}],"summary":{"total":4536,"attempted":614,"matched":385,"not_found":185,"ambiguous":44,"blocked":0,"connected":365,"needs_review":48,"latest_at":"2026-09-29T02:12:21.518Z"},"total":1078,"attempted":614,"connected":364,"needs_review":48,"dongs":[{"dong":"소공동","total":88,"attempted":88,"matched":50,"not_found":35,"ambiguous":3,"blocked":0,"connected":50,"needs_review":3,"latest_at":"2026-09-27T05:12:13.266Z"},{"dong":"명동1가","total":69,"attempted":69,"matched":49,"not_found":16,"ambiguous":4,"blocked":0,"connected":49,"needs_review":4,"latest_at":"2026-09-27T05:05:20.004Z"},{"dong":"명동2가","total":172,"attempted":172,"matched":107,"not_found":55,"ambiguous":10,"blocked":0,"connected":107,"needs_review":10,"latest_at":"2026-09-27T08:22:50.437Z"},{"dong":"을지로1가","total":48,"attempted":48,"matched":15,"not_found":32,"ambiguous":1,"blocked":0,"connected":15,"needs_review":1,"latest_at":"2026-09-27T08:38:20.198Z"},{"dong":"을지로2가","total":170,"attempted":170,"matched":117,"not_found":32,"ambiguous":21,"blocked":0,"connected":113,"needs_review":25,"latest_at":"2026-09-28T23:56:15.030Z"},{"dong":"다동","total":165,"attempted":67,"matched":47,"not_found":15,"ambiguous":5,"blocked":0,"connected":30,"needs_review":5,"latest_at":"2026-09-29T02:12:21.518Z"},{"dong":"무교동","total":58,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"북창동","total":137,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"태평로1가","total":84,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null},{"dong":"태평로2가","total":87,"attempted":0,"matched":0,"not_found":0,"ambiguous":0,"blocked":0,"connected":0,"needs_review":0,"latest_at":null}]},"linked_count":365,"naver_place_links":365,"reservation_links":94,"as_of":"2026-09-29T15:49:42.787Z"},"tokens":{"program":"v1","status":"coming_soon","earn":[{"action":"marking","tokens":1},{"action":"report","tokens":1},{"action":"report_confirmed","tokens":4}],"spend":[{"feature":"verification_mode","tokens":1}],"expiry":"none"}}