Foresea Forecasting

Forecast future events and scan prediction-market edges.

사용해야 할까요

품질 및 안전성

B
설명 품질
98%
스키마 완전성
62%
이름 품질
80%
오염 위험
80%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (2)

  • HIGHTool poisoning patterns detected
  • INFOTool description contains placeholder or incomplete textforesea_analyze_market에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~4,591토큰 (도구 정의)
~1.4 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.59%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "forecasting": {
      "url": "https://foresea.ink/mcp/"
    }
  }
}

원격 엔드포인트

https://foresea.ink/mcp/streamable-http

할 수 있는 일

도구 목록

도구 (21)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢foresea_forecast(question, description, resolution_criteria, question_type, options, ...)

Call this whenever the user asks about probability, likelihood, or whether something will happen. Good triggers: "Will X happen?", "What are the chances of Y?", "How likely is Z?", "What's the probability that…", "Do you think X will…", "Should I bet on…". Returns a calibrated YES/NO probability (or numeric/date range) with written rationale and supporting news evidence. If you also have a market price (market_probability) or URL (market_url), pass it to get the model-vs-market edge — how mispriced the market is. Example: question="Will the Fed cut rates by March 2026?", market_probability=0.4 → {predicted_answer:"No", confidence:0.62, rationale, evidence_sources, market_analysis:{model_probability:0.54, edge:+0.14, stance:"model_above_market"}} Handles: binary YES/NO, multiple-choice, numeric ranges, and date questions.

입력 스키마

{
  "type": "object",
  "properties": {
    "question": {
      "title": "Question",
      "type": "string"
    },
    "description": {
      "default": "",
      "title": "Description",
      "type": "string"
    },
    "resolution_criteria": {
      "default": "",
      "title": "Resolution Criteria",
      "type": "string"
    },
    "question_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Question Type"
    },
    "options": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Options"
    },
    "categories": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Categories"
    },
    "variant": {
      "default": "variant0_neutral_baseline",
      "title": "Variant",
      "type": "string"
    },
    "attach_evidence": {
      "default": true,
      "title": "Attach Evidence",
      "type": "boolean"
    },
    "evidence_top_k": {
      "default": 5,
      "title": "Evidence Top K",
      "type": "integer"
    },
    "market_platform": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market Platform"
    },
    "market_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market Url"
    },
    "market_outcome": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market Outcome"
    },
    "market_probability": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market Probability"
    }
  },
  "required": [
    "question"
  ],
  "title": "foresea_forecastArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_forecastOutput"
}
🟢foresea_analyze_market(question, platform, slug, market_id, ticker, ...)

Call this when the user mentions a specific prediction market by URL, slug, or ticker — or asks whether a particular market is over/underpriced. Good triggers: "Is this Polymarket fair?", "What's the edge on kalshi:XXXXX?", "Should I buy/sell this market?", user pastes a Polymarket or Kalshi URL. Fetches the live price, gathers evidence, forecasts, computes model-vs-market edge, and returns a recommendation. Use foresea_forecast instead when there is no specific live market — just a general probability question. Example: platform="polymarket", slug="fed-rate-cut-march-2026" → {model_probability, market_probability, edge, stance, recommendation, thesis}.

입력 스키마

{
  "type": "object",
  "properties": {
    "question": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Question"
    },
    "platform": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Platform"
    },
    "slug": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Slug"
    },
    "market_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market Id"
    },
    "ticker": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Ticker"
    },
    "market_probability": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market Probability"
    },
    "variant": {
      "default": "variant0_neutral_baseline",
      "title": "Variant",
      "type": "string"
    },
    "evidence_top_k": {
      "default": 5,
      "title": "Evidence Top K",
      "type": "integer"
    },
    "skills": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Skills"
    },
    "builtin_skills": {
      "default": false,
      "title": "Builtin Skills",
      "type": "boolean"
    },
    "ground_in_record": {
      "default": false,
      "title": "Ground In Record",
      "type": "boolean"
    },
    "tool_loop": {
      "default": false,
      "title": "Tool Loop",
      "type": "boolean"
    },
    "max_tool_steps": {
      "default": 5,
      "title": "Max Tool Steps",
      "type": "integer"
    }
  },
  "title": "foresea_analyze_marketArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_analyze_marketOutput"
}
🟢foresea_scan_markets(platform, limit, min_edge, evidence_top_k, query)

