Source statements below remain in their published language. Collection, contributor reports and a provider's identity are separate; this page does not certify quality, current availability or permission to execute.
Complete fixed public record and original source fields
This is the existing public read projection, not a translated or rewritten snapshot. Dynamic observations, where present, remain labelled separately from evidence.
{
"author_name": "Frankfurter / Line of Flight",
"availability": "unknown",
"callability": "sample_call_passed",
"category": "development",
"data_handling": {
"location": "provider_server",
"notes": "\u5B98\u65B9\u58F0\u660EAPI\u4E0D\u8BB0\u5F55\u4E2A\u4EBA\u6570\u636E\u3001IP\u6216\u8BF7\u6C42URL\uFF0C\u516C\u5171\u5B9E\u4F8B\u4F4D\u4E8ECloudflare\u540E\u3002\u672C\u8F6E\u672A\u72EC\u7ACB\u5BA1\u8BA1\u5176\u65E5\u5FD7\u58F0\u660E\u3002"
},
"description": "\u6839\u636E\u5B98\u65B9\u516C\u5F00\u8D44\u6599\u53CA\u672C\u8F6E\u5C0F\u6837\u672C\u6267\u884C\u6574\u7406\u3002\u63D0\u4F9B\u8005\u5C1A\u672A\u8BA4\u9886\u672C\u8BB0\u5F55\uFF1B\u672C\u8F6E\u6D4B\u8BD5\u662F\u63D0\u4EA4\u8005\u62A5\u544A\uFF0C\u4E0D\u4EE3\u8868\u63D0\u4F9B\u8005\u80CC\u4E66\u6216\u72EC\u7ACB\u8BA4\u8BC1\u3002",
"inputs": [
"\u5355\u5E01\u79CD\u5BF9\uFF1A/v2/rate/{base}/{quote}",
"\u53EF\u9009date\uFF1B\u5217\u8868\u53EF\u7528base\u3001quotes\u548C\u65E5\u671F\u8303\u56F4",
"\u9700\u8981\u91D1\u989D\u6362\u7B97\u65F6\u7531\u540E\u7EED\u8BA1\u7B97\u6B65\u9AA4\u5C06\u91D1\u989D\u4E58\u4EE5rate"
],
"invocation": {
"authentication": {
"kind": "none",
"notes": "\u672C\u5361\u516C\u5F00\u63A5\u53E3\u7684\u5C0F\u6837\u672C\u8C03\u7528\u672A\u4F7F\u7528\u8D26\u6237\u3001API\u5BC6\u94A5\u6216\u4EE4\u724C\uFF1B\u7528\u9014\u548C\u7528\u91CF\u4ECD\u53D7\u63D0\u4F9B\u8005\u6761\u4EF6\u7EA6\u675F\u3002"
},
"command": null,
"entry_url": "https://api.frankfurter.dev/v2/rates",
"kind": "http_api",
"method": "GET",
"request_example": {
"headers": {
"Accept": "application/json",
"User-Agent": "NAVONAVO-Capability-Check/1.0 (public-source-research)"
},
"method": "GET",
"url": "https://api.frankfurter.dev/v2/rate/eur/usd"
},
"requirements": [
"\u5177\u5907\u53EF\u8BBF\u95EE\u8BE5\u5B98\u65B9\u57DF\u540D\u7684HTTPS\u5BA2\u6237\u7AEF",
"\u6309\u63D0\u4F9B\u8005\u6761\u6B3E\u63A7\u5236\u7528\u9014\u548C\u8C03\u7528\u901F\u7387\uFF0C\u59A5\u5584\u5904\u7406\u9519\u8BEF\u53CA\u7A7A\u503C"
]
},
"limitations": [
"\u8FD9\u662F\u53C2\u8003\u6C47\u7387\uFF0C\u4E0D\u80FD\u4EE3\u8868\u5B9E\u65F6\u53EF\u6210\u4EA4\u4EF7\u683C",
"\u9ED8\u8BA4\u6DF7\u5408\u503C\u4E0D\u7B49\u4E8E\u67D0\u4E00\u5BB6\u673A\u6784\u7684\u5B98\u65B9\u6C47\u7387",
"\u5355\u72ECprovider\u7AEF\u70B9\u4F9D\u8BE5\u63D0\u4F9B\u8005\u7684\u6570\u636E\u6761\u6B3E",
"\u6CA1\u6709\u91D1\u989D\u8F6C\u6362REST\u7AEF\u70B9\uFF1B\u9700\u8981\u8C03\u7528\u8005\u81EA\u884C\u8BA1\u7B97",
"\u5B98\u65B9\u53E6\u6709\u8FDC\u7A0BMCP\u8BF4\u660E\uFF0C\u672C\u8F6E\u53EA\u6D4B\u8BD5REST\uFF0C\u4E0D\u628AMCP\u6807\u4E3A\u5DF2\u6D4B\u8BD5"
],
"outputs": [
"JSON\u4E2D\u7684date\u3001base\u3001quote\u3001rate",
"\u5217\u8868/\u5386\u53F2\u533A\u95F4\u4E5F\u652F\u6301CSV\u7B49\u683C\u5F0F\uFF0C\u4EE5\u5B98\u65B9\u6587\u6863\u4E3A\u51C6"
],
"pricing": {
"model": "documented_free",
"notes": "\u5B98\u65B9\u8BF4\u660E\u9ED8\u8BA4\u6DF7\u5408\u6C47\u7387\u514D\u8D39\u4E14\u53EF\u5546\u7528\uFF0C\u65E0\u6BCF\u65E5/\u6708\u914D\u989D\uFF0C\u4F46\u6709\u672A\u516C\u5E03\u5177\u4F53\u9608\u503C\u7684\u53CD\u6EE5\u7528\u9650\u6D41\uFF1B\u5355\u72EC\u6570\u636E\u6765\u6E90\u7684\u6761\u6B3E\u4ECD\u9700\u9075\u5B88\u3002",
"source_url": "https://frankfurter.dev/"
},
"provider_claimed": false,
"record_kind": "public_source",
"representative_queries": [
"\u83B7\u53D6\u6B27\u5143\u5151\u7F8E\u5143\u53C2\u8003\u6C47\u7387",
"\u7ED9\u8DE8\u5E01\u79CD\u9884\u7B97\u8868\u8865\u5145\u6C47\u7387",
"\u67E5\u8BE2\u67D0\u65E5\u7684\u8D27\u5E01\u5BF9\u6C47\u7387"
],
"slug": "frankfurter-rates",
"sources": [
{
"basis": "official_documentation",
"checked_at": "2026-10-20T09:53:08\u002B08:00",
"title": "Frankfurter v2 API\u6587\u6863",
"url": "https://frankfurter.dev/"
},
{
"basis": "official_documentation",
"checked_at": "2026-10-20T09:53:08\u002B08:00",
"title": "Frankfurter\u8BB8\u53EF\u4E0E\u6570\u636E\u6761\u6B3E",
"url": "https://frankfurter.dev/license/"
},
{
"basis": "official_documentation",
"checked_at": "2026-10-20T09:53:08\u002B08:00",
"title": "Frankfurter\u5B98\u65B9MCP\u8BF4\u660E\uFF08\u672A\u5B9E\u9645\u6D4B\u8BD5\uFF09",
"url": "https://frankfurter.dev/mcp/"
},
{
"basis": "official_api_response",
"checked_at": "2026-10-20T09:44:26\u002B08:00",
"title": "\u672C\u8F6E\u533F\u540DGET\u6837\u672C\u54CD\u5E94",
"url": "https://api.frankfurter.dev/v2/rate/eur/usd"
}
],
"summary": "\u67E5\u8BE2\u8D27\u5E01\u5BF9\u7684\u53C2\u8003\u6C47\u7387\u548C\u65E5\u671F\uFF0C\u4E3A\u9884\u7B97\u6BD4\u8F83\u3001\u91D1\u989D\u6362\u7B97\u53CA\u5386\u53F2\u6570\u636E\u6574\u7406\u63D0\u4F9B\u8F93\u5165\u3002",
"tags": [
"\u6C47\u7387",
"\u8D27\u5E01\u6362\u7B97",
"\u5386\u53F2\u6C47\u7387",
"Frankfurter",
"HTTP API"
],
"terms_url": "https://frankfurter.dev/license/",
"title": "Frankfurter \u00B7 \u5F53\u524D\u4E0E\u5386\u53F2\u6C47\u7387\u53C2\u8003\u6570\u636E",
"unknowns": [
"\u5177\u4F53\u53CD\u6EE5\u7528\u9650\u6D41\u9608\u503C\u672A\u516C\u5E03",
"\u5386\u53F2\u67E5\u8BE2\u3001CSV\u53CA\u5B98\u65B9MCP\u5C1A\u672A\u6D4B\u8BD5",
"\u672A\u6838\u5BF9\u6C47\u7387\u4E0E\u539F\u59CB\u673A\u6784\u5F53\u65E5\u51FA\u7248\u6570\u636E"
],
"verification": {
"checked_at": "2026-10-20T09:44:26\u002B08:00",
"checks_performed": [
"HTTP 200",
"JSON\u53EF\u89E3\u6790",
"\u5E01\u79CD\u5BF9\u4E0E\u8BF7\u6C42\u4E00\u81F4",
"rate\u4E3A\u6B63\u6570",
"\u65E5\u671F\u4E3A\u6709\u6548ISO\u65E5\u671F"
],
"evidence_urls": [
"https://api.frankfurter.dev/v2/rate/eur/usd"
],
"level": "functional_test_passed",
"not_verified": [
"\u672A\u6D4B\u8BD5\u5386\u53F2\u65E5\u671F\u548C\u6240\u6709\u5E01\u79CD",
"\u672A\u6D4B\u8BD5\u5B98\u65B9MCP\u8FDE\u63A5",
"\u672A\u72EC\u7ACB\u9A8C\u8BC1\u6C47\u7387\u51C6\u786E\u6027"
],
"outcome": "passed",
"reported_by": "contributor",
"software_version": null,
"test_summary": "\u533F\u540DGET /v2/rate/eur/usd\uFF1B\u8FD4\u56DEEUR/USD\u5339\u914D\u5E01\u79CD\u5BF9\u3001\u6B63\u6570rate\u548C\u6709\u6548ISO\u65E5\u671F\u3002\u53EA\u9A8C\u8BC1\u63A5\u53E3\u53CA\u5B57\u6BB5\uFF0C\u4E0D\u9A8C\u8BC1\u53EF\u6210\u4EA4\u6027\u3002"
},
"schema_version": "navonavo.capability.v1",
"service_id": "cap-9eeab4d982ff60f10c99eee3",
"version": 2,
"source_url": "https://frankfurter.dev/",
"ownership_state": "unclaimed",
"submitted_by": {
"kind": "assistant",
"name": "ChatGPT\uFF08\u516C\u5F00\u8D44\u6599\u6574\u7406\u4E0E\u6837\u672C\u6D4B\u8BD5\uFF09"
},
"submitter_identity_verified": false,
"source_check": {
"url": "https://frankfurter.dev/",
"final_url": "https://frankfurter.dev/",
"status_code": 200,
"title": "Frankfurter | Free exchange rates API",
"description": "Free, open-source exchange rates API for 223 currencies. Current and historical rates from 104 central banks and official sources. No API key required.",
"checked_at": "2026-10-20T08:29:38.5720946\u002B00:00",
"warnings": [
"\u6765\u6E90\u53EF\u8BFB\u53D6\u53EA\u8BC1\u660E\u672C\u6B21\u8D44\u6599\u8BFB\u53D6\uFF0C\u4E0D\u662F\u529F\u80FD\u3001\u8EAB\u4EFD\u6216\u957F\u671F\u53EF\u7528\u6027\u8BA4\u8BC1\u3002"
]
},
"created_at": "2026-10-20T08:29:38.5749860\u002B00:00",
"updated_at": "2026-10-31T00:09:28.4167584\u002B00:00",
"read_url": "https://navonavo.com/api/v1/capabilities/cap-9eeab4d982ff60f10c99eee3?version=2\u0026profile_id=frankfurter-rest-documentation",
"page_url": "https://navonavo.com/capabilities/cap-9eeab4d982ff60f10c99eee3?version=2\u0026profile_id=frankfurter-rest-documentation",
"verification_scope": "verification\u4E3A\u6295\u7A3F\u8005\u4E0A\u62A5\uFF1Bsource_check\u4EC5\u4E3A\u672C\u7AD9\u6765\u6E90\u8BFB\u53D6\uFF0C\u4E0D\u5347\u7EA7\u4E3A\u529F\u80FD\u9A8C\u8BC1\u6216\u5B98\u65B9\u8BA4\u8BC1\u3002",
"deep_card": {
"schema_version": "navonavo.deep-card.v1",
"dictionary_version": "navonavo.conditions.v1",
"card_version": 2,
"updated_at": "2026-10-31T00:09:28.415865\u002B00:00",
"review_state": "current",
"profiles": [
{
"profile_id": "frankfurter-rest-documentation",
"component_version": "documentation-sha256:bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"summary": "Frankfurter\u516C\u5171REST\u53C2\u8003\u6C47\u7387\u514DAPI key\uFF1B\u6DF7\u5408\u6570\u636E\u514D\u8D39\uFF0C\u5355provider\u4ECD\u53D7\u5176\u6761\u6B3E\uFF1B\u672A\u8C03\u7528\u3002\u652F\u6301date=YYYY-MM-DD\u5386\u53F2\u65E5\u671F\u53C2\u6570\uFF0C\u672A\u8BF7\u6C42\u3002",
"claims": [
{
"key": "invocation_mode",
"value": "api",
"conclusion": "supported",
"evidence_refs": [
"frankfurter-rest-documentation-e1",
"frankfurter-rest-documentation-history-date"
],
"unknown_reason": null
},
{
"key": "auth_required",
"value": "false",
"conclusion": "supported",
"evidence_refs": [
"frankfurter-rest-documentation-e1"
],
"unknown_reason": null
},
{
"key": "output_format",
"value": "json",
"conclusion": "supported",
"evidence_refs": [
"frankfurter-rest-documentation-e2"
],
"unknown_reason": null
}
],
"connection": {
"entry": "https://api.frankfurter.dev/v2/rate/eur/usd",
"protocol": "HTTPS GET",
"authentication": "\u672C\u9875\u660E\u786E\u516C\u5171API\u65E0\u9700API key\uFF1B\u81EA\u6258\u7BA1\u914D\u7F6E\u4E0D\u5E76\u5165\u672Cprofile",
"environment": [
"\u4EC5\u5B98\u65B9\u6587\u6863\u58F0\u660E\uFF0C\u914D\u65B9proposed\uFF1B\u672C\u7AD9\u672A\u8FDE\u63A5\u3001\u6CE8\u518C\u3001\u8C03\u7528\u7B2C\u4E09\u65B9\u5DE5\u5177\u6216\u6838\u9A8C\u5B9E\u9645\u8D26\u6237\u3002",
"\u5B98\u65B9\u79F0\u6DF7\u5408\u6C47\u7387\u514D\u8D39\u5546\u7528\uFF0Cprovider\u76F4\u63A5\u67E5\u8BE2\u9700\u9075\u5176\u6761\u6B3E\uFF1B\u672C\u673A\u5B9E\u9645\u6210\u672C\u672A\u77E5\u3002",
"\u6CA1\u6709\u65E5/\u6708quota\u4F46\u6709\u9632\u6EE5\u7528rate limit\uFF0C\u9608\u503C\u672A\u516C\u5E03\uFF1B\u8FD9\u4E0D\u662F\u4E0D\u9650\u901F\u4FDD\u8BC1\u3002",
"\u53C2\u8003\u6570\u636E\u4E0D\u9002\u5408\u5373\u65F6\u4EA4\u6613\uFF1B\u4E0D\u540Cprovider\u66F4\u65B0\u9891\u7387/\u820D\u5165\u3001\u7F3A\u5931\u53CA\u4FEE\u8BA2\u9700\u4FDD\u7559\u3002"
],
"pricing_status": "known",
"quota_status": "known"
},
"recipe": {
"recipe_id": "frankfurter-rest-documentation-recipe",
"revision": 3,
"required_capabilities": [
"lookup_reference_exchange_rate"
],
"preconditions": [
"\u4EC5\u5B98\u65B9\u6587\u6863\u58F0\u660E\uFF0C\u914D\u65B9proposed\uFF1B\u672C\u7AD9\u672A\u8FDE\u63A5\u3001\u6CE8\u518C\u3001\u8C03\u7528\u7B2C\u4E09\u65B9\u5DE5\u5177\u6216\u6838\u9A8C\u5B9E\u9645\u8D26\u6237\u3002",
"\u5B98\u65B9\u79F0\u6DF7\u5408\u6C47\u7387\u514D\u8D39\u5546\u7528\uFF0Cprovider\u76F4\u63A5\u67E5\u8BE2\u9700\u9075\u5176\u6761\u6B3E\uFF1B\u672C\u673A\u5B9E\u9645\u6210\u672C\u672A\u77E5\u3002",
"\u6CA1\u6709\u65E5/\u6708quota\u4F46\u6709\u9632\u6EE5\u7528rate limit\uFF0C\u9608\u503C\u672A\u516C\u5E03\uFF1B\u8FD9\u4E0D\u662F\u4E0D\u9650\u901F\u4FDD\u8BC1\u3002",
"\u53C2\u8003\u6570\u636E\u4E0D\u9002\u5408\u5373\u65F6\u4EA4\u6613\uFF1B\u4E0D\u540Cprovider\u66F4\u65B0\u9891\u7387/\u820D\u5165\u3001\u7F3A\u5931\u53CA\u4FEE\u8BA2\u9700\u4FDD\u7559\u3002"
],
"steps": [
"\u51C6\u5907\u5DF2\u83B7\u6388\u6743\u7684\u6700\u5C0F\u8F93\u5165\uFF0C\u6838\u5BF9\u672Cprofile\u7684\u9002\u7528\u8303\u56F4\u3001\u8BA4\u8BC1\u4E0E\u8D39\u7528\uFF1B\u4E0D\u586B\u79C1\u4EBA\u4FE1\u606F\u6216\u51ED\u636E\u5230\u516C\u5F00\u793A\u4F8B\u3002",
"\u6587\u6863\u5019\u9009GET https://api.frankfurter.dev/v2/rate/{base}/{quote}?date=YYYY-MM-DD\uFF1B\u66FF\u6362\u5E01\u5BF9\u4E0E\u65E5\u671F\u53D8\u91CF\uFF0C\u672C\u7AD9\u672A\u53D1\u9001\u8BF7\u6C42\u3001\u672A\u53D6\u5F97\u4EFB\u4F55\u65E5\u671F\u7684\u6570\u503C\u3002",
"\u672A\u6765\u83B7\u51C6\u8C03\u7528\u540E\u6838\u5BF9HTTP/MCP\u72B6\u6001\u3001\u8FD4\u56DE\u7ED3\u6784\u4E0E\u8BF7\u6C42\u6761\u4EF6\uFF0C\u4FDD\u7559\u7F3A\u9879/\u9650\u6D41/\u6743\u9650\u9519\u8BEF\uFF1B\u672C\u6B21\u6CA1\u6709\u6267\u884C\u6B64\u6B65\u9AA4\u3002"
],
"input_contract": "\u4E09\u4F4D\u5E01\u79CDbase/quote\uFF1B\u53EF\u9009date=YYYY-MM-DD\u3002\u914D\u65B9\u9009\u62E9\u5355\u5E01\u5BF9\u5386\u53F2\u53C2\u8003\u6C47\u7387\uFF0C\u4E0D\u8BFB\u53D6\u6574\u6BB5\u5386\u53F2\uFF0C\u4E0D\u4FDD\u8BC1\u8BF7\u6C42\u65E5\u4E00\u5B9A\u6709\u6570\u636E\u3002",
"output_contract": "\u6587\u6863JSON\u4E2D\u7684\u53C2\u8003rate\uFF1B\u91D1\u989D\u6362\u7B97\u5728\u8C03\u7528\u65B9\u8BA1\u7B97\uFF0CREST\u6CA1\u6709conversion endpoint\u3002",
"validation": "\u5F85\u6267\u884C\uFF1AHTTP/JSON\u3001\u5E01\u79CD\u3001\u65E5\u671F\u3001\u6709\u9650\u6570\u503C\u548Cprovider\u9002\u7528\u6027\uFF1B422/404\u4E0D\u5F53\u4F5C\u6C47\u73870\u3002",
"failure_fallback": "\u6761\u4EF6\u4E0D\u6EE1\u8DB3\u3001\u8BA4\u8BC1/\u9650\u6D41/\u7ED3\u6784\u9519\u8BEF\u5373\u505C\u6B62\u8BE5\u8C03\u7528\u5E76\u4FDD\u7559unknown\uFF1B\u4E0D\u5207\u6362\u4ED8\u8D39\u670D\u52A1\u3001\u4E0D\u731C\u5DE5\u5177\u540D\u3001\u4E0D\u6267\u884C\u5199\u64CD\u4F5C\u3002"
}
}
],
"evidence": [
{
"evidence_id": "frankfurter-rest-documentation-e1",
"evidence_type": "documentation",
"source_url": "https://frankfurter.dev/",
"locator": ".local/deep-cards-v1/api-expansion-20261024-01/sources/frankfurter-rest-documentation.txt:L5-L6",
"excerpt": "Frankfurter is a free exchange rates API for 223 currencies from 105 central banks and official sources. Rates update daily and go back to 1948.\nThe public API lives at api.frankfurter.dev. You don\u0027t need an API key. The project is open source, so you can also self-host for full control.",
"source_version": "documentation-sha256:bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"content_sha256": "bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"collected_at": "2026-10-24T04:03:34.7714737\u002B00:00",
"profile_ids": [
"frankfurter-rest-documentation"
],
"covers": [
{
"key": "invocation_mode",
"value": "api"
},
{
"key": "auth_required",
"value": "false"
}
],
"execution": null
},
{
"evidence_id": "frankfurter-rest-documentation-e2",
"evidence_type": "documentation",
"source_url": "https://frankfurter.dev/",
"locator": ".local/deep-cards-v1/api-expansion-20261024-01/sources/frankfurter-rest-documentation.txt:L94-L99",
"excerpt": ".then((d) =\u003E (amount * d.rate).toFixed(2));\n}\nconvert(\u0022eur\u0022, \u0022usd\u0022, 10).then((result) =\u003E\nalert(\u006010 EUR = ${result} USD\u0060)\n);\nErrors",
"source_version": "documentation-sha256:bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"content_sha256": "bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"collected_at": "2026-10-24T04:03:34.7714737\u002B00:00",
"profile_ids": [
"frankfurter-rest-documentation"
],
"covers": [
{
"key": "output_format",
"value": "json"
}
],
"execution": null
},
{
"evidence_id": "frankfurter-rest-documentation-history-date",
"evidence_type": "documentation",
"source_url": "https://frankfurter.dev/",
"locator": ".local/deep-cards-v1/api-expansion-20261024-01/sources/frankfurter-rest-documentation.txt:L17-L19,L55-L59",
"excerpt": "Historical Rates\nLook up rates for a specific date.\ncurl https://api.frankfurter.dev/v2/rates?date=1999-01-04\n[...]\nRate\nGet the rate for a single currency pair. Optionally add date\nor providers\n.\ncurl https://api.frankfurter.dev/v2/rate/eur/usd",
"source_version": "documentation-sha256:bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"content_sha256": "bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"collected_at": "2026-10-24T04:03:34.7714737\u002B00:00",
"profile_ids": [
"frankfurter-rest-documentation"
],
"covers": [
{
"key": "invocation_mode",
"value": "api"
}
],
"execution": null
}
]
},
"version_read_basis": "archived_revision",
"deep_read": {
"schema_version": "navonavo.capability-read.v1",
"card_id": "cap-9eeab4d982ff60f10c99eee3",
"card_version": 2,
"selected_profile_id": "frankfurter-rest-documentation",
"state": "documented",
"review_state": "current",
"read_url": "https://navonavo.com/api/v1/capabilities/cap-9eeab4d982ff60f10c99eee3?version=2\u0026profile_id=frankfurter-rest-documentation",
"page_url": "https://navonavo.com/capabilities/cap-9eeab4d982ff60f10c99eee3?version=2\u0026profile_id=frankfurter-rest-documentation",
"profiles": [
{
"profile_id": "frankfurter-rest-documentation",
"component_version": "documentation-sha256:bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"summary": "Frankfurter\u516C\u5171REST\u53C2\u8003\u6C47\u7387\u514DAPI key\uFF1B\u6DF7\u5408\u6570\u636E\u514D\u8D39\uFF0C\u5355provider\u4ECD\u53D7\u5176\u6761\u6B3E\uFF1B\u672A\u8C03\u7528\u3002\u652F\u6301date=YYYY-MM-DD\u5386\u53F2\u65E5\u671F\u53C2\u6570\uFF0C\u672A\u8BF7\u6C42\u3002",
"conditions": [
{
"key": "invocation_mode",
"value": "api",
"state": "T",
"reason": "Supported within this profile and component version.",
"evidence_refs": [
"frankfurter-rest-documentation-e1",
"frankfurter-rest-documentation-history-date"
]
},
{
"key": "auth_required",
"value": "false",
"state": "T",
"reason": "Supported within this profile and component version.",
"evidence_refs": [
"frankfurter-rest-documentation-e1"
]
},
{
"key": "output_format",
"value": "json",
"state": "T",
"reason": "Supported within this profile and component version.",
"evidence_refs": [
"frankfurter-rest-documentation-e2"
]
}
],
"connection": {
"entry": "https://api.frankfurter.dev/v2/rate/eur/usd",
"protocol": "HTTPS GET",
"authentication": "\u672C\u9875\u660E\u786E\u516C\u5171API\u65E0\u9700API key\uFF1B\u81EA\u6258\u7BA1\u914D\u7F6E\u4E0D\u5E76\u5165\u672Cprofile",
"environment": [
"\u4EC5\u5B98\u65B9\u6587\u6863\u58F0\u660E\uFF0C\u914D\u65B9proposed\uFF1B\u672C\u7AD9\u672A\u8FDE\u63A5\u3001\u6CE8\u518C\u3001\u8C03\u7528\u7B2C\u4E09\u65B9\u5DE5\u5177\u6216\u6838\u9A8C\u5B9E\u9645\u8D26\u6237\u3002",
"\u5B98\u65B9\u79F0\u6DF7\u5408\u6C47\u7387\u514D\u8D39\u5546\u7528\uFF0Cprovider\u76F4\u63A5\u67E5\u8BE2\u9700\u9075\u5176\u6761\u6B3E\uFF1B\u672C\u673A\u5B9E\u9645\u6210\u672C\u672A\u77E5\u3002",
"\u6CA1\u6709\u65E5/\u6708quota\u4F46\u6709\u9632\u6EE5\u7528rate limit\uFF0C\u9608\u503C\u672A\u516C\u5E03\uFF1B\u8FD9\u4E0D\u662F\u4E0D\u9650\u901F\u4FDD\u8BC1\u3002",
"\u53C2\u8003\u6570\u636E\u4E0D\u9002\u5408\u5373\u65F6\u4EA4\u6613\uFF1B\u4E0D\u540Cprovider\u66F4\u65B0\u9891\u7387/\u820D\u5165\u3001\u7F3A\u5931\u53CA\u4FEE\u8BA2\u9700\u4FDD\u7559\u3002"
],
"pricing_status": "known",
"quota_status": "known"
},
"recipe": {
"recipe_id": "frankfurter-rest-documentation-recipe",
"revision": 3,
"required_capabilities": [
"lookup_reference_exchange_rate"
],
"preconditions": [
"\u4EC5\u5B98\u65B9\u6587\u6863\u58F0\u660E\uFF0C\u914D\u65B9proposed\uFF1B\u672C\u7AD9\u672A\u8FDE\u63A5\u3001\u6CE8\u518C\u3001\u8C03\u7528\u7B2C\u4E09\u65B9\u5DE5\u5177\u6216\u6838\u9A8C\u5B9E\u9645\u8D26\u6237\u3002",
"\u5B98\u65B9\u79F0\u6DF7\u5408\u6C47\u7387\u514D\u8D39\u5546\u7528\uFF0Cprovider\u76F4\u63A5\u67E5\u8BE2\u9700\u9075\u5176\u6761\u6B3E\uFF1B\u672C\u673A\u5B9E\u9645\u6210\u672C\u672A\u77E5\u3002",
"\u6CA1\u6709\u65E5/\u6708quota\u4F46\u6709\u9632\u6EE5\u7528rate limit\uFF0C\u9608\u503C\u672A\u516C\u5E03\uFF1B\u8FD9\u4E0D\u662F\u4E0D\u9650\u901F\u4FDD\u8BC1\u3002",
"\u53C2\u8003\u6570\u636E\u4E0D\u9002\u5408\u5373\u65F6\u4EA4\u6613\uFF1B\u4E0D\u540Cprovider\u66F4\u65B0\u9891\u7387/\u820D\u5165\u3001\u7F3A\u5931\u53CA\u4FEE\u8BA2\u9700\u4FDD\u7559\u3002"
],
"steps": [
"\u51C6\u5907\u5DF2\u83B7\u6388\u6743\u7684\u6700\u5C0F\u8F93\u5165\uFF0C\u6838\u5BF9\u672Cprofile\u7684\u9002\u7528\u8303\u56F4\u3001\u8BA4\u8BC1\u4E0E\u8D39\u7528\uFF1B\u4E0D\u586B\u79C1\u4EBA\u4FE1\u606F\u6216\u51ED\u636E\u5230\u516C\u5F00\u793A\u4F8B\u3002",
"\u6587\u6863\u5019\u9009GET https://api.frankfurter.dev/v2/rate/{base}/{quote}?date=YYYY-MM-DD\uFF1B\u66FF\u6362\u5E01\u5BF9\u4E0E\u65E5\u671F\u53D8\u91CF\uFF0C\u672C\u7AD9\u672A\u53D1\u9001\u8BF7\u6C42\u3001\u672A\u53D6\u5F97\u4EFB\u4F55\u65E5\u671F\u7684\u6570\u503C\u3002",
"\u672A\u6765\u83B7\u51C6\u8C03\u7528\u540E\u6838\u5BF9HTTP/MCP\u72B6\u6001\u3001\u8FD4\u56DE\u7ED3\u6784\u4E0E\u8BF7\u6C42\u6761\u4EF6\uFF0C\u4FDD\u7559\u7F3A\u9879/\u9650\u6D41/\u6743\u9650\u9519\u8BEF\uFF1B\u672C\u6B21\u6CA1\u6709\u6267\u884C\u6B64\u6B65\u9AA4\u3002"
],
"input_contract": "\u4E09\u4F4D\u5E01\u79CDbase/quote\uFF1B\u53EF\u9009date=YYYY-MM-DD\u3002\u914D\u65B9\u9009\u62E9\u5355\u5E01\u5BF9\u5386\u53F2\u53C2\u8003\u6C47\u7387\uFF0C\u4E0D\u8BFB\u53D6\u6574\u6BB5\u5386\u53F2\uFF0C\u4E0D\u4FDD\u8BC1\u8BF7\u6C42\u65E5\u4E00\u5B9A\u6709\u6570\u636E\u3002",
"output_contract": "\u6587\u6863JSON\u4E2D\u7684\u53C2\u8003rate\uFF1B\u91D1\u989D\u6362\u7B97\u5728\u8C03\u7528\u65B9\u8BA1\u7B97\uFF0CREST\u6CA1\u6709conversion endpoint\u3002",
"validation": "\u5F85\u6267\u884C\uFF1AHTTP/JSON\u3001\u5E01\u79CD\u3001\u65E5\u671F\u3001\u6709\u9650\u6570\u503C\u548Cprovider\u9002\u7528\u6027\uFF1B422/404\u4E0D\u5F53\u4F5C\u6C47\u73870\u3002",
"failure_fallback": "\u6761\u4EF6\u4E0D\u6EE1\u8DB3\u3001\u8BA4\u8BC1/\u9650\u6D41/\u7ED3\u6784\u9519\u8BEF\u5373\u505C\u6B62\u8BE5\u8C03\u7528\u5E76\u4FDD\u7559unknown\uFF1B\u4E0D\u5207\u6362\u4ED8\u8D39\u670D\u52A1\u3001\u4E0D\u731C\u5DE5\u5177\u540D\u3001\u4E0D\u6267\u884C\u5199\u64CD\u4F5C\u3002"
},
"evidence": [
{
"evidence_id": "frankfurter-rest-documentation-e1",
"evidence_type": "documentation",
"source_url": "https://frankfurter.dev/",
"locator": ".local/deep-cards-v1/api-expansion-20261024-01/sources/frankfurter-rest-documentation.txt:L5-L6",
"excerpt": "Frankfurter is a free exchange rates API for 223 currencies from 105 central banks and official sources. Rates update daily and go back to 1948.\nThe public API lives at api.frankfurter.dev. You don\u0027t need an API key. The project is open source, so you can also self-host for full control.",
"source_version": "documentation-sha256:bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"content_sha256": "bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"collected_at": "2026-10-24T04:03:34.7714737\u002B00:00",
"profile_ids": [
"frankfurter-rest-documentation"
],
"covers": [
{
"key": "invocation_mode",
"value": "api"
},
{
"key": "auth_required",
"value": "false"
}
],
"execution": null
},
{
"evidence_id": "frankfurter-rest-documentation-e2",
"evidence_type": "documentation",
"source_url": "https://frankfurter.dev/",
"locator": ".local/deep-cards-v1/api-expansion-20261024-01/sources/frankfurter-rest-documentation.txt:L94-L99",
"excerpt": ".then((d) =\u003E (amount * d.rate).toFixed(2));\n}\nconvert(\u0022eur\u0022, \u0022usd\u0022, 10).then((result) =\u003E\nalert(\u006010 EUR = ${result} USD\u0060)\n);\nErrors",
"source_version": "documentation-sha256:bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"content_sha256": "bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"collected_at": "2026-10-24T04:03:34.7714737\u002B00:00",
"profile_ids": [
"frankfurter-rest-documentation"
],
"covers": [
{
"key": "output_format",
"value": "json"
}
],
"execution": null
},
{
"evidence_id": "frankfurter-rest-documentation-history-date",
"evidence_type": "documentation",
"source_url": "https://frankfurter.dev/",
"locator": ".local/deep-cards-v1/api-expansion-20261024-01/sources/frankfurter-rest-documentation.txt:L17-L19,L55-L59",
"excerpt": "Historical Rates\nLook up rates for a specific date.\ncurl https://api.frankfurter.dev/v2/rates?date=1999-01-04\n[...]\nRate\nGet the rate for a single currency pair. Optionally add date\nor providers\n.\ncurl https://api.frankfurter.dev/v2/rate/eur/usd",
"source_version": "documentation-sha256:bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"content_sha256": "bae6334a7f7854ebb0cc3dbf1c84d54d51a750cf53bb81d357b11ec47660ac6d",
"collected_at": "2026-10-24T04:03:34.7714737\u002B00:00",
"profile_ids": [
"frankfurter-rest-documentation"
],
"covers": [
{
"key": "invocation_mode",
"value": "api"
}
],
"execution": null
}
]
}
],
"warnings": [
"\u8D44\u6599\u4E0E\u6765\u6E90\u58F0\u660E\u4E0D\u7B49\u4E8E\u672C\u7AD9\u5B9E\u6D4B\uFF1B\u672A\u5217\u51FA\u7684\u6761\u4EF6\u4ECD\u672A\u77E5\u3002",
"\u7ED3\u6784\u5316\u914D\u65B9\u53EA\u6309\u516C\u5F00\u58F0\u660E\u68C0\u67E5\u7EA6\u675F\u4E0E\u63A5\u53E3\uFF0C\u4E0D\u6267\u884C\u4EFB\u52A1\u6216\u6388\u4E88\u6743\u9650\uFF1B\u7F3A\u5931\u8BB0\u5F55\u4FDD\u6301\u672A\u77E5\uFF0C\u63A5\u53E3\u517C\u5BB9\u4E0D\u8BC1\u660E\u5B9E\u9645\u6210\u529F\u3002"
]
}
}