{"openapi":"3.1.0","info":{"title":"Manchete API","version":"0.1.0","description":"A Brazilian news digest: headlines and summaries aggregated live from major Brazilian outlets' public RSS feeds, merged, deduplicated and clustered across outlets by story. Headlines, summaries and links only — never full article text.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://manchete.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/manchete/docs"},"termsOfService":"https://connectorbay.com/manchete/terms"},"servers":[{"url":"https://manchete.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/manchete/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/top_headlines":{"post":{"operationId":"top_headlines","summary":"Recent Brazilian headlines merged and deduplicated across every covered outlet, or filtered to one category","description":"Recent Brazilian headlines merged and deduplicated across every covered outlet, or filtered to one category\n    (geral, politica, economia, mundo, tecnologia, esportes, entretenimento, ciencia-saude). Each item has the\n    headline, a short summary, the outlet, publish time and a link. Use for \"manchetes de hoje\", \"what's the news\n    in Brazil\", or a specific category (\"notícias de economia\").","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"category":{"anyOf":[{"description":"One of: geral, politica, economia, mundo, tecnologia, esportes, entretenimento, ciencia-saude. Omit for every category.","examples":["economia","esportes"],"type":"string"},{"type":"null"}],"default":null,"title":"Category"},"hours":{"default":48,"description":"How far back to look, in hours (1–96).","maximum":96,"minimum":1,"title":"Hours","type":"integer"},"limit":{"default":20,"description":"Maximum headlines to return.","maximum":50,"minimum":1,"title":"Limit","type":"integer"}},"title":"top_headlinesArguments","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/headlines_by_outlet":{"post":{"operationId":"headlines_by_outlet","summary":"The latest headlines from one named Brazilian outlet, across every category we carry for it. Use when the","description":"The latest headlines from one named Brazilian outlet, across every category we carry for it. Use when the\n    user names a specific source (\"o que saiu no G1\", \"últimas do Poder360\").","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"outlet":{"description":"Outlet name or feed id, e.g. 'G1', 'Folha', 'UOL', 'Agência Brasil', 'CNN Brasil', 'Poder360', 'Metrópoles', 'Exame', 'Valor'.","title":"Outlet","type":"string"},"limit":{"default":20,"description":"Maximum headlines to return.","maximum":50,"minimum":1,"title":"Limit","type":"integer"}},"required":["outlet"],"title":"headlines_by_outletArguments","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_headlines":{"post":{"operationId":"search_headlines","summary":"Search recent Brazilian headlines (cached from every covered feed) for a keyword or phrase, matched against","description":"Search recent Brazilian headlines (cached from every covered feed) for a keyword or phrase, matched against\n    the title and summary. Use for \"alguma notícia sobre X\", \"o que saiu sobre Y\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Topic, person, place or phrase.","examples":["Selic","eleições","seleção brasileira"],"minLength":2,"title":"Query","type":"string"},"hours":{"default":72,"description":"How far back to look, in hours (1–96).","maximum":96,"minimum":1,"title":"Hours","type":"integer"},"limit":{"default":20,"description":"Maximum headlines to return.","maximum":50,"minimum":1,"title":"Limit","type":"integer"}},"required":["query"],"title":"search_headlinesArguments","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/story_cluster":{"post":{"operationId":"story_cluster","summary":"Find headlines about a story or topic across different outlets and group them by similarity, so you can see","description":"Find headlines about a story or topic across different outlets and group them by similarity, so you can see\n    who is covering it and how many outlets agree. Use for \"quem está cobrindo isso\", \"isso está em vários\n    veículos?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Story, topic or phrase to trace across outlets.","examples":["Selic","reforma administrativa"],"minLength":2,"title":"Query","type":"string"},"hours":{"default":72,"description":"How far back to look, in hours (1–96).","maximum":96,"minimum":1,"title":"Hours","type":"integer"},"limit":{"default":10,"description":"Maximum headlines to return.","maximum":50,"minimum":1,"title":"Limit","type":"integer"}},"required":["query"],"title":"story_clusterArguments","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/economy_headlines":{"post":{"operationId":"economy_headlines","summary":"Recent Brazilian business and economy headlines (Selic, inflação, câmbio, mercado, indústria) from G1","description":"Recent Brazilian business and economy headlines (Selic, inflação, câmbio, mercado, indústria) from G1\n    Economia, Folha Mercado, Agência Brasil Economia, Exame and Valor Econômico. Use for \"notícias de economia\",\n    \"o que saiu sobre o mercado\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hours":{"default":48,"description":"How far back to look, in hours (1–96).","maximum":96,"minimum":1,"title":"Hours","type":"integer"},"limit":{"default":15,"maximum":30,"minimum":1,"title":"Limit","type":"integer"}},"title":"economy_headlinesArguments","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/sports_headlines":{"post":{"operationId":"sports_headlines","summary":"Recent Brazilian sports headlines from GE (Globo Esporte), Folha Esporte and Agência Brasil Esportes. Use","description":"Recent Brazilian sports headlines from GE (Globo Esporte), Folha Esporte and Agência Brasil Esportes. Use\n    for \"notícias de esporte\", \"o que saiu sobre futebol\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hours":{"default":48,"description":"How far back to look, in hours (1–96).","maximum":96,"minimum":1,"title":"Hours","type":"integer"},"limit":{"default":15,"maximum":30,"minimum":1,"title":"Limit","type":"integer"}},"title":"sports_headlinesArguments","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/daily_briefing":{"post":{"operationId":"daily_briefing","summary":"The most cross-outlet-covered stories of the last day, clustered: a quick snapshot of what matters most in","description":"The most cross-outlet-covered stories of the last day, clustered: a quick snapshot of what matters most in\n    Brazil right now. Use for \"resumo do dia\", \"o que eu perdi\", \"principais notícias de hoje\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hours":{"default":24,"description":"How far back to look, in hours (1–96).","maximum":96,"minimum":1,"title":"Hours","type":"integer"},"limit":{"default":8,"maximum":20,"minimum":1,"title":"Limit","type":"integer"}},"title":"daily_briefingArguments","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/outlet_list":{"post":{"operationId":"outlet_list","summary":"The Brazilian outlets Manchete carries, with each feed's category/focus and feed id — use before","description":"The Brazilian outlets Manchete carries, with each feed's category/focus and feed id — use before\n    headlines_by_outlet if unsure of a name.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"outlet_listArguments","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/category_list":{"post":{"operationId":"category_list","summary":"The categories Manchete covers (geral, politica, economia, mundo, tecnologia, esportes, entretenimento,","description":"The categories Manchete covers (geral, politica, economia, mundo, tecnologia, esportes, entretenimento,\n    ciencia-saude), each with a short label and how many feeds carry it.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"category_listArguments","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}}}}