# Joinville Boas Ofertas

> Preços e ofertas vigentes de supermercados de Joinville/SC, revisados antes de publicar. Só leitura.

- name: com.joinvilleboasofertas/ofertas
- version: 1.2.0
- connection class: R0 (autonomous)
- trust: 80/100 flags: no-repository
- quality: 94/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.joinvilleboasofertas%2Fofertas
- tools: https://api.protogrid.dev/v1/servers/com.joinvilleboasofertas%2Fofertas/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "ofertas": {
      "type": "http",
      "url": "https://mcp.joinvilleboasofertas.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 91
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-77% +updated-6d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 94/100 (new)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,812 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 6 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 11, about 2,812 tokens to load them all
- tool set hash: 0f5800fcf000ed5dabc0c7177075f9b3
- tools last changed: 2026-11-02T00:08:52.210Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.joinvilleboasofertas/ofertas.svg)](https://protogrid.dev/servers/com.joinvilleboasofertas/ofertas)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-02 `fetch` changed (description)
  - before: 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"
  - after: 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" Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- 2026-11-02 `search` changed (description)
  - before: 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"
  - after: 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" Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- 2026-11-02 `get_offer` changed (description)
  - before: 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"
  - after: 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" Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- 2026-11-02 `basic_basket` changed (description)
  - before: 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"
  - after: 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" Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- 2026-11-02 `list_categories` changed (description)
  - before: 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"
  - after: 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" Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- 2026-11-02 `get_market` changed (description)
  - before: 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"
  - after: 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" Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- 2026-11-02 `list_markets` changed (description)
  - before: 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"
  - after: 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" Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- 2026-11-02 `top_deals` changed (description)
  - before: 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"
  - after: 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" Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- 2026-11-02 `compare_product` changed (description)
  - before: 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"
  - after: 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" Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- 2026-11-02 `find_cheapest` changed (description)
  - before: 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"
  - after: 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" Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.

Full history: https://api.protogrid.dev/v1/servers/com.joinvilleboasofertas%2Fofertas/changes

## Remotes

- https://mcp.joinvilleboasofertas.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.7692308)

## Packages

_none_

## Tools (11)

- `basic_basket`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- `compare_product`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- `fetch`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- `find_cheapest`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- `get_market`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- `get_offer`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- `list_categories`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- `list_markets`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- `search`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- `search_offers`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
- `top_deals`: 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"
Cobertura: só Joinville/SC, Brasil; não serve para outras cidades. Só consulta: não vende, não reserva nem entrega produtos.
