fundamentos·Fabricio Telles

ARD — Agentic Resource Discovery: A Camada que Faltava no Ecossistema de Agentes

Entenda o ARD, a especificação que permite agentes descobrirem tools, skills e outros agentes automaticamente via catálogos e registries.

ARD — Agentic Resource Discovery: A Camada que Faltava no Ecossistema de Agentes

Imagine um hotel cinco estrelas com 200 quartos, spa, três restaurantes e um centro de conferências. Agora imagine que o concierge não tem acesso à lista de serviços. Ele sabe atender — é treinado, educado, eficiente — mas quando o hóspede pergunta “vocês têm um chef japonês?”, ele precisa ligar para cada setor, um por um, perguntando se existe. Multiplique isso por 50 hóspedes simultâneos.

Esse é o estado atual do ecossistema de agentes IA.

Temos o MCP para um agente chamar ferramentas. Temos o A2A para agentes conversarem entre si. Mas quando um agente precisa responder “quem, nesse ecossistema, sabe fazer o que eu preciso?” — não há protocolo padrão. Ele depende de configuração manual, listas estáticas ou, pior, hardcode de endpoints.

O ARD — Agentic Resource Discovery é a especificação que resolve esse gap. É a lista de serviços do hotel, atualizada em tempo real, com verificação de identidade e busca semântica. Publicada em 17 de junho de 2026 como v0.9 (Draft), já conta com contribuições de Google, Microsoft, Hugging Face, GoDaddy, GitHub, Cisco, Databricks, NVIDIA, Salesforce, ServiceNow e Snowflake.

Não é coincidência que essas empresas estejam todas na mesa. O discovery é o gargalo que impede agentes de operarem em ecossistemas abertos. Sem ele, cada integração é um contrato bilateral negociado manualmente. Com ele, a web de agentes funciona como a web de documentos: publicou, está descobrível.

O que é ARD

ARD é uma especificação aberta (Apache 2.0) que define como agentes de IA descobrem capabilities, ferramentas e outros agentes disponíveis em um ecossistema. Foi construída sobre o ai-catalog standard da Linux Foundation AI Catalog Working Group.

Os autores — Junjie Bu (Google), R.V. Guha (Microsoft) e Shaun Smith (Hugging Face) — atacam um problema fundamental: à medida que o número de agentes e ferramentas cresce, o discovery manual não escala.

O repositório oficial fica em github.com/ards-project/ard-spec (398 stars, 46 forks, 91 commits em julho de 2026), com documentação em agenticresourcediscovery.org.

A arquitetura se apoia em duas primitivas:

  1. Catálogo estático — um arquivo ai-catalog.json que cada publisher hospeda no seu domínio
  2. Registry dinâmico — uma API com endpoint POST /search para busca semântica em tempo real

Pense no catálogo como a plaquinha na porta do quarto de hotel (“Suíte Master, capacidade 4 pessoas, vista mar”). O registry é o sistema de reservas que cruza sua busca (“quarto com vista mar para amanhã”) com tudo que está disponível.

Catálogo Estático: ai-catalog.json

O ponto de entrada mais simples do ARD é o catálogo estático. Você cria um arquivo JSON e hospeda em /.well-known/ai-catalog.json no seu domínio. Qualquer agente que conheça essa convenção pode fazer discovery automático dos seus recursos.

Aqui está a estrutura real de um catálogo:

{
  "specVersion": "1.0",
  "host": {
    "displayName": "Acme Corp AI",
    "identifier": "did:web:acme.corp"
  },
  "entries": [
    {
      "identifier": "urn:air:acme.corp:agents:invoice-processor",
      "displayName": "Invoice Processor Agent",
      "type": "application/a2a-agent-card+json",
      "url": "https://agents.acme.corp/invoice-processor/.well-known/agent.json",
      "description": "Processa faturas em PDF, extrai dados estruturados e reconcilia com o ERP",
      "capabilities": ["pdf-extraction", "data-reconciliation", "erp-integration"],
      "representativeQueries": [
        "processar fatura em PDF e extrair dados",
        "reconciliar nota fiscal com ERP"
      ],
      "trustManifest": {
        "identity": "spiffe://acme.corp/agents/invoice-processor",
        "identityType": "spiffe",
        "attestations": [
          { "type": "SOC2-Type2", "uri": "https://trust.acme.corp/reports/soc2.pdf" },
          { "type": "GDPR", "uri": "https://trust.acme.corp/compliance/gdpr" }
        ]
      }
    },
    {
      "identifier": "urn:air:acme.corp:tools:sentiment-analysis",
      "displayName": "Sentiment Analysis Tool",
      "type": "application/mcp-server-card+json",
      "url": "https://tools.acme.corp/sentiment/mcp.json",
      "description": "Análise de sentimento multilíngue via MCP server",
      "capabilities": ["text-analysis", "multilingual", "batch-processing"],
      "representativeQueries": [
        "analisar sentimento de reviews em português",
        "classificar tom de mensagens de suporte"
      ]
    }
  ]
}

