{"openapi":"3.1.0","info":{"title":"FRED (BYOK) API","version":"0.1.0","description":"FRED (BYOK) lets an AI assistant read your own FRED data through the FRED API with a key you supply (API key). Read-only: 9 tools (get_series, get_observations, search_series, list_releases, list_release_series, get_category, list_category_children, list_category_series, get_series_categories). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-fred.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-fred/docs"},"termsOfService":"https://connectorbay.com/byok-fred/terms"},"servers":[{"url":"https://byok-fred.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-fred/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_series":{"post":{"operationId":"get_series","summary":"Get the description of one economic data series: title, first and last observation dates, frequency, units, seasonal adj","description":"Get the description of one economic data series: title, first and last observation dates, frequency, units, seasonal adjustment, last update and popularity. Use for \"What is the FRED series GDP and how often is it updated\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"series_id":{"description":"FRED series ID, for example GDP, UNRATE, CPIAUCSL or DGS10 (use search_series to find one).","maxLength":60,"title":"Series Id","type":"string"},"file_type":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; do not change.","title":"File Type"}},"required":["series_id"],"title":"get_seriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_observations":{"post":{"operationId":"get_observations","summary":"Get the values of one data series over time, as date and value pairs (values come as text). Can limit the date range, co","description":"Get the values of one data series over time, as date and value pairs (values come as text). Can limit the date range, convert units (for example percent change) and aggregate to a lower frequency. Use for \"What is the latest US unemployment rate\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"series_id":{"description":"FRED series ID, for example GDP, UNRATE, CPIAUCSL or DGS10 (use search_series to find one).","maxLength":60,"title":"Series Id","type":"string"},"file_type":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; do not change.","title":"File Type"},"observation_start":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First observation date to include, as YYYY-MM-DD.","title":"Observation Start"},"observation_end":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last observation date to include, as YYYY-MM-DD.","title":"Observation End"},"units":{"anyOf":[{"enum":["lin","chg","ch1","pch","pc1","pca","cch","cca","log"],"type":"string"},{"type":"null"}],"default":"lin","description":"Transformation: lin (levels), chg (change), ch1 (change from a year ago), pch (percent change), pc1 (percent change from a year ago), pca (compounded annual rate), cch, cca, or log.","title":"Units"},"frequency":{"anyOf":[{"enum":["d","w","bw","m","q","sa","a"],"type":"string"},{"type":"null"}],"default":null,"description":"Aggregate to a lower frequency: d, w, bw, m, q, sa, a (daily, weekly, biweekly, monthly, quarterly, semiannual, annual); cannot be higher than the series' own frequency. Unset keeps the original.","title":"Frequency"},"aggregation_method":{"anyOf":[{"enum":["avg","sum","eop"],"type":"string"},{"type":"null"}],"default":"avg","description":"How to combine values when frequency is set: avg, sum or eop (end of period).","title":"Aggregation Method"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"asc for oldest first, desc for newest first.","title":"Sort Order"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":24,"description":"How many observations to return (1 to 500).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (0 or more).","title":"Offset"}},"required":["series_id"],"title":"get_observationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_series":{"post":{"operationId":"search_series","summary":"Search for data series by words in the title or by series ID; returns matching series with title, frequency, units and p","description":"Search for data series by words in the title or by series ID; returns matching series with title, frequency, units and popularity, most relevant first. Use for \"Find FRED series about consumer price inflation\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_text":{"description":"Words to match against series titles and tags, for example 'consumer price index'.","maxLength":200,"title":"Search Text","type":"string"},"file_type":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; do not change.","title":"File Type"},"search_type":{"anyOf":[{"enum":["full_text","series_id"],"type":"string"},{"type":"null"}],"default":"full_text","description":"Match words in the title and notes (full_text) or by series ID prefix (series_id).","title":"Search Type"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (0 or more).","title":"Offset"},"order_by":{"anyOf":[{"enum":["search_rank","series_id","title","units","frequency","seasonal_adjustment","last_updated","observation_start","observation_end","popularity","group_popularity"],"type":"string"},{"type":"null"}],"default":null,"description":"Field to sort by; default is relevance for full_text.","title":"Order By"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc or desc.","title":"Sort Order"},"filter_variable":{"anyOf":[{"enum":["frequency","units","seasonal_adjustment"],"type":"string"},{"type":"null"}],"default":null,"description":"Narrow the results by frequency, units or seasonal_adjustment (use together with filter_value).","title":"Filter Variable"},"filter_value":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"The value that filter_variable must have, for example 'Monthly' or 'Seasonally Adjusted'.","title":"Filter Value"},"tag_names":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Semicolon-separated tags that every result must have, for example 'usa;monthly'.","title":"Tag Names"}},"required":["search_text"],"title":"search_seriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_releases":{"post":{"operationId":"list_releases","summary":"List the statistical releases FRED tracks (for example Employment Situation or Gross Domestic Product) with release ID, ","description":"List the statistical releases FRED tracks (for example Employment Situation or Gross Domestic Product) with release ID, name and link. Use for \"Which data releases does FRED cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"file_type":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; do not change.","title":"File Type"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many releases to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (0 or more).","title":"Offset"},"order_by":{"anyOf":[{"enum":["release_id","name","press_release"],"type":"string"},{"type":"null"}],"default":"release_id","description":"Field to sort by.","title":"Order By"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc or desc.","title":"Sort Order"}},"title":"list_releasesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_release_series":{"post":{"operationId":"list_release_series","summary":"List the data series that belong to one release, with title, frequency, units and popularity. Use for \"Which series are ","description":"List the data series that belong to one release, with title, frequency, units and popularity. Use for \"Which series are part of FRED release 53\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"release_id":{"description":"Release ID from list_releases, for example 53 (Gross Domestic Product).","minimum":1,"title":"Release Id","type":"integer"},"file_type":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; do not change.","title":"File Type"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (0 or more).","title":"Offset"},"order_by":{"anyOf":[{"enum":["series_id","title","units","frequency","seasonal_adjustment","last_updated","observation_start","observation_end","popularity","group_popularity"],"type":"string"},{"type":"null"}],"default":"series_id","description":"Field to sort by.","title":"Order By"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc or desc.","title":"Sort Order"}},"required":["release_id"],"title":"list_release_seriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_category":{"post":{"operationId":"get_category","summary":"Get one category of the FRED category tree (name and parent); category 0 is the root. Use for \"What is FRED category 329","description":"Get one category of the FRED category tree (name and parent); category 0 is the root. Use for \"What is FRED category 32991\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"file_type":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; do not change.","title":"File Type"},"category_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Category ID; 0 is the root of the tree.","title":"Category Id"}},"title":"get_categoryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_category_children":{"post":{"operationId":"list_category_children","summary":"List the child categories of a category, to browse the FRED category tree from the root (0) downwards. Use for \"What are","description":"List the child categories of a category, to browse the FRED category tree from the root (0) downwards. Use for \"What are the top-level categories in FRED\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"file_type":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; do not change.","title":"File Type"},"category_id":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Category ID whose children to list; 0 is the root of the tree.","title":"Category Id"}},"title":"list_category_childrenArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_category_series":{"post":{"operationId":"list_category_series","summary":"List the data series in one category, with title, frequency, units and popularity. Use for \"Which series are in FRED cat","description":"List the data series in one category, with title, frequency, units and popularity. Use for \"Which series are in FRED category 125\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category_id":{"description":"Category ID from list_category_children, for example 125 (Trade Balance).","minimum":0,"title":"Category Id","type":"integer"},"file_type":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; do not change.","title":"File Type"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 1000).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (0 or more).","title":"Offset"},"order_by":{"anyOf":[{"enum":["series_id","title","units","frequency","seasonal_adjustment","last_updated","observation_start","observation_end","popularity","group_popularity"],"type":"string"},{"type":"null"}],"default":"series_id","description":"Field to sort by.","title":"Order By"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc or desc.","title":"Sort Order"},"filter_variable":{"anyOf":[{"enum":["frequency","units","seasonal_adjustment"],"type":"string"},{"type":"null"}],"default":null,"description":"Narrow the results by frequency, units or seasonal_adjustment (use together with filter_value).","title":"Filter Variable"},"filter_value":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"The value that filter_variable must have, for example 'Monthly' or 'Seasonally Adjusted'.","title":"Filter Value"}},"required":["category_id"],"title":"list_category_seriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_series_categories":{"post":{"operationId":"get_series_categories","summary":"List the categories that one data series belongs to. Use for \"Which FRED categories is the series UNRATE in\".","description":"List the categories that one data series belongs to. Use for \"Which FRED categories is the series UNRATE in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"series_id":{"description":"FRED series ID, for example GDP, UNRATE, CPIAUCSL or DGS10 (use search_series to find one).","maxLength":60,"title":"Series Id","type":"string"},"file_type":{"anyOf":[{"const":"json","type":"string"},{"type":"null"}],"default":"json","description":"Fixed by this tool; do not change.","title":"File Type"}},"required":["series_id"],"title":"get_series_categoriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}