Preços e ofertas vigentes de supermercados de Joinville/SC, revisados antes de publicar. Só leitura.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Calcula o custo da cesta básica por mercado; com market, detalha os itens daquele mercado. Usa os preços vigentes do último cálculo (computed_at). Exemplos: "cesta básica mais barata", "quanto custa a cesta no Bistek"
slug, id ou nome do mercado
só joinville por enquanto
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http ofertas https://mcp.joinvilleboasofertas.com/mcp
Calcula o custo da cesta básica por mercado; com market, detalha os itens daquele mercado. Usa os preços vigentes do último cálculo (computed_at). Exemplos: "cesta básica mais barata", "quanto custa a cesta no Bistek"
| Argument | Type | Description |
|---|---|---|
| market | any | slug, id ou nome do mercado |
| region | any | só joinville por enquanto |
{
"type": "object",
"title": "basic_basketArguments",
"properties": {
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Market",
"default": null,
"description": "slug, id ou nome do mercado"
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "só joinville por enquanto"
}
}
}Compara um produto específico (slug, id ou texto) entre os mercados, do mais barato ao mais caro, com a média e os últimos preços conhecidos. Ofertas vigentes hoje; last_known traz vencidas há até 30 dias de mercados sem oferta vigente. Exemplos: "compare o óleo Coamo 900 ml entre mercados", "preço do leite Tirol"
| Argument | Type | Description |
|---|---|---|
| market | any | slug, id ou nome do mercado |
| region | any | só joinville por enquanto |
| product* | string | Produto: slug, id ou texto (nome, marca, volume). |
{
"type": "object",
"title": "compare_productArguments",
"required": [
"product"
],
"properties": {
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Market",
"default": null,
"description": "slug, id ou nome do mercado"
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "só joinville por enquanto"
},
"product": {
"type": "string",
"title": "Product",
"description": "Produto: slug, id ou texto (nome, marca, volume)."
}
}
}Devolve o texto completo de uma oferta pelo id vindo de search; segue o contrato do conector do ChatGPT. Exemplos: "detalhe da oferta", "endereço do mercado dessa oferta"
| Argument | Type | Description |
|---|---|---|
| id* | string | id (offer_id) devolvido por search. |
{
"type": "object",
"title": "fetchArguments",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"description": "id (offer_id) devolvido por search."
}
}
}Encontra o menor preço de um produto ou tipo de produto, agrupado por produto, com alternativas em outros mercados. Considera só ofertas vigentes hoje. Exemplos: "onde comprar carne mais barato hoje", "menor preço do leite"
| Argument | Type | Description |
|---|---|---|
| limit | any | Quantidade de itens: 1–30, padrão 10 |
| query* | string | Produto ou tipo de produto. |
| region | any | só joinville por enquanto |
| category | any | Slug ou nome da categoria (veja list_categories). |
| alternatives | any | 0–5, padrão 3: alternativas de outros mercados por produto |
{
"type": "object",
"title": "find_cheapestArguments",
"required": [
"query"
],
"properties": {
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Limit",
"default": null,
"description": "Quantidade de itens: 1–30, padrão 10"
},
"query": {
"type": "string",
"title": "Query",
"description": "Produto ou tipo de produto."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "só joinville por enquanto"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"default": null,
"description": "Slug ou nome da categoria (veja list_categories)."
},
"alternatives": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Alternatives",
"default": null,
"description": "0–5, padrão 3: alternativas de outros mercados por produto"
}
}
}Mostra um mercado (slug, id ou nome): endereços, destaques, categorias e ofertas paginadas. Considera só ofertas vigentes hoje. sort: relevance, price (menor preço), savings (maior economia) ou recent (padrão, mais recentes). Exemplos: "ofertas do Angeloni", "o que tem no Cooper"
| Argument | Type | Description |
|---|---|---|
| sort | any | Ordem: relevance (relevância), price (menor preço), savings (maior economia) ou recent (mais recentes). |
| cursor | any | next_cursor da página anterior, para continuar. |
| market* | string | slug, id ou nome do mercado |
| region | any | só joinville por enquanto |
| category | any | Slug ou nome da categoria (veja list_categories). |
| page_size | any | 1–30, padrão 10 |
{
"type": "object",
"title": "get_marketArguments",
"required": [
"market"
],
"properties": {
"sort": {
"anyOf": [
{
"enum": [
"relevance",
"price",
"savings",
"recent"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Sort",
"default": null,
"description": "Ordem: relevance (relevância), price (menor preço), savings (maior economia) ou recent (mais recentes)."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"default": null,
"description": "next_cursor da página anterior, para continuar."
},
"market": {
"type": "string",
"title": "Market",
"description": "slug, id ou nome do mercado"
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "só joinville por enquanto"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"default": null,
"description": "Slug ou nome da categoria (veja list_categories)."
},
"page_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Page Size",
"default": null,
"description": "1–30, padrão 10"
}
}
}Mostra o detalhe completo de uma oferta já devolvida por outra ferramenta, com o encarte de origem. Exemplos: "mais detalhes dessa oferta", "qual o encarte dessa oferta"
| Argument | Type | Description |
|---|---|---|
| offer_id* | string | offer_id (UUID) devolvido por outra ferramenta. |
{
"type": "object",
"title": "get_offerArguments",
"required": [
"offer_id"
],
"properties": {
"offer_id": {
"type": "string",
"title": "Offer Id",
"description": "offer_id (UUID) devolvido por outra ferramenta."
}
}
}Lista as categorias de produto com a quantidade de ofertas e de mercados. Conta só ofertas vigentes hoje. Exemplos: "que tipos de produto existem", "quais categorias têm ofertas"
| Argument | Type | Description |
|---|---|---|
| region | any | só joinville por enquanto |
{
"type": "object",
"title": "list_categoriesArguments",
"properties": {
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "só joinville por enquanto"
}
}
}Lista os mercados cobertos com endereços e quantidade de ofertas; use query para confirmar o nome de um mercado. Sem query, por padrão só mercados com oferta vigente hoje (with_active_only=true); com query, devolve o mercado mesmo sem oferta vigente e avisa em meta.notices. Exemplos: "quais mercados vocês cobrem", "endereço do Fort"
| Argument | Type | Description |
|---|---|---|
| query | any | Texto da busca (produto). |
| region | any | só joinville por enquanto |
| with_active_only | boolean | Só mercados com oferta vigente hoje; ignorado quando query é informada. |
{
"type": "object",
"title": "list_marketsArguments",
"properties": {
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Query",
"default": null,
"description": "Texto da busca (produto)."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "só joinville por enquanto"
},
"with_active_only": {
"type": "boolean",
"title": "With Active Only",
"default": true,
"description": "Só mercados com oferta vigente hoje; ignorado quando query é informada."
}
}
}Busca ofertas vigentes e devolve até 20 resultados com id, título (preço, mercado e validade) e url; segue o contrato do conector do ChatGPT. Considera só ofertas vigentes hoje. Exemplos: "ofertas de café", "cerveja em promoção"
| Argument | Type | Description |
|---|---|---|
| query* | string | Texto da busca (produto). |
{
"type": "object",
"title": "searchArguments",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"title": "Query",
"description": "Texto da busca (produto)."
}
}
}Busca ofertas por produto, categoria, mercado, preço máximo ou vencimento hoje, com paginação; passe o mercado em market, não no texto. Devolve só ofertas vigentes hoje, salvo include_expired=true. sort: relevance (padrão com texto), price (menor preço), savings (maior economia) ou recent (mais recentes). Exemplos: "ofertas de café", "arroz 5 kg até R$ 25 no Fort", "o que vence hoje"
| Argument | Type | Description |
|---|---|---|
| sort | any | Ordem: relevance (relevância), price (menor preço), savings (maior economia) ou recent (mais recentes). |
| query | any | Texto da busca (produto). |
| cursor | any | next_cursor da página anterior, para continuar. |
| market | any | slug, id ou nome do mercado |
| region | any | só joinville por enquanto |
| category | any | Slug ou nome da categoria (veja list_categories). |
| max_price | any | Preço máximo em reais (maior que zero). |
| page_size | any | 1–30, padrão 10 |
Lista as melhores ofertas pela economia em relação à média, no geral, por categoria ou por mercado. Considera só ofertas vigentes hoje. Exemplos: "melhores ofertas agora", "melhores ofertas de bebidas", "o que o Giassi tem de bom hoje"
| Argument | Type | Description |
|---|---|---|
| limit | any | Quantidade de itens: 1–30, padrão 10 |
| market | any | slug, id ou nome do mercado |
| region | any | só joinville por enquanto |
| category | any | Slug ou nome da categoria (veja list_categories). |
| ending_today | boolean | Só ofertas que vencem hoje. |
{
"type": "object",
"title": "top_dealsArguments",
"properties": {
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Limit",
"default": null,
"description": "Quantidade de itens: 1–30, padrão 10"
},
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Market",
"default": null,
"description": "slug, id ou nome do mercado"
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "só joinville por enquanto"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"default": null,
"description": "Slug ou nome da categoria (veja list_categories)."
},
"ending_today": {
"type": "boolean",
"title": "Ending Today",
"default": false,
"description": "Só ofertas que vencem hoje."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 1, 2026.
| ending_today |
| boolean |
| Só ofertas que vencem hoje. |
| include_expired | boolean | Inclui ofertas vencidas (marcadas em validity.status). |
{
"type": "object",
"title": "search_offersArguments",
"properties": {
"sort": {
"anyOf": [
{
"enum": [
"relevance",
"price",
"savings",
"recent"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Sort",
"default": null,
"description": "Ordem: relevance (relevância), price (menor preço), savings (maior economia) ou recent (mais recentes)."
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Query",
"default": null,
"description": "Texto da busca (produto)."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"default": null,
"description": "next_cursor da página anterior, para continuar."
},
"market": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Market",
"default": null,
"description": "slug, id ou nome do mercado"
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"default": null,
"description": "só joinville por enquanto"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Category",
"default": null,
"description": "Slug ou nome da categoria (veja list_categories)."
},
"max_price": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Max Price",
"default": null,
"description": "Preço máximo em reais (maior que zero)."
},
"page_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Page Size",
"default": null,
"description": "1–30, padrão 10"
},
"ending_today": {
"type": "boolean",
"title": "Ending Today",
"default": false,
"description": "Só ofertas que vencem hoje."
},
"include_expired": {
"type": "boolean",
"title": "Include Expired",
"default": false,
"description": "Inclui ofertas vencidas (marcadas em validity.status)."
}
}
}