Call this when the user wants to find mispriced or interesting markets, not evaluate a specific one. Good triggers: "What should I bet on?", "Find me trading opportunities", "Which markets are mispriced right now?", "What's Foresea's best edge today?", "Scan Polymarket for opportunities". Returns markets ranked by model-vs-market disagreement, each with model probability, market price, and edge. For a specific market, use foresea_analyze_market instead. Example: platform="kalshi", min_edge=0.1 → [{question, market_probability, model_probability, edge, market_url}].

입력 스키마

{
  "type": "object",
  "properties": {
    "platform": {
      "default": "polymarket",
      "title": "Platform",
      "type": "string"
    },
    "limit": {
      "default": 4,
      "title": "Limit",
      "type": "integer"
    },
    "min_edge": {
      "default": 0.1,
      "title": "Min Edge",
      "type": "number"
    },
    "evidence_top_k": {
      "default": 3,
      "title": "Evidence Top K",
      "type": "integer"
    },
    "query": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Query"
    }
  },
  "title": "foresea_scan_marketsArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_scan_marketsOutput"
}
🟢foresea_batch_quotes(refs)

Call this when the user wants current price/volume for several markets at once -- a watchlist, a portfolio, "check on these 5 markets" -- instead of calling foresea_analyze_market once per market. Each ref is "platform:ident", e.g. "kalshi:KXFED-25JUN-H" or "polymarket:some-market-slug". Every quote carries fetched_at and age_seconds so you can judge freshness yourself -- both venues rate-limit hard, so don't assume a quote is live without checking age_seconds. One bad ref returns an error on that entry only; the rest of the batch still succeeds. Up to 50 refs per call. Example: refs=["kalshi:KXFED-25JUN-H", "polymarket:fed-cut-2026"] → {quotes: [{platform, ident, probability, volume, fetched_at, age_seconds, error}], count, truncated}.

입력 스키마

{
  "type": "object",
  "properties": {
    "refs": {
      "items": {
        "type": "string"
      },
      "title": "Refs",
      "type": "array"
    }
  },
  "required": [
    "refs"
  ],
  "title": "foresea_batch_quotesArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_batch_quotesOutput"
}
🟢foresea_check_run(client_run_key)

Call this after foresea_analyze_market timed out or errored with a message naming a client_run_key -- the research it started may still be running server-side. Returns {"status": "running", ...} if it's not done yet (call again in a bit), or the full report once it is. Do not call this speculatively; only use the client_run_key a prior foresea_analyze_market call actually gave you. Example: client_run_key="a1b2c3..." → {status:"running", id:"agent_run_..."} or the full report once complete.

입력 스키마

{
  "type": "object",
  "properties": {
    "client_run_key": {
      "title": "Client Run Key",
      "type": "string"
    }
  },
  "required": [
    "client_run_key"
  ],
  "title": "foresea_check_runArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_check_runOutput"
}
⚪foresea_track_record

Call this when the user asks how reliable or accurate Foresea is, or wants to know whether to trust a forecast. Good triggers: "How good is Foresea?", "What's the track record?", "Has it been right before?", "Is it calibrated?", "What's the Brier score?". Returns accuracy, Brier score, calibration (ECE), and skill-vs-market broken down by time horizon.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "foresea_track_recordArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_track_recordOutput"
}
⚪foresea_edge_board

Call this when the user wants the current top trading opportunities with explicit trade directions and historical backing. Good triggers: "What are the best bets right now?", "Show me the edge board", "Which model is winning the paper-trading competition?", "What's the strongest edge today?", "Are these edges statistically significant?". Returns open markets ranked by model-vs-market disagreement, each with Buy YES/NO direction, implied odds, whether the edge is historically significant, and a multi-model comparison.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "foresea_edge_boardArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_edge_boardOutput"
}
🟡foresea_venue_data(platform, operation, parameters, body)

