MCP 서버

ModelCostComparison

io.github.Lazige/modelcostcomparison
데이터 및 분석 개발자 도구 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Lists AI model pricing offers, calculates token costs, compares providers, and ranks models by estimated text-token expense.

calculate_cost
Use when you have one exact offer ID and token usage and want its USD text-token subtotal. Discover the ID with list_models first. Total input includes cached input; do not add cached tokens twice. Excludes cache writes, storage, search, tool fees and taxes. Requires current reviewed, supported rates; does not invoke a model. Use compare_model_costs for several known offers.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['model_id', 'usage'], 'properties': {'usage': {'type': 'object', 'required': ['input_tokens', 'output_tokens'], 'properties': {'input_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Total input tokens across the workload, including cached input. For monthly estimates, sum input over all monthly requests.'}, 'output_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Total billable output tokens across the same workload period, including billed reasoning tokens where applicable.'}, 'cached_input_tokens': {'type': 'integer', 'default': 0, 'maximum': 1000000000000, 'minimum': 0, 'description': 'Number of input_tokens expected to be cached, not additional input. Defaults to 0 and must not exceed input_tokens. Cache-write charges are excluded; an unconfirmed cache discount falls back to ordinary input pricing with a warning.'}, 'max_input_tokens_per_request': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Largest full input in any single request, including cached tokens; not the monthly total or average. Provide when a tariff has an input limit so eligibility can be checked.'}}, 'description': 'Token totals for the period or scenario being estimated, not dollars or request counts. Supply input and output separately; cached input is a subset of total input.', 'additionalProperties': False}, 'model_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact pricing-offer ID returned by list_models or find_cheapest_models. Do not substitute a display name or guessed API model name.'}, 'expected_dataset_revision': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$', 'description': 'Optional consistency check: copy meta.dataset_revision from a prior tool response to require the same current pricing snapshot. Omit to use the current snapshot. A mismatch returns DATASET_CHANGED; refresh pricing and retry. This cannot retrieve a historical snapshot.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$defs': {'meta': {'type': 'object', 'required': ['contract_version', 'dataset_revision', 'dataset_updated_at', 'evaluated_at'], 'properties': {'evaluated_at': {'type': 'string', 'format': 'date-time'}, 'contract_version': {'const': '1.0'}, 'dataset_revision': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$'}, 'dataset_updated_at': {'type': 'string'}}, 'additionalProperties': False}, 'costs': {'type': 'object', 'required': ['uncached_input_usd', 'cached_input_usd', 'input_usd', 'output_usd', 'total_usd'], 'properties': {'input_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'total_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'output_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'cached_input_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'uncached_input_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}}, 'additionalProperties': False}, 'error': {'type': 'object', 'required': ['code', 'message', 'field', 'model_id', 'resolution'], 'properties': {'code': {'enum': ['INVALID_ARGUMENT', 'MODEL_NOT_FOUND', 'PRICE_UNREVIEWED', 'PRICE_EXPIRED', 'SCOPE_REQUIRED', 'SCOPE_EXCEEDED', 'UNSUPPORTED_TARIFF', 'UNSUPPORTED_CACHE', 'CATALOGUE_INCONSISTENT', 'INVALID_CURSOR', 'CURSOR_EXPIRED', 'DATASET_CHANGED', 'NO_COMPARABLE_MODELS', 'DATASET_UNAVAILABLE', 'INTERNAL_ERROR'], 'type': 'string'}, 'field': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'model_id': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}, 'resolution': {'type': 'string'}}, 'additionalProperties': False}, 'rates': {'type': 'object', 'required': ['input', 'cached_input', 'output'], 'properties': {'input': {'type': 'number', 'minimum': 0}, 'output': {'type': 'number', 'minimum': 0}, 'cached_input': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'usage': {'type': 'object', 'required': ['input_tokens', 'output_tokens', 'cached_input_tokens', 'max_input_tokens_per_request'], 'properties': {'input_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, 'output_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, 'cached_input_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, 'max_input_tokens_per_request': {'anyOf': [{'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'pricing': {'type': 'object', 'required': ['identity', 'currency', 'rate_unit', 'rates', 'cache_mode', 'evidence', 'costing_supported', 'unsupported_reason', 'max_input_tokens_per_request'], 'properties': {'rates': {'$ref': '#/$defs/rates'}, 'currency': {'const': 'USD'}, 'evidence': {'$ref': '#/$defs/evidence'}, 'identity': {'$ref': '#/$defs/identity'}, 'rate_unit': {'const': 'per_1000000_tokens'}, 'cache_mode': {'type': 'string'}, 'costing_supported': {'type': 'boolean'}, 'unsupported_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'max_input_tokens_per_request': {'anyOf': [{'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'warning': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'evidence': {'type': 'object', 'required': ['status', 'checked_at', 'valid_until', 'source_urls', 'scope'], 'properties': {'scope': {'type': 'string'}, 'status': {'enum': ['current', 'expired', 'unreviewed'], 'type': 'string'}, 'checked_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}]}, 'source_urls': {'type': 'array', 'items': {'type': 'string', 'format': 'uri'}}, 'valid_until': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'identity': {'type': 'object', 'required': ['model_id', 'label', 'api_model_id', 'provider_id', 'provider_label', 'billing_channel', 'pricing_tier'], 'properties': {'label': {'type': 'string'}, 'model_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'provider_id': {'type': 'string'}, 'api_model_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'pricing_tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'provider_label': {'type': 'string'}, 'billing_channel': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'calculation': {'type': 'object', 'required': ['pricing', 'usage', 'applied_rates', 'costs', 'estimate_type', 'scope_check', 'warnings'], 'properties': {'costs': {'$ref': '#/$defs/costs'}, 'usage': {'$ref': '#/$defs/usage'}, 'pricing': {'$ref': '#/$defs/pricing'}, 'warnings': {'type': 'array', 'items': {'$ref': '#/$defs/warning'}}, 'scope_check': {'enum': ['within_reviewed_limit', 'no_structured_limit'], 'type': 'string'}, 'applied_rates': {'$ref': '#/$defs/rates'}, 'estimate_type': {'const': 'text_token_subtotal'}}, 'additionalProperties': False}}, 'oneOf': [{'type': 'object', 'required': ['ok', 'meta', 'data'], 'properties': {'ok': {'const': True}, 'data': {'$ref': '#/$defs/calculation'}, 'meta': {'$ref': '#/$defs/meta'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['ok', 'meta', 'error', 'errors'], 'properties': {'ok': {'const': False}, 'meta': {'anyOf': [{'$ref': '#/$defs/meta'}, {'type': 'null'}]}, 'error': {'$ref': '#/$defs/error'}, 'errors': {'type': 'array', 'items': {'$ref': '#/$defs/error'}, 'maxItems': 20}}, 'additionalProperties': False}]}
compare_model_costs
Use when you already have 2–20 exact offer IDs and want their USD text-token subtotals for the same usage and pricing snapshot. Equal token counts are a comparison assumption, not equivalent tokenization of the same text. Returns supported results and per-offer exclusions. Excludes cache writes, storage, search, tool fees and taxes; does not rank quality. Use find_cheapest_models to search without a shortlist.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['model_ids', 'usage'], 'properties': {'usage': {'type': 'object', 'required': ['input_tokens', 'output_tokens'], 'properties': {'input_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Total input tokens across the workload, including cached input. For monthly estimates, sum input over all monthly requests.'}, 'output_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Total billable output tokens across the same workload period, including billed reasoning tokens where applicable.'}, 'cached_input_tokens': {'type': 'integer', 'default': 0, 'maximum': 1000000000000, 'minimum': 0, 'description': 'Number of input_tokens expected to be cached, not additional input. Defaults to 0 and must not exceed input_tokens. Cache-write charges are excluded; an unconfirmed cache discount falls back to ordinary input pricing with a warning.'}, 'max_input_tokens_per_request': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Largest full input in any single request, including cached tokens; not the monthly total or average. Provide when a tariff has an input limit so eligibility can be checked.'}}, 'description': 'Token totals for the period or scenario being estimated, not dollars or request counts. Supply input and output separately; cached input is a subset of total input.', 'additionalProperties': False}, 'model_ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 20, 'minItems': 2, 'description': 'Distinct exact pricing-offer IDs returned by discovery. Choose 2â\x80\x9320 offers to compare; do not supply display names.', 'uniqueItems': True}, 'expected_dataset_revision': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$', 'description': 'Optional consistency check: copy meta.dataset_revision from a prior tool response to require the same current pricing snapshot. Omit to use the current snapshot. A mismatch returns DATASET_CHANGED; refresh pricing and retry. This cannot retrieve a historical snapshot.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$defs': {'meta': {'type': 'object', 'required': ['contract_version', 'dataset_revision', 'dataset_updated_at', 'evaluated_at'], 'properties': {'evaluated_at': {'type': 'string', 'format': 'date-time'}, 'contract_version': {'const': '1.0'}, 'dataset_revision': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$'}, 'dataset_updated_at': {'type': 'string'}}, 'additionalProperties': False}, 'costs': {'type': 'object', 'required': ['uncached_input_usd', 'cached_input_usd', 'input_usd', 'output_usd', 'total_usd'], 'properties': {'input_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'total_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'output_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'cached_input_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'uncached_input_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}}, 'additionalProperties': False}, 'error': {'type': 'object', 'required': ['code', 'message', 'field', 'model_id', 'resolution'], 'properties': {'code': {'enum': ['INVALID_ARGUMENT', 'MODEL_NOT_FOUND', 'PRICE_UNREVIEWED', 'PRICE_EXPIRED', 'SCOPE_REQUIRED', 'SCOPE_EXCEEDED', 'UNSUPPORTED_TARIFF', 'UNSUPPORTED_CACHE', 'CATALOGUE_INCONSISTENT', 'INVALID_CURSOR', 'CURSOR_EXPIRED', 'DATASET_CHANGED', 'NO_COMPARABLE_MODELS', 'DATASET_UNAVAILABLE', 'INTERNAL_ERROR'], 'type': 'string'}, 'field': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'model_id': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}, 'resolution': {'type': 'string'}}, 'additionalProperties': False}, 'rates': {'type': 'object', 'required': ['input', 'cached_input', 'output'], 'properties': {'input': {'type': 'number', 'minimum': 0}, 'output': {'type': 'number', 'minimum': 0}, 'cached_input': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'usage': {'type': 'object', 'required': ['input_tokens', 'output_tokens', 'cached_input_tokens', 'max_input_tokens_per_request'], 'properties': {'input_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, 'output_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, 'cached_input_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, 'max_input_tokens_per_request': {'anyOf': [{'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'pricing': {'type': 'object', 'required': ['identity', 'currency', 'rate_unit', 'rates', 'cache_mode', 'evidence', 'costing_supported', 'unsupported_reason', 'max_input_tokens_per_request'], 'properties': {'rates': {'$ref': '#/$defs/rates'}, 'currency': {'const': 'USD'}, 'evidence': {'$ref': '#/$defs/evidence'}, 'identity': {'$ref': '#/$defs/identity'}, 'rate_unit': {'const': 'per_1000000_tokens'}, 'cache_mode': {'type': 'string'}, 'costing_supported': {'type': 'boolean'}, 'unsupported_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'max_input_tokens_per_request': {'anyOf': [{'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'warning': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'evidence': {'type': 'object', 'required': ['status', 'checked_at', 'valid_until', 'source_urls', 'scope'], 'properties': {'scope': {'type': 'string'}, 'status': {'enum': ['current', 'expired', 'unreviewed'], 'type': 'string'}, 'checked_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}]}, 'source_urls': {'type': 'array', 'items': {'type': 'string', 'format': 'uri'}}, 'valid_until': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'identity': {'type': 'object', 'required': ['model_id', 'label', 'api_model_id', 'provider_id', 'provider_label', 'billing_channel', 'pricing_tier'], 'properties': {'label': {'type': 'string'}, 'model_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'provider_id': {'type': 'string'}, 'api_model_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'pricing_tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'provider_label': {'type': 'string'}, 'billing_channel': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'calculation': {'type': 'object', 'required': ['pricing', 'usage', 'applied_rates', 'costs', 'estimate_type', 'scope_check', 'warnings'], 'properties': {'costs': {'$ref': '#/$defs/costs'}, 'usage': {'$ref': '#/$defs/usage'}, 'pricing': {'$ref': '#/$defs/pricing'}, 'warnings': {'type': 'array', 'items': {'$ref': '#/$defs/warning'}}, 'scope_check': {'enum': ['within_reviewed_limit', 'no_structured_limit'], 'type': 'string'}, 'applied_rates': {'$ref': '#/$defs/rates'}, 'estimate_type': {'const': 'text_token_subtotal'}}, 'additionalProperties': False}}, 'oneOf': [{'type': 'object', 'required': ['ok', 'meta', 'data'], 'properties': {'ok': {'const': True}, 'data': {'type': 'object', 'required': ['results', 'errors', 'partial', 'warnings'], 'properties': {'errors': {'type': 'array', 'items': {'$ref': '#/$defs/error'}, 'maxItems': 20}, 'partial': {'type': 'boolean'}, 'results': {'type': 'array', 'items': {'$ref': '#/$defs/calculation'}, 'maxItems': 20}, 'warnings': {'type': 'array', 'items': {'$ref': '#/$defs/warning'}}}, 'additionalProperties': False}, 'meta': {'$ref': '#/$defs/meta'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['ok', 'meta', 'error', 'errors'], 'properties': {'ok': {'const': False}, 'meta': {'anyOf': [{'$ref': '#/$defs/meta'}, {'type': 'null'}]}, 'error': {'$ref': '#/$defs/error'}, 'errors': {'type': 'array', 'items': {'$ref': '#/$defs/error'}, 'maxItems': 20}}, 'additionalProperties': False}]}
find_cheapest_models
Use when you know your token workload but have not selected offers: rank eligible current reviewed offers by USD text-token subtotal and return their exact IDs. Defaults to standard tariffs. Cheapest means within the eligible catalogue and supplied filters, not best quality or the entire market. Equal token counts do not imply tokenizer equivalence. Excludes cache writes, storage, search, tool fees and taxes; reports exclusion counts. Optional capacity filtering uses reviewed pricing input limits, not full context windows.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['usage'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1, 'description': 'Maximum ranked results to return: 1â\x80\x9320; default 10.'}, 'usage': {'type': 'object', 'required': ['input_tokens', 'output_tokens'], 'properties': {'input_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Total input tokens across the workload, including cached input. For monthly estimates, sum input over all monthly requests.'}, 'output_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Total billable output tokens across the same workload period, including billed reasoning tokens where applicable.'}, 'cached_input_tokens': {'type': 'integer', 'default': 0, 'maximum': 1000000000000, 'minimum': 0, 'description': 'Number of input_tokens expected to be cached, not additional input. Defaults to 0 and must not exceed input_tokens. Cache-write charges are excluded; an unconfirmed cache discount falls back to ordinary input pricing with a warning.'}, 'max_input_tokens_per_request': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Largest full input in any single request, including cached tokens; not the monthly total or average. Provide when a tariff has an input limit so eligibility can be checked.'}}, 'description': 'Token totals for the period or scenario being estimated, not dollars or request counts. Supply input and output separately; cached input is a subset of total input.', 'additionalProperties': False}, 'provider_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Optional exact provider_id returned by list_providers or offer identity. Use to restrict results to one provider; omit for all providers.'}, 'pricing_tier': {'type': 'string', 'default': 'standard', 'maxLength': 200, 'minLength': 1, 'description': 'Optional exact tariff name from offer identity, such as standard or peak. Omit to rank standard tariffs.'}, 'expected_dataset_revision': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$', 'description': 'Optional consistency check: copy meta.dataset_revision from a prior tool response to require the same current pricing snapshot. Omit to use the current snapshot. A mismatch returns DATASET_CHANGED; refresh pricing and retry. This cannot retrieve a historical snapshot.'}, 'min_input_tokens_per_request': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 1, 'description': 'Optional minimum reviewed per-request pricing input limit an offer must support. Unknown or smaller limits are excluded. This is not the model context window and does not replace usage.max_input_tokens_per_request.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$defs': {'meta': {'type': 'object', 'required': ['contract_version', 'dataset_revision', 'dataset_updated_at', 'evaluated_at'], 'properties': {'evaluated_at': {'type': 'string', 'format': 'date-time'}, 'contract_version': {'const': '1.0'}, 'dataset_revision': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$'}, 'dataset_updated_at': {'type': 'string'}}, 'additionalProperties': False}, 'costs': {'type': 'object', 'required': ['uncached_input_usd', 'cached_input_usd', 'input_usd', 'output_usd', 'total_usd'], 'properties': {'input_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'total_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'output_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'cached_input_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}, 'uncached_input_usd': {'type': 'string', 'pattern': '^\\d+\\.\\d{8}$'}}, 'additionalProperties': False}, 'error': {'type': 'object', 'required': ['code', 'message', 'field', 'model_id', 'resolution'], 'properties': {'code': {'enum': ['INVALID_ARGUMENT', 'MODEL_NOT_FOUND', 'PRICE_UNREVIEWED', 'PRICE_EXPIRED', 'SCOPE_REQUIRED', 'SCOPE_EXCEEDED', 'UNSUPPORTED_TARIFF', 'UNSUPPORTED_CACHE', 'CATALOGUE_INCONSISTENT', 'INVALID_CURSOR', 'CURSOR_EXPIRED', 'DATASET_CHANGED', 'NO_COMPARABLE_MODELS', 'DATASET_UNAVAILABLE', 'INTERNAL_ERROR'], 'type': 'string'}, 'field': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'model_id': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}, 'resolution': {'type': 'string'}}, 'additionalProperties': False}, 'rates': {'type': 'object', 'required': ['input', 'cached_input', 'output'], 'properties': {'input': {'type': 'number', 'minimum': 0}, 'output': {'type': 'number', 'minimum': 0}, 'cached_input': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'usage': {'type': 'object', 'required': ['input_tokens', 'output_tokens', 'cached_input_tokens', 'max_input_tokens_per_request'], 'properties': {'input_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, 'output_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, 'cached_input_tokens': {'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, 'max_input_tokens_per_request': {'anyOf': [{'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'pricing': {'type': 'object', 'required': ['identity', 'currency', 'rate_unit', 'rates', 'cache_mode', 'evidence', 'costing_supported', 'unsupported_reason', 'max_input_tokens_per_request'], 'properties': {'rates': {'$ref': '#/$defs/rates'}, 'currency': {'const': 'USD'}, 'evidence': {'$ref': '#/$defs/evidence'}, 'identity': {'$ref': '#/$defs/identity'}, 'rate_unit': {'const': 'per_1000000_tokens'}, 'cache_mode': {'type': 'string'}, 'costing_supported': {'type': 'boolean'}, 'unsupported_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'max_input_tokens_per_request': {'anyOf': [{'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'warning': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'evidence': {'type': 'object', 'required': ['status', 'checked_at', 'valid_until', 'source_urls', 'scope'], 'properties': {'scope': {'type': 'string'}, 'status': {'enum': ['current', 'expired', 'unreviewed'], 'type': 'string'}, 'checked_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}]}, 'source_urls': {'type': 'array', 'items': {'type': 'string', 'format': 'uri'}}, 'valid_until': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'identity': {'type': 'object', 'required': ['model_id', 'label', 'api_model_id', 'provider_id', 'provider_label', 'billing_channel', 'pricing_tier'], 'properties': {'label': {'type': 'string'}, 'model_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'provider_id': {'type': 'string'}, 'api_model_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'pricing_tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'provider_label': {'type': 'string'}, 'billing_channel': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'calculation': {'type': 'object', 'required': ['pricing', 'usage', 'applied_rates', 'costs', 'estimate_type', 'scope_check', 'warnings'], 'properties': {'costs': {'$ref': '#/$defs/costs'}, 'usage': {'$ref': '#/$defs/usage'}, 'pricing': {'$ref': '#/$defs/pricing'}, 'warnings': {'type': 'array', 'items': {'$ref': '#/$defs/warning'}}, 'scope_check': {'enum': ['within_reviewed_limit', 'no_structured_limit'], 'type': 'string'}, 'applied_rates': {'$ref': '#/$defs/rates'}, 'estimate_type': {'const': 'text_token_subtotal'}}, 'additionalProperties': False}}, 'oneOf': [{'type': 'object', 'required': ['ok', 'meta', 'data'], 'properties': {'ok': {'const': True}, 'data': {'type': 'object', 'required': ['results', 'candidate_count', 'eligible_count', 'excluded', 'warnings'], 'properties': {'results': {'type': 'array', 'items': {'$ref': '#/$defs/calculation'}, 'maxItems': 20}, 'excluded': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'count'], 'properties': {'code': {'type': 'string'}, 'count': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}}, 'warnings': {'type': 'array', 'items': {'$ref': '#/$defs/warning'}}, 'eligible_count': {'type': 'integer', 'minimum': 0}, 'candidate_count': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'meta': {'$ref': '#/$defs/meta'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['ok', 'meta', 'error', 'errors'], 'properties': {'ok': {'const': False}, 'meta': {'anyOf': [{'$ref': '#/$defs/meta'}, {'type': 'null'}]}, 'error': {'$ref': '#/$defs/error'}, 'errors': {'type': 'array', 'items': {'$ref': '#/$defs/error'}, 'maxItems': 20}}, 'additionalProperties': False}]}
get_model_pricing
Use after list_models when you need the rates, tariff identity, sources and freshness of one exact offer, without calculating a workload. Supply the returned model_id. Prices are recorded USD text-token rates; expired or unreviewed rates are informational only. Use calculate_cost for a workload estimate.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['model_id'], 'properties': {'model_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact pricing-offer ID returned by list_models or find_cheapest_models. Do not substitute a display name or guessed API model name.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$defs': {'meta': {'type': 'object', 'required': ['contract_version', 'dataset_revision', 'dataset_updated_at', 'evaluated_at'], 'properties': {'evaluated_at': {'type': 'string', 'format': 'date-time'}, 'contract_version': {'const': '1.0'}, 'dataset_revision': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$'}, 'dataset_updated_at': {'type': 'string'}}, 'additionalProperties': False}, 'error': {'type': 'object', 'required': ['code', 'message', 'field', 'model_id', 'resolution'], 'properties': {'code': {'enum': ['INVALID_ARGUMENT', 'MODEL_NOT_FOUND', 'PRICE_UNREVIEWED', 'PRICE_EXPIRED', 'SCOPE_REQUIRED', 'SCOPE_EXCEEDED', 'UNSUPPORTED_TARIFF', 'UNSUPPORTED_CACHE', 'CATALOGUE_INCONSISTENT', 'INVALID_CURSOR', 'CURSOR_EXPIRED', 'DATASET_CHANGED', 'NO_COMPARABLE_MODELS', 'DATASET_UNAVAILABLE', 'INTERNAL_ERROR'], 'type': 'string'}, 'field': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'model_id': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}, 'resolution': {'type': 'string'}}, 'additionalProperties': False}, 'rates': {'type': 'object', 'required': ['input', 'cached_input', 'output'], 'properties': {'input': {'type': 'number', 'minimum': 0}, 'output': {'type': 'number', 'minimum': 0}, 'cached_input': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'pricing': {'type': 'object', 'required': ['identity', 'currency', 'rate_unit', 'rates', 'cache_mode', 'evidence', 'costing_supported', 'unsupported_reason', 'max_input_tokens_per_request'], 'properties': {'rates': {'$ref': '#/$defs/rates'}, 'currency': {'const': 'USD'}, 'evidence': {'$ref': '#/$defs/evidence'}, 'identity': {'$ref': '#/$defs/identity'}, 'rate_unit': {'const': 'per_1000000_tokens'}, 'cache_mode': {'type': 'string'}, 'costing_supported': {'type': 'boolean'}, 'unsupported_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'max_input_tokens_per_request': {'anyOf': [{'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'warning': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'evidence': {'type': 'object', 'required': ['status', 'checked_at', 'valid_until', 'source_urls', 'scope'], 'properties': {'scope': {'type': 'string'}, 'status': {'enum': ['current', 'expired', 'unreviewed'], 'type': 'string'}, 'checked_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}]}, 'source_urls': {'type': 'array', 'items': {'type': 'string', 'format': 'uri'}}, 'valid_until': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'identity': {'type': 'object', 'required': ['model_id', 'label', 'api_model_id', 'provider_id', 'provider_label', 'billing_channel', 'pricing_tier'], 'properties': {'label': {'type': 'string'}, 'model_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'provider_id': {'type': 'string'}, 'api_model_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'pricing_tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'provider_label': {'type': 'string'}, 'billing_channel': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'oneOf': [{'type': 'object', 'required': ['ok', 'meta', 'data'], 'properties': {'ok': {'const': True}, 'data': {'type': 'object', 'required': ['pricing', 'warnings'], 'properties': {'pricing': {'$ref': '#/$defs/pricing'}, 'warnings': {'type': 'array', 'items': {'$ref': '#/$defs/warning'}}}, 'additionalProperties': False}, 'meta': {'$ref': '#/$defs/meta'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['ok', 'meta', 'error', 'errors'], 'properties': {'ok': {'const': False}, 'meta': {'anyOf': [{'$ref': '#/$defs/meta'}, {'type': 'null'}]}, 'error': {'$ref': '#/$defs/error'}, 'errors': {'type': 'array', 'items': {'$ref': '#/$defs/error'}, 'maxItems': 20}}, 'additionalProperties': False}]}
list_models
Use first when you know a model name or provider but need exact pricing-offer IDs for pricing or calculations. Search recorded labels and API IDs; case, spacing and punctuation variants are accepted. Multiple tariffs are returned as separate choices. Defaults to current reviewed offers; check costing_supported before calculating. This discovers pricing offers, not model capability recommendations.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum offers per page to return: 1â\x80\x9350; default 20.'}, 'query': {'type': 'string', 'maxLength': 100, 'description': 'Optional model name, recorded label or API ID to search. Use when the exact offer ID is unknown; omit to browse. Matching tolerates case, spacing and punctuation differences.'}, 'cursor': {'type': 'string', 'maxLength': 2048, 'minLength': 1, 'description': 'Opaque next_cursor returned by list_models. Omit on the first page; on later pages repeat the original filters and limit unchanged. Restart without a cursor if it expires or the dataset changes.'}, 'status': {'enum': ['current', 'expired', 'unreviewed', 'all'], 'type': 'string', 'default': 'current', 'description': 'Use current (default) for reviewed offers. Choose expired, unreviewed or all only to inspect catalogue records; those records may not support calculations.'}, 'provider_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Optional exact provider_id returned by list_providers or offer identity. Use to restrict results to one provider; omit for all providers.'}, 'pricing_tier': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Optional exact tariff name from offer identity, such as standard or peak. Use to restrict results to a tariff; omit to include all tariffs.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$defs': {'meta': {'type': 'object', 'required': ['contract_version', 'dataset_revision', 'dataset_updated_at', 'evaluated_at'], 'properties': {'evaluated_at': {'type': 'string', 'format': 'date-time'}, 'contract_version': {'const': '1.0'}, 'dataset_revision': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$'}, 'dataset_updated_at': {'type': 'string'}}, 'additionalProperties': False}, 'error': {'type': 'object', 'required': ['code', 'message', 'field', 'model_id', 'resolution'], 'properties': {'code': {'enum': ['INVALID_ARGUMENT', 'MODEL_NOT_FOUND', 'PRICE_UNREVIEWED', 'PRICE_EXPIRED', 'SCOPE_REQUIRED', 'SCOPE_EXCEEDED', 'UNSUPPORTED_TARIFF', 'UNSUPPORTED_CACHE', 'CATALOGUE_INCONSISTENT', 'INVALID_CURSOR', 'CURSOR_EXPIRED', 'DATASET_CHANGED', 'NO_COMPARABLE_MODELS', 'DATASET_UNAVAILABLE', 'INTERNAL_ERROR'], 'type': 'string'}, 'field': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'model_id': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}, 'resolution': {'type': 'string'}}, 'additionalProperties': False}, 'summary': {'type': 'object', 'required': ['identity', 'price_status', 'costing_supported', 'unsupported_reason', 'max_input_tokens_per_request'], 'properties': {'identity': {'$ref': '#/$defs/identity'}, 'price_status': {'enum': ['current', 'expired', 'unreviewed'], 'type': 'string'}, 'costing_supported': {'type': 'boolean'}, 'unsupported_reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'max_input_tokens_per_request': {'anyOf': [{'type': 'integer', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'warning': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}, 'identity': {'type': 'object', 'required': ['model_id', 'label', 'api_model_id', 'provider_id', 'provider_label', 'billing_channel', 'pricing_tier'], 'properties': {'label': {'type': 'string'}, 'model_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'provider_id': {'type': 'string'}, 'api_model_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'pricing_tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'provider_label': {'type': 'string'}, 'billing_channel': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'oneOf': [{'type': 'object', 'required': ['ok', 'meta', 'data'], 'properties': {'ok': {'const': True}, 'data': {'type': 'object', 'required': ['models', 'next_cursor', 'warnings'], 'properties': {'models': {'type': 'array', 'items': {'$ref': '#/$defs/summary'}, 'maxItems': 50}, 'warnings': {'type': 'array', 'items': {'$ref': '#/$defs/warning'}}, 'next_cursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'meta': {'$ref': '#/$defs/meta'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['ok', 'meta', 'error', 'errors'], 'properties': {'ok': {'const': False}, 'meta': {'anyOf': [{'$ref': '#/$defs/meta'}, {'type': 'null'}]}, 'error': {'$ref': '#/$defs/error'}, 'errors': {'type': 'array', 'items': {'$ref': '#/$defs/error'}, 'maxItems': 20}}, 'additionalProperties': False}]}
list_providers
Use to discover provider IDs and catalogue coverage before filtering model searches. Returns distinct API model counts, offer counts and current supported input/output rate ranges in USD per million tokens. The two rate minima may belong to different offers. For a workload estimate use find_cheapest_models or calculate_cost; ranges are not capability rankings.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': [], 'properties': {'provider_id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Optional exact provider_id returned by list_providers or offer identity. Use to restrict results to one provider; omit for all providers.'}, 'pricing_tier': {'type': 'string', 'default': 'standard', 'maxLength': 200, 'minLength': 1, 'description': 'Optional exact tariff name from offer identity, such as standard or peak. Use to restrict results to a tariff; omit to include all tariffs.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$defs': {'meta': {'type': 'object', 'required': ['contract_version', 'dataset_revision', 'dataset_updated_at', 'evaluated_at'], 'properties': {'evaluated_at': {'type': 'string', 'format': 'date-time'}, 'contract_version': {'const': '1.0'}, 'dataset_revision': {'type': 'string', 'pattern': '^sha256:[a-f0-9]{64}$'}, 'dataset_updated_at': {'type': 'string'}}, 'additionalProperties': False}, 'error': {'type': 'object', 'required': ['code', 'message', 'field', 'model_id', 'resolution'], 'properties': {'code': {'enum': ['INVALID_ARGUMENT', 'MODEL_NOT_FOUND', 'PRICE_UNREVIEWED', 'PRICE_EXPIRED', 'SCOPE_REQUIRED', 'SCOPE_EXCEEDED', 'UNSUPPORTED_TARIFF', 'UNSUPPORTED_CACHE', 'CATALOGUE_INCONSISTENT', 'INVALID_CURSOR', 'CURSOR_EXPIRED', 'DATASET_CHANGED', 'NO_COMPARABLE_MODELS', 'DATASET_UNAVAILABLE', 'INTERNAL_ERROR'], 'type': 'string'}, 'field': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'model_id': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}, 'resolution': {'type': 'string'}}, 'additionalProperties': False}, 'warning': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'oneOf': [{'type': 'object', 'required': ['ok', 'meta', 'data'], 'properties': {'ok': {'const': True}, 'data': {'type': 'object', 'required': ['providers', 'currency', 'rate_unit', 'warnings'], 'properties': {'currency': {'const': 'USD'}, 'warnings': {'type': 'array', 'items': {'$ref': '#/$defs/warning'}}, 'providers': {'type': 'array', 'items': {'type': 'object', 'required': ['provider_id', 'provider_label', 'model_count', 'offer_count', 'current_offers', 'expired_offers', 'unreviewed_offers', 'costing_supported_offers', 'input_rate_range', 'output_rate_range'], 'properties': {'model_count': {'type': 'integer', 'minimum': 0}, 'offer_count': {'type': 'integer', 'minimum': 0}, 'provider_id': {'type': 'string'}, 'current_offers': {'type': 'integer', 'minimum': 0}, 'expired_offers': {'type': 'integer', 'minimum': 0}, 'provider_label': {'type': 'string'}, 'input_rate_range': {'anyOf': [{'type': 'object', 'required': ['min', 'max'], 'properties': {'max': {'type': 'number', 'minimum': 0}, 'min': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}, 'output_rate_range': {'anyOf': [{'type': 'object', 'required': ['min', 'max'], 'properties': {'max': {'type': 'number', 'minimum': 0}, 'min': {'type': 'number', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}, 'unreviewed_offers': {'type': 'integer', 'minimum': 0}, 'costing_supported_offers': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}}, 'rate_unit': {'const': 'per_1000000_tokens'}}, 'additionalProperties': False}, 'meta': {'$ref': '#/$defs/meta'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['ok', 'meta', 'error', 'errors'], 'properties': {'ok': {'const': False}, 'meta': {'anyOf': [{'$ref': '#/$defs/meta'}, {'type': 'null'}]}, 'error': {'$ref': '#/$defs/error'}, 'errors': {'type': 'array', 'items': {'$ref': '#/$defs/error'}, 'maxItems': 20}}, 'additionalProperties': False}]}
변경됨
list_providers
2026년 9월 30일 2:40 AM
변경됨
find_cheapest_models
2026년 9월 30일 2:40 AM
변경됨
compare_model_costs
2026년 9월 30일 2:40 AM
변경됨
calculate_cost
2026년 9월 30일 2:40 AM
변경됨
get_model_pricing
2026년 9월 30일 2:40 AM
변경됨
list_models
2026년 9월 30일 2:40 AM
추가됨
list_providers
2026년 9월 28일 2:40 AM
추가됨
find_cheapest_models
2026년 9월 28일 2:40 AM
변경됨
list_models
2026년 9월 28일 2:40 AM
추가됨
compare_model_costs
2026년 9월 26일 2:40 AM
추가됨
calculate_cost
2026년 9월 26일 2:40 AM
추가됨
get_model_pricing
2026년 9월 26일 2:40 AM
추가됨
list_models
2026년 9월 26일 2:40 AM