Observe os pontos-chave:

  • type diferencia o tipo de recurso. O ARD suporta application/a2a-agent-card+json (agentes A2A), application/mcp-server-card+json (MCP servers), application/ai-skill, application/ai-registry+json e application/ai-catalog+json
  • capabilities permite busca por competência, não só por nome
  • representativeQueries são exemplos de perguntas em linguagem natural que o recurso responde — os registries usam esses exemplos para construir embeddings semânticos e ranquear resultados
  • trustManifest inclui identidade verificável e attestations de compliance
  • Cada entry exige exatamente um de url (referência remota) ou data (artefato inline) — nunca ambos

O catálogo estático é determinístico e cacheável. Não exige infraestrutura além de um web server. Um desenvolvedor indie pode publicar um ai-catalog.json no mesmo domínio onde já hospeda seu site e tornar seus tools descobríveis por qualquer agente que implemente ARD.

Mecanismos de Discovery

Para que agentes encontrem o catálogo, o ARD define quatro mecanismos de discovery:

  1. Well-Known URI/.well-known/ai-catalog.json (o padrão primário)
  2. Agentmap em robots.txt — diretiva Agentmap: apontando para o catálogo
  3. HTML Link Tag<link rel="ai-catalog" href="/ai-catalog.json"> no head
  4. DNS Service Binding records — para discovery a nível de infraestrutura

Isso é deliberado. O catálogo funciona como o robots.txt funciona para crawlers: uma convenção simples que qualquer agente sabe onde buscar.

Registry Dinâmico: POST /search

O catálogo estático resolve o caso de “eu conheço o domínio e quero saber o que ele oferece”. Mas e quando você precisa buscar “quem no ecossistema faz análise de sentimento em português?”

Para isso existe o registry dinâmico. O ARD define uma API com três endpoints:

EndpointMétodoObrigatório?Função
/searchPOST✅ SimBusca semântica com filtros
/explorePOSTOpcionalAgregações e facets
/agentsGETOpcionalListagem determinística completa

O endpoint obrigatório é o POST /search. Aqui está um request real:

{
  "query": {
    "text": "process invoices and extract structured data from PDF documents",
    "filter": {
      "type": ["application/a2a-agent-card+json"],
      "trustManifest.attestations.type": ["SOC2-Type2"]
    }
  },
  "federation": "auto",
  "pageSize": 5
}

E a resposta:

{
  "results": [
    {
      "identifier": "urn:air:acme.corp:agents:invoice-processor",
      "displayName": "Invoice Processor Agent",
      "type": "application/a2a-agent-card+json",
      "url": "https://agents.acme.corp/invoice-processor/.well-known/agent.json",
      "description": "Processa faturas em PDF, extrai dados estruturados e reconcilia com o ERP",
      "score": 92,
      "source": "https://registry.acme.corp/api/v1/"
    },
    {
      "identifier": "urn:air:fintech.io:agents:doc-extractor",
      "displayName": "Document Extraction Service",
      "type": "application/a2a-agent-card+json",
      "url": "https://api.fintech.io/.well-known/agent.json",
      "description": "Extração de dados de documentos financeiros com OCR avançado",
      "score": 78,
      "source": "https://finder.external.org/api/"
    }
  ],
  "referrals": [
    {
      "identifier": "urn:air:nlweb.ai:registry:public",
      "displayName": "Public Agent Finder",
      "type": "application/ai-registry+json",
      "url": "https://finder.nlweb.ai/search"
    }
  ],
  "pageToken": "eyJwYWdlIjogMn0="
}

O campo score merece atenção: é um valor de 0 a 100 representando relevância semântica da busca — não é um trust score. Um agente com score 92 é altamente relevante para a query textual, mas a decisão de confiar nele depende do trustManifest.

Repare no array referrals na resposta: quando o registry está no modo referrals ou auto, ele pode retornar ponteiros para outros registries que o cliente pode consultar. Isso é a federação em ação.

Identificadores URN: Endereçamento Global de Recursos

Cada recurso no ARD recebe um identificador único no formato URN (Uniform Resource Name) ancorado ao domínio do publisher:

urn:air:<publisher>:<namespace>:<resource-name>

Exemplos concretos:

URNO que identifica
urn:air:acme.corp:agents:invoice-processorAgente de processamento de faturas da Acme
urn:air:huggingface.co:tools:text-generationTool de geração de texto do Hugging Face
urn:air:snowflake.com:agents:cortex-analystAgente Cortex Analyst da Snowflake

O design é domain-anchored por uma razão: o domínio funciona como raiz de confiança. Se o URN diz urn:air:acme.corp:..., você sabe que o publisher controla acme.corp e pode verificar a identidade via DNS/TLS. Não existe um registro central — o namespace é tão distribuído quanto a própria web.

Isso resolve o problema de colisão de nomes sem exigir uma autoridade centralizada. Dois publishers podem ter um agente chamado “invoice-processor” sem conflito, porque o domínio os diferencia.

Trust Manifest: Verificação Criptográfica

Discovery sem trust é um vetor de ataque. Se qualquer agente pode se listar em um registry, como o consumidor sabe que aquele “Invoice Processor” não é um impostor?

O ARD resolve isso com o trustManifest — um objeto de metadados criptográficos que acompanha cada entry do catálogo. Ele cobre três dimensões:

1. Identidade

O publisher prova quem é através de mecanismos padronizados:

  • HTTPS FQDN — o mais simples: o recurso está no domínio X, e o TLS do domínio X prova ownership
  • SPIFFE IDs — identidade workload-level para ambientes cloud-native (ex: spiffe://acme.corp/agents/invoice-processor)
  • DIDs (Decentralized Identifiers) — para cenários onde identidade descentralizada é necessária

2. Attestations

Certificações e compliance verificáveis. Cada attestation tem um type e um uri apontando para o documento de prova:

  • { "type": "SOC2-Type2", "uri": "https://trust.acme.corp/reports/soc2.pdf" }
  • { "type": "HIPAA-Audit", "uri": "https://trust.acme.corp/compliance/hipaa" }
  • { "type": "GDPR", "uri": "https://trust.acme.corp/compliance/gdpr" }

Não é um campo free-text. O formato estruturado permite que um agente consumidor filtre programaticamente por compliance requirements antes de consumir o recurso.

3. Proveniência

Metadados sobre a origem do recurso: quem criou, quando foi publicado, qual versão da spec implementa, histórico de atualizações.

O trustManifest não substitui uma avaliação de segurança completa — mas dá ao agente consumidor informações verificáveis para tomar decisões de trust automaticamente. Um agente enterprise pode ser configurado com uma política: “só consumir recursos com attestation SOC2 e identidade via SPIFFE”. O registry filtra antes de retornar resultados.

Federação: Como Registries Conversam

Em produção, não vai existir um único registry global. Empresas terão registries privados, provedores de cloud terão registries públicos, comunidades open-source terão os deles. A spec define três modos de federação para interconexão:

ModoComportamentoUse case
autoMerge automático — o registry combina resultados locais com resultados de registries federadosDiscovery amplo, maximiza cobertura
referralsRetorna ponteiros para outros registries em vez de resultados diretosQuando o registro federado exige autenticação separada
noneSó resultados locais, sem federaçãoAmbientes isolados, compliance strict

Na prática, federação funciona assim: seu agente faz POST /search no registry corporativo. O registry verifica localmente, e se estiver no modo auto, também consulta registries federados (ex: o registry público do Hugging Face). Os resultados voltam unificados, com indicação de origem.

O modo referrals é mais conservador — o registry diz “não tenho isso, mas o registry X pode ter” e retorna o endpoint dele. O agente decide se quer seguir o referral. Isso é útil quando registries federados exigem autenticação própria ou operam sob jurisdições diferentes.

O modo none existe para ambientes regulados onde nenhum dado deve sair do perímetro — bancos, hospitais, governo. O registry funciona como catálogo interno e ponto final.

ARD vs MCP vs A2A: O Stack Completo

“Mais um protocolo? Por que não resolve tudo com MCP?”

Porque cada um resolve uma camada diferente — e as três são necessárias:

DimensãoMCPA2AARD
Pergunta que responde“Como chamo essa tool?”“Como falo com esse agente?”“Quem sabe fazer o que eu preciso?”
CamadaExecuçãoComunicaçãoDiscovery
AnalogiaO telefoneA língua francaA lista telefônica
PublisherAnthropicGoogleGoogle + Microsoft + Hugging Face
TimingNov 2024Abr 2025Jun 2026
Pré-requisitoMCP e/ou A2A

ARD não substitui MCP ou A2A. É a camada que senta na frente deles. O fluxo completo funciona assim:

  1. ARD — Agente busca “quem processa faturas em PDF com compliance SOC2?”
  2. A2A — Agente inicia comunicação com o Invoice Processor descoberto
  3. MCP — Durante a conversa, o Invoice Processor chama tools de OCR e ERP via MCP

Sem ARD, o passo 1 é manual — um humano configura quais agentes cada sistema conhece. Com ARD, esse discovery acontece programaticamente, em tempo real, com verificação de trust.

Os três protocolos resolvem camadas diferentes: MCP deu braços aos agentes (tools). A2A deu voz (comunicação peer-to-peer). ARD dá visão (discovery do ecossistema).

Quem Já Implementou

A spec tem pouco mais de um mês desde a publicação, mas as implementações já estão em produção ou em beta avançado:

Hugging Face — A implementação de referência. O Discover Tool (hf discover search) faz busca semântica sobre os Spaces, retornando agentes e tools no formato ARD. Se você já usa o Hugging Face, pode testar hoje.

Snowflake — Cortex Agents com auto-registro ARD. Quando você deploya um agente via Cortex, ele se registra automaticamente no registry corporativo, ficando descobrível por outros agentes do mesmo tenant.

Google Cloud — Agent Registry no Gemini Enterprise Agent Platform. Anunciado na Cloud Next ’26, disponível em breve. Será o registry nativo para quem usa Vertex AI Agent Builder.

GoDaddy — Agent Name Service (ANS), uma abordagem fascinante que usa DNS e PKI existentes como infra de identidade para agentes. Parceria com Cloudflare e Infoblox. Em vez de inventar uma nova camada de identidade, reutiliza a infraestrutura de nomes que já opera na internet há décadas.

IETF — O draft draft-hood-agtp-ard-00 está em processo de formalização, sinalizando que o ARD pode se tornar um padrão da internet (RFC), não só uma spec de indústria.

Implementações independentes — O Suganthan.com publicou um ai-catalog.json no seu domínio e relatou que um agente externo o descobriu automaticamente e interagiu com seus recursos — validando o modelo de discovery descentralizado na prática. Isso demonstra que ARD não é só para big tech: qualquer publisher com um domínio e um JSON pode participar do ecossistema.

O que Muda pra Você

Se você trabalha com agentes de IA — como desenvolvedor, arquiteto, ou product owner — o ARD altera o jogo em três dimensões:

Se você publica ferramentas ou agentes

Publicar um ai-catalog.json no seu domínio é o novo “SEO para agentes”. Assim como você otimiza páginas para o Google encontrá-las, agora precisa publicar metadados estruturados para agentes encontrarem seus serviços.

O custo é mínimo — um arquivo JSON estático no well-known path. O retorno potencial é descobribilidade automática por qualquer agente que implemente ARD. Se você mantém um MCP server público ou um agente A2A, o catálogo é o que conecta esse recurso ao ecossistema sem depender de cadastro manual em marketplaces terceiros.

Se você constrói sistemas multi-agente

Discovery dinâmico via registry significa que seu orquestrador não precisa de uma lista estática de agentes disponíveis. Ele pode buscar capabilities em tempo real, adaptar-se a novos agentes que aparecem no ecossistema, e respeitar políticas de trust automaticamente.

Isso transforma arquiteturas multi-agente de “configuração manual para cada integração” para “discovery e composição em runtime”.

Se você opera agentes em enterprise

O trust manifest é a peça que faltava para governança. Políticas corporativas podem ser expressas como filtros de registry: “só agentes com SPIFFE ID do nosso cluster”, “só recursos com SOC2 e GDPR”, “federar com o registry da consultoria X mas não com registries públicos”.

Isso dá ao security team controle programático sobre quais recursos os agentes internos podem descobrir e consumir — sem bloquear a agilidade dos times que deployam novos agentes.


MCP para execução, A2A para comunicação, ARD para discovery. Cada camada resolve um problema distinto, e juntas formam a infraestrutura para agentes operarem em ecossistemas abertos — não em silos configurados à mão.

O ARD v0.9 ainda é draft. Vai evoluir, schemas vão mudar, e haverá edge cases não cobertos. Mas o modelo mental — catálogo estático para publishers, registry dinâmico para busca, trustManifest para segurança, federação para escala — já está claro. E já está em produção.

Se você publica tools ou agentes: crie seu ai-catalog.json. Se você consome: comece a integrar busca via registry. O custo de adoção é baixo, e o ecossistema não vai esperar.