Read public historical markets/candles/trades, batch books/midpoints/spreads, fees, holders, open interest, event volume, milestones and weather. Omit operation to discover operation names and schemas. No account or write access.

입력 스키마

{
  "type": "object",
  "properties": {
    "platform": {
      "default": "",
      "title": "Platform",
      "type": "string"
    },
    "operation": {
      "default": "",
      "title": "Operation",
      "type": "string"
    },
    "parameters": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Parameters"
    },
    "body": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Body"
    }
  },
  "title": "foresea_venue_dataArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_venue_dataOutput"
}
🟢foresea_exchange_status

Call this to check Kalshi exchange operational status (trading active flag) and operational hours/schedule.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "foresea_exchange_statusArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_exchange_statusOutput"
}
🟢foresea_orderbook(ticker_or_token, platform)

Call this to fetch the live bids and asks orderbook depth for a Kalshi market ticker (e.g. 'KXFED-25JUN-H') or Polymarket YES-token ID.

입력 스키마

{
  "type": "object",
  "properties": {
    "ticker_or_token": {
      "title": "Ticker Or Token",
      "type": "string"
    },
    "platform": {
      "default": "",
      "title": "Platform",
      "type": "string"
    }
  },
  "required": [
    "ticker_or_token"
  ],
  "title": "foresea_orderbookArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_orderbookOutput"
}
⚪foresea_market_tags

Call this to sample Polymarket's category vocabulary. Each entry is a label and the slug that identifies it. This is one page of at most 100 tags, not the full taxonomy: Polymarket has tens of thousands, and the endpoint returns a fixed slice that is ordered neither alphabetically nor by market activity. So absence here does not mean a tag is unused, presence does not mean it is active, and some entries are one-off or misspelled. Treat it as a vocabulary sample, not a classification the markets are organised by.

입력 스키마

{
  "type": "object",
  "properties": {},
  "title": "foresea_market_tagsArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_market_tagsOutput"
}
🟢foresea_price_history(ticker_or_market, series_ticker)

Call this to retrieve historical price series or OHLC candlesticks for a market (e.g. Kalshi ticker or Polymarket token/slug).

입력 스키마

{
  "type": "object",
  "properties": {
    "ticker_or_market": {
      "title": "Ticker Or Market",
      "type": "string"
    },
    "series_ticker": {
      "default": "",
      "title": "Series Ticker",
      "type": "string"
    }
  },
  "required": [
    "ticker_or_market"
  ],
  "title": "foresea_price_historyArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_price_historyOutput"
}
🟢foresea_live_data(event_ticker, data_type, milestone_id)

Call this to fetch real-time sports game statistics, play-by-play data, and live event feeds from Kalshi. Provide event_ticker for event charts, or milestone_id with data_type="game_stats" for play-by-play.

입력 스키마

{
  "type": "object",
  "properties": {
    "event_ticker": {
      "default": "",
      "title": "Event Ticker",
      "type": "string"
    },
    "data_type": {
      "default": "",
      "title": "Data Type",
      "type": "string"
    },
    "milestone_id": {
      "default": "",
      "title": "Milestone Id",
      "type": "string"
    }
  },
  "title": "foresea_live_dataArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_live_dataOutput"
}
🟢foresea_polymarket_meta(target, market_id)

Call this to fetch Polymarket metadata: event series listings, community discussion comments for a market, or sports league metadata (target: 'series', 'comments', 'sports', 'teams'). 'series' lists the series and how many events each holds, not the events themselves -- fetch a series by slug for those. 'sports' lists every league with the ids that link it to other tools, not league artwork or homepages. 'comments' gives the comment, its author address and its reaction count, not the commenters' profiles or individual reactions.

입력 스키마

{
  "type": "object",
  "properties": {
    "target": {
      "default": "series",
      "title": "Target",
      "type": "string"
    },
    "market_id": {
      "default": "",
      "title": "Market Id",
      "type": "string"
    }
  },
  "title": "foresea_polymarket_metaArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_polymarket_metaOutput"
}
🟢foresea_recent_trades(platform, ticker_or_token, limit)

Call this to fetch recent public executed trades / trade tape (prices, sizes, timestamps) on Kalshi or Polymarket.

