Claude HTTP Tools for Brazil CVM Filings

Builders looking for Claude tools CVM filings access can wire Anthropic tool use to apicvm over HTTP. apicvm does not ship an official Claude plugin or MCP server — you define tools that call /v1/companies/resolve, /v1/documents, and file download.

The problem

Claude needs structured tools to fetch regulated Brazilian filings. Generic web fetch hits portals and CAPTCHAs. You want deterministic JSON:

resolve(ticker) → list(type, year) → choose id → download or extract

Example: list FRE for EMBR3

export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/companies/resolve?query=EMBR3&by=ticker"

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=EMBR3&type=FRE&year=2024&perPage=15"
import os, requests

BASE = os.environ["APICVM_URL"].rstrip("/")
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}

def list_documents(ticker: str, doc_type: str, year: int, name: str | None = None):
    params = {"ticker": ticker, "type": doc_type, "year": year, "perPage": 15}
    if name:
        params["name"] = name
    r = requests.get(f"{BASE}/v1/documents", headers=H, params=params, timeout=30)
    r.raise_for_status()
    return r.json()

# Tool handler body for Claude tool_use
print(list_documents("EMBR3", "FRE", 2024, name="Risco"))

Instruct the model to pick an explicit document.id — the API never auto-selects a filing.

Desktop / agent hosts

Whether you use Claude Desktop custom tools, the Messages API with tools, or an orchestration layer:

  1. Keep APICVM_KEY on the host, not in the system prompt.
  2. Return compact JSON (first N documents) to save context.
  3. Map 409 AMBIGUOUS_RESULT to a disambiguation message with candidates.
  4. Treat extraction as a background job — callbacks are the only progress channel in v1.

For a parallel pattern with OpenAI, see OpenAI tools for CVM filings. For LangChain, see LangChain tools.

Demo without a key (VALE3 only)

Public demo routes exist for Vale risk-factor markdown:

curl "https://apicvm.dev/v1/demo/documents?ticker=VALE3&type=FRE&year=2025&name=DescricaoFatoresRisco&perPage=5"

Scope is narrow (VALE3 / specific FRE 2025 section). Full tickers need an API key. Guide: try the demo API.

What this is not

  • Not an official apicvm MCP — third-party MCP projects that read CVM open-data CSVs are a different stack.
  • Not synchronous full-text — authenticated extraction is async + credits.
  • Not market data — filings only.

Current limitations

  • Corpus gaps and ingestion lag.
  • perPage max 50; paginate for large catalogs.
  • HTTPS callback URL required in production for extractions.

Next steps

Ready to integrate?

Get an API key and start querying Brazilian CVM filings programmatically.