입력 스키마

{
  "type": "object",
  "properties": {
    "platform": {
      "default": "kalshi",
      "title": "Platform",
      "type": "string"
    },
    "ticker_or_token": {
      "default": "",
      "title": "Ticker Or Token",
      "type": "string"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "foresea_recent_tradesArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_recent_tradesOutput"
}
🟢foresea_market_leaderboard(limit)

Call this to fetch the top profitable prediction market trader leaderboard and rankings from Polymarket.

입력 스키마

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "foresea_market_leaderboardArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_market_leaderboardOutput"
}
⚪foresea_debate_market(question, platform, market_probability, resolution_criteria)

Conduct an adversarial multi-agent debate (Bull vs. Bear vs. Chief Risk Judge) to cross-examine evidence and isolate blind spots on a forecasting question.

입력 스키마

{
  "type": "object",
  "properties": {
    "question": {
      "title": "Question",
      "type": "string"
    },
    "platform": {
      "default": "Market",
      "title": "Platform",
      "type": "string"
    },
    "market_probability": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market Probability"
    },
    "resolution_criteria": {
      "default": "",
      "title": "Resolution Criteria",
      "type": "string"
    }
  },
  "required": [
    "question"
  ],
  "title": "foresea_debate_marketArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_debate_marketOutput"
}
🟢foresea_optimize_portfolio(bankroll_usd, kelly_fraction, min_edge)

Calculate optimal mathematical Fractional Kelly capital allocations and position sizes across live Grade A/B prediction market opportunities.

입력 스키마

{
  "type": "object",
  "properties": {
    "bankroll_usd": {
      "default": 1000,
      "title": "Bankroll Usd",
      "type": "number"
    },
    "kelly_fraction": {
      "default": 0.25,
      "title": "Kelly Fraction",
      "type": "number"
    },
    "min_edge": {
      "default": 0.05,
      "title": "Min Edge",
      "type": "number"
    }
  },
  "title": "foresea_optimize_portfolioArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_optimize_portfolioOutput"
}
🟢foresea_feed_latest(limit, min_edge)

Fetch the real-time unified Foresea Alpha & Agent Feed, combining live prediction market edge signals, autonomous agent trades & theses, and leaderboard standings.

입력 스키마

{
  "type": "object",
  "properties": {
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    },
    "min_edge": {
      "default": 0.05,
      "title": "Min Edge",
      "type": "number"
    }
  },
  "title": "foresea_feed_latestArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_feed_latestOutput"
}
⚪foresea_weather_radar(target_date)

Scan live temperature and weather prediction markets (Kalshi KXHIGHNY, KXHIGHCHI, KXHIGHMIA, KXHIGHAUS, KXHIGHDEN, KXHIGHPHIL, etc.) against neural weather models (Google DeepMind WeatherNext 3 / MetNet) and high-resolution multi-model ensembles, calibrated with station microclimate bias profiles. Returns ranked mispricings, strike bracket probabilities, and model-vs-market edge.

입력 스키마

{
  "type": "object",
  "properties": {
    "target_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Target Date"
    }
  },
  "title": "foresea_weather_radarArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_weather_radarOutput"
}
🟢foresea_weather_forecast(station_or_query, target_date)

Retrieve neural model weather forecasts (Google Maps Weather API / WeatherNext 3 / MetNet, ECMWF, GFS, GraphCast) with empirical station bias correction (e.g. KNYC Central Park, KMDW Chicago Midway, KDEN Denver) and strike bracket probability calculations for weather prediction markets.

입력 스키마

{
  "type": "object",
  "properties": {
    "station_or_query": {
      "title": "Station Or Query",
      "type": "string"
    },
    "target_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Target Date"
    }
  },
  "required": [
    "station_or_query"
  ],
  "title": "foresea_weather_forecastArguments"
}

출력 스키마

{
  "type": "object",
  "properties": {
    "result": {
      "additionalProperties": true,
      "title": "Result",
      "type": "object"
    }
  },
  "required": [
    "result"
  ],
  "title": "foresea_weather_forecastOutput"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 21개
검증됨버전이 기록되지 않음도구 21개