<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cradicle Explorer</title>
    <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <style>
      .form-control-dark::placeholder {
          color: #aaa;
          opacity: 1;
      }
    </style>
    <link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
    <link rel="icon" type="image/png" href="/favicon.png">


                <link href="/css/dashboard.css" rel="stylesheet">
                </head>
                <body>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                  <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="/">Cradicle Explorer</a>
                  <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                  </button>
                  <form method="get" action="/cgi-bin/main" style="width:100%;"><input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" name="q" placeholder="Search repos" aria-label="Search"></form>
                  <div class="navbar-nav flex-row">
                    <div class="nav-item text-nowrap">
                      <a class="nav-link px-3 active" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf">ai-data-frameworks_solace-agent-mesh</a>
                    </div>
                  </div>
                </header>
                <div class="container-fluid">
                  <div class="row">
                    <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-dark sidebar collapse">
                      <div class="position-sticky pt-3 sidebar-sticky">
                        <ul class="nav flex-column">
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf">
                              <i class="align-text-bottom fa-solid fa-info"></i>
                              Info
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&issue=list">
                              <i class="align-text-bottom fa-solid fa-layer-group"></i>
                              Issues
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&patch=list">
                              <i class="align-text-bottom fa-solid fa-vest-patches"></i>
                              Patches
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&wallet=list">
                              <i class="align-text-bottom fa-solid fa-wallet"></i>
                              Wallets
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link active" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=.">
                              <i class="align-text-bottom fa-solid fa-code"></i>
                              Source
                            </a>
                          </li>
                        <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase">
                          <span></span>
                        </h6>
                        <ul class="nav flex-column mb-2">
                        
    <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-1 mb-1 text-muted text-uppercase">
      <span>Source</span>
    </h6>
    <li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=.github"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .github</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=.hooks"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .hooks</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=.vscode"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .vscode</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=THIRD_PARTY_LICENSES"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> THIRD_PARTY_LICENSES</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=cli"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> cli</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=client"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> client</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=config_portal"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> config_portal</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> docs</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> docs</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> documentation</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation%2Fcomponents"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> components</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation%2Fdeploying"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> deploying</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation%2Fdeveloping"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> developing</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> tutorials</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2F_category_.json"><i class="fa-solid fa-file" style="color:#888;"></i> _category_.json</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Fbedrock-agents.md"><i class="fa-solid fa-file" style="color:#888;"></i> bedrock-agents.md</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Fbuilding-custom-agent-images.md"><i class="fa-solid fa-file" style="color:#888;"></i> building-custom-agent-images.md</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Fcustom-agent.md"><i class="fa-solid fa-file" style="color:#888;"></i> custom-agent.md</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Fevent-mesh-gateway.md"><i class="fa-solid fa-file" style="color:#888;"></i> event-mesh-gateway.md</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Fmcp-gateway.md"><i class="fa-solid fa-file" style="color:#888;"></i> mcp-gateway.md</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Fmcp-integration.md"><i class="fa-solid fa-file" style="color:#888;"></i> mcp-integration.md</a></li><li><a class="nav-link py-0 active" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Fmongodb-integration.md"><i class="fa-solid fa-file" style="color:#888;"></i> mongodb-integration.md</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Frag-integration.md"><i class="fa-solid fa-file" style="color:#888;"></i> rag-integration.md</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Frest-gateway.md"><i class="fa-solid fa-file" style="color:#888;"></i> rest-gateway.md</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Fslack-integration.md"><i class="fa-solid fa-file" style="color:#888;"></i> slack-integration.md</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Fsql-database.md"><i class="fa-solid fa-file" style="color:#888;"></i> sql-database.md</a></li><li><a class="nav-link py-0" style="padding-left:96px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials%2Fteams-integration.md"><i class="fa-solid fa-file" style="color:#888;"></i> teams-integration.md</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2F_category_.json"><i class="fa-solid fa-file" style="color:#888;"></i> _category_.json</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Fcreate-agents.md"><i class="fa-solid fa-file" style="color:#888;"></i> create-agents.md</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Fcreate-gateways.md"><i class="fa-solid fa-file" style="color:#888;"></i> create-gateways.md</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Fcreating-python-tools.md"><i class="fa-solid fa-file" style="color:#888;"></i> creating-python-tools.md</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Fcreating-service-providers.md"><i class="fa-solid fa-file" style="color:#888;"></i> creating-service-providers.md</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Fcreating-workflows.md"><i class="fa-solid fa-file" style="color:#888;"></i> creating-workflows.md</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Fdeveloping.md"><i class="fa-solid fa-file" style="color:#888;"></i> developing.md</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Fevaluations.md"><i class="fa-solid fa-file" style="color:#888;"></i> evaluations.md</a></li><li><a class="nav-link py-0" style="padding-left:80px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Fstructure.md"><i class="fa-solid fa-file" style="color:#888;"></i> structure.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation%2Fenterprise"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> enterprise</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation%2Fgetting-started"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> getting-started</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation%2Finstalling-and-configuring"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> installing-and-configuring</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation%2Fmigrations"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> migrations</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocs%2Fdocumentation%2Fvibe_coding.md"><i class="fa-solid fa-file" style="color:#888;"></i> vibe_coding.md</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fpartials"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> partials</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fsrc"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> src</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fstatic"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> static</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2F.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2F.npmrc"><i class="fa-solid fa-file" style="color:#888;"></i> .npmrc</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2FREADME.md"><i class="fa-solid fa-file" style="color:#888;"></i> README.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fdocusaurus.config.ts"><i class="fa-solid fa-file" style="color:#888;"></i> docusaurus.config.ts</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fpackage-lock.json"><i class="fa-solid fa-file" style="color:#888;"></i> package-lock.json</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fpackage.json"><i class="fa-solid fa-file" style="color:#888;"></i> package.json</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Fsidebars.ts"><i class="fa-solid fa-file" style="color:#888;"></i> sidebars.ts</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=docs%2Ftsconfig.json"><i class="fa-solid fa-file" style="color:#888;"></i> tsconfig.json</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=evaluation"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> evaluation</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=examples"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> examples</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=preset"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> preset</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=scripts"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> scripts</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=src"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> src</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=templates"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> templates</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=tests"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> tests</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=.dockerignore"><i class="fa-solid fa-file" style="color:#888;"></i> .dockerignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=.fossa.yml"><i class="fa-solid fa-file" style="color:#888;"></i> .fossa.yml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=.release-please-manifest.json"><i class="fa-solid fa-file" style="color:#888;"></i> .release-please-manifest.json</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=.versionrc.json"><i class="fa-solid fa-file" style="color:#888;"></i> .versionrc.json</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=CHANGELOG.md"><i class="fa-solid fa-file" style="color:#888;"></i> CHANGELOG.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=CODE_OF_CONDUCT.md"><i class="fa-solid fa-file" style="color:#888;"></i> CODE_OF_CONDUCT.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=CONTRIBUTING.md"><i class="fa-solid fa-file" style="color:#888;"></i> CONTRIBUTING.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=Dockerfile"><i class="fa-solid fa-file" style="color:#888;"></i> Dockerfile</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=LICENSE"><i class="fa-solid fa-file" style="color:#888;"></i> LICENSE</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=Makefile"><i class="fa-solid fa-file" style="color:#888;"></i> Makefile</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=README.md"><i class="fa-solid fa-file" style="color:#888;"></i> README.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=RELEASE_PROCESS.md"><i class="fa-solid fa-file" style="color:#888;"></i> RELEASE_PROCESS.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=context7.json"><i class="fa-solid fa-file" style="color:#888;"></i> context7.json</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=pyproject.toml"><i class="fa-solid fa-file" style="color:#888;"></i> pyproject.toml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=release-please-config.json"><i class="fa-solid fa-file" style="color:#888;"></i> release-please-config.json</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=sonar-project.properties"><i class="fa-solid fa-file" style="color:#888;"></i> sonar-project.properties</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=uv.lock"><i class="fa-solid fa-file" style="color:#888;"></i> uv.lock</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&file=wss-unified-agent.config"><i class="fa-solid fa-file" style="color:#888;"></i> wss-unified-agent.config</a></li>
    
                        </ul>
                      </div>
                    </nav>
                <main class="col-md-9 ms-sm-auto col-lg-10">
                  <div class="container px-1 py-3">
        
<div class="mb-2" style="font-size:1.1rem;"><a href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=.">/</a> <a href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs">docs</a> / <a href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs">docs</a> / <a href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation">documentation</a> / <a href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation%2Fdeveloping">developing</a> / <a href="/cgi-bin/repo?id=zRxKoYRDpYZptZmoWgddjvWDv4Hf&source=docs%2Fdocs%2Fdocumentation%2Fdeveloping%2Ftutorials">tutorials</a> / mongodb-integration.md</div>
        <div class="list-group">
        <div class="list-group-item">
        <div class="mb-2" style="font-weight:bold;"><i class="fa-solid fa-file"></i> mongodb-integration.md</div>
        <pre style="margin:0; font-size:0.85rem; overflow-x:auto; color:#fafafa;"><span style="color:#666; user-select:none;">  1</span>  ---
<span style="color:#666; user-select:none;">  2</span>  title: MongoDB Integration
<span style="color:#666; user-select:none;">  3</span>  sidebar_position: 50
<span style="color:#666; user-select:none;">  4</span>  ---
<span style="color:#666; user-select:none;">  5</span>  
<span style="color:#666; user-select:none;">  6</span>  # MongoDB Integration
<span style="color:#666; user-select:none;">  7</span>  
<span style="color:#666; user-select:none;">  8</span>  This tutorial sets up a MongoDB agent in Agent Mesh, which allows the Agent Mesh agent to answer natural language queries about a Mongo database. The agent translates user questions into MongoDB aggregation pipelines and executes them against your database.
<span style="color:#666; user-select:none;">  9</span>  
<span style="color:#666; user-select:none;"> 10</span>  ## Prerequisites
<span style="color:#666; user-select:none;"> 11</span>  
<span style="color:#666; user-select:none;"> 12</span>  Before starting this tutorial, ensure that you have installed and configured Agent Mesh:
<span style="color:#666; user-select:none;"> 13</span>  
<span style="color:#666; user-select:none;"> 14</span>  - [Installed Agent Mesh and the Agent Mesh CLI](../../installing-and-configuring/installation.md)
<span style="color:#666; user-select:none;"> 15</span>  - [Created a new Agent Mesh project](../../installing-and-configuring/run-project.md)
<span style="color:#666; user-select:none;"> 16</span>  - Access to a MongoDB database (local or remote)
<span style="color:#666; user-select:none;"> 17</span>  
<span style="color:#666; user-select:none;"> 18</span>  ## Adding the MongoDB Plugin
<span style="color:#666; user-select:none;"> 19</span>  
<span style="color:#666; user-select:none;"> 20</span>  Add the MongoDB plugin to your Agent Mesh project:
<span style="color:#666; user-select:none;"> 21</span>  
<span style="color:#666; user-select:none;"> 22</span>  ```sh
<span style="color:#666; user-select:none;"> 23</span>  sam plugin add coffee-shop-mongo --plugin sam-mongodb
<span style="color:#666; user-select:none;"> 24</span>  ```
<span style="color:#666; user-select:none;"> 25</span>  
<span style="color:#666; user-select:none;"> 26</span>  You can use any name for your agent, in this tutorial we use `coffee-shop-mongo`.
<span style="color:#666; user-select:none;"> 27</span>  
<span style="color:#666; user-select:none;"> 28</span>  This command:
<span style="color:#666; user-select:none;"> 29</span>  - Installs the `sam-mongodb` plugin
<span style="color:#666; user-select:none;"> 30</span>  - Creates a new agent configuration file at `configs/agents/coffee-shop-mongo.yaml`
<span style="color:#666; user-select:none;"> 31</span>  
<span style="color:#666; user-select:none;"> 32</span>  
<span style="color:#666; user-select:none;"> 33</span>  #### Setting Up Your MongoDB Database
<span style="color:#666; user-select:none;"> 34</span>  
<span style="color:#666; user-select:none;"> 35</span>  This tutorial assumes you have a MongoDB database with a collection containing coffee shop data. You can use any MongoDB database, but here is an example structure for a coffee shop:
<span style="color:#666; user-select:none;"> 36</span>  
<span style="color:#666; user-select:none;"> 37</span>  #### Example Document Structure
<span style="color:#666; user-select:none;"> 38</span>  
<span style="color:#666; user-select:none;"> 39</span>  ```json
<span style="color:#666; user-select:none;"> 40</span>  {
<span style="color:#666; user-select:none;"> 41</span>    &quot;_id&quot;: &quot;64a1b2c3d4e5f6789012345&quot;,
<span style="color:#666; user-select:none;"> 42</span>    &quot;order_id&quot;: &quot;ORD-2024-001&quot;,
<span style="color:#666; user-select:none;"> 43</span>    &quot;customer&quot;: {
<span style="color:#666; user-select:none;"> 44</span>      &quot;name&quot;: &quot;John Doe&quot;,
<span style="color:#666; user-select:none;"> 45</span>      &quot;email&quot;: &quot;john.doe@example.com&quot;,
<span style="color:#666; user-select:none;"> 46</span>      &quot;phone&quot;: &quot;+1-555-0123&quot;
<span style="color:#666; user-select:none;"> 47</span>    },
<span style="color:#666; user-select:none;"> 48</span>    &quot;items&quot;: [
<span style="color:#666; user-select:none;"> 49</span>      {
<span style="color:#666; user-select:none;"> 50</span>        &quot;product&quot;: &quot;Espresso&quot;,
<span style="color:#666; user-select:none;"> 51</span>        &quot;quantity&quot;: 2,
<span style="color:#666; user-select:none;"> 52</span>        &quot;price&quot;: 3.50,
<span style="color:#666; user-select:none;"> 53</span>        &quot;category&quot;: &quot;Coffee&quot;
<span style="color:#666; user-select:none;"> 54</span>      },
<span style="color:#666; user-select:none;"> 55</span>      {
<span style="color:#666; user-select:none;"> 56</span>        &quot;product&quot;: &quot;Croissant&quot;,
<span style="color:#666; user-select:none;"> 57</span>        &quot;quantity&quot;: 1,
<span style="color:#666; user-select:none;"> 58</span>        &quot;price&quot;: 2.75,
<span style="color:#666; user-select:none;"> 59</span>        &quot;category&quot;: &quot;Pastry&quot;
<span style="color:#666; user-select:none;"> 60</span>      }
<span style="color:#666; user-select:none;"> 61</span>    ],
<span style="color:#666; user-select:none;"> 62</span>    &quot;total_amount&quot;: 9.75,
<span style="color:#666; user-select:none;"> 63</span>    &quot;order_date&quot;: &quot;2024-01-15T10:30:00Z&quot;,
<span style="color:#666; user-select:none;"> 64</span>    &quot;status&quot;: &quot;completed&quot;,
<span style="color:#666; user-select:none;"> 65</span>    &quot;payment_method&quot;: &quot;credit_card&quot;,
<span style="color:#666; user-select:none;"> 66</span>    &quot;location&quot;: &quot;Downtown Store&quot;
<span style="color:#666; user-select:none;"> 67</span>  }
<span style="color:#666; user-select:none;"> 68</span>  ```
<span style="color:#666; user-select:none;"> 69</span>  
<span style="color:#666; user-select:none;"> 70</span>  ## Configuring the Agent
<span style="color:#666; user-select:none;"> 71</span>  
<span style="color:#666; user-select:none;"> 72</span>  Open the `configs/agents/coffee-shop-mongo.yaml` file and modify the `agent_init_function.config` section to connect to your MongoDB database.
<span style="color:#666; user-select:none;"> 73</span>  
<span style="color:#666; user-select:none;"> 74</span>  Here is what you need to modify in the configuration file:
<span style="color:#666; user-select:none;"> 75</span>  
<span style="color:#666; user-select:none;"> 76</span>  ```yaml
<span style="color:#666; user-select:none;"> 77</span>  # Find the agent_init_function section and update the config:
<span style="color:#666; user-select:none;"> 78</span>  agent_init_function:
<span style="color:#666; user-select:none;"> 79</span>    module: &quot;sam_mongodb.lifecycle&quot;
<span style="color:#666; user-select:none;"> 80</span>    name: &quot;initialize_mongo_agent&quot;
<span style="color:#666; user-select:none;"> 81</span>    config:
<span style="color:#666; user-select:none;"> 82</span>      db_host: &quot;${COFFEE_SHOP_MONGO_MONGO_HOST}&quot;
<span style="color:#666; user-select:none;"> 83</span>      db_port: ${COFFEE_SHOP_MONGO_MONGO_PORT}
<span style="color:#666; user-select:none;"> 84</span>      db_user: &quot;${COFFEE_SHOP_MONGO_MONGO_USER}&quot;
<span style="color:#666; user-select:none;"> 85</span>      db_password: &quot;${COFFEE_SHOP_MONGO_MONGO_PASSWORD}&quot;
<span style="color:#666; user-select:none;"> 86</span>      db_name: &quot;${COFFEE_SHOP_MONGO_MONGO_DB}&quot;
<span style="color:#666; user-select:none;"> 87</span>      database_collection: &quot;${COFFEE_SHOP_MONGO_MONGO_COLLECTION}&quot;
<span style="color:#666; user-select:none;"> 88</span>      database_purpose: &quot;${COFFEE_SHOP_MONGO_DB_PURPOSE}&quot;
<span style="color:#666; user-select:none;"> 89</span>      data_description: &quot;${COFFEE_SHOP_MONGO_DB_DESCRIPTION}&quot;
<span style="color:#666; user-select:none;"> 90</span>      auto_detect_schema: true
<span style="color:#666; user-select:none;"> 91</span>      max_inline_results: 10
<span style="color:#666; user-select:none;"> 92</span>  ```
<span style="color:#666; user-select:none;"> 93</span>  
<span style="color:#666; user-select:none;"> 94</span>  #### Setting the Environment Variables
<span style="color:#666; user-select:none;"> 95</span>  
<span style="color:#666; user-select:none;"> 96</span>  The MongoDB agent requires several environment variables. Create or update your `.env` file with the following variables:
<span style="color:#666; user-select:none;"> 97</span>  
<span style="color:#666; user-select:none;"> 98</span>  ```bash
<span style="color:#666; user-select:none;"> 99</span>  # MongoDB Connection Settings
<span style="color:#666; user-select:none;">100</span>  COFFEE_SHOP_MONGO_MONGO_HOST=localhost
<span style="color:#666; user-select:none;">101</span>  COFFEE_SHOP_MONGO_MONGO_PORT=27017
<span style="color:#666; user-select:none;">102</span>  COFFEE_SHOP_MONGO_MONGO_USER=your_username
<span style="color:#666; user-select:none;">103</span>  COFFEE_SHOP_MONGO_MONGO_PASSWORD=your_password
<span style="color:#666; user-select:none;">104</span>  COFFEE_SHOP_MONGO_MONGO_DB=coffee_shop
<span style="color:#666; user-select:none;">105</span>  COFFEE_SHOP_MONGO_MONGO_COLLECTION=orders
<span style="color:#666; user-select:none;">106</span>  
<span style="color:#666; user-select:none;">107</span>  # Database Description
<span style="color:#666; user-select:none;">108</span>  COFFEE_SHOP_MONGO_DB_PURPOSE=&quot;Coffee shop order management database&quot;
<span style="color:#666; user-select:none;">109</span>  COFFEE_SHOP_MONGO_DB_DESCRIPTION=&quot;Contains customer orders, product information, sales data, and transaction history for a coffee shop business.&quot;
<span style="color:#666; user-select:none;">110</span>  
<span style="color:#666; user-select:none;">111</span>  # Optional Settings
<span style="color:#666; user-select:none;">112</span>  AUTO_DETECT_SCHEMA=true
<span style="color:#666; user-select:none;">113</span>  MAX_INLINE_RESULTS=10
<span style="color:#666; user-select:none;">114</span>  ```
<span style="color:#666; user-select:none;">115</span>  
<span style="color:#666; user-select:none;">116</span>  #### MongoDB Connection Options
<span style="color:#666; user-select:none;">117</span>  
<span style="color:#666; user-select:none;">118</span>  - **Local MongoDB**: Use `localhost` as the host and default port `27017`
<span style="color:#666; user-select:none;">119</span>  - **MongoDB Atlas**: Use your Atlas connection string format
<span style="color:#666; user-select:none;">120</span>  - **Authentication**: Provide username and password if your MongoDB requires authentication
<span style="color:#666; user-select:none;">121</span>  - **No Authentication**: Leave username and password empty for local development databases
<span style="color:#666; user-select:none;">122</span>  
<span style="color:#666; user-select:none;">123</span>  ## Running the Agent
<span style="color:#666; user-select:none;">124</span>  
<span style="color:#666; user-select:none;">125</span>  Now you can start your MongoDB agent:
<span style="color:#666; user-select:none;">126</span>  
<span style="color:#666; user-select:none;">127</span>  ```sh
<span style="color:#666; user-select:none;">128</span>  sam run configs/agents/coffee-shop-mongo.yaml
<span style="color:#666; user-select:none;">129</span>  ```
<span style="color:#666; user-select:none;">130</span>  
<span style="color:#666; user-select:none;">131</span>  The agent:
<span style="color:#666; user-select:none;">132</span>  1. Connects to the A2A control plane
<span style="color:#666; user-select:none;">133</span>  2. Initializes the MongoDB connection
<span style="color:#666; user-select:none;">134</span>  3. Detects the database schema automatically
<span style="color:#666; user-select:none;">135</span>  4. Registers its capabilities with the agent discovery system
<span style="color:#666; user-select:none;">136</span>  
<span style="color:#666; user-select:none;">137</span>  ## Interacting with the Database
<span style="color:#666; user-select:none;">138</span>  
<span style="color:#666; user-select:none;">139</span>  After your MongoDB agent is running, you can interact with the database through any gateway in your Agent Mesh project (such as the Web UI gateway at `http://localhost:8000`).
<span style="color:#666; user-select:none;">140</span>  
<span style="color:#666; user-select:none;">141</span>  You can ask natural language questions about your MongoDB database, such as:
<span style="color:#666; user-select:none;">142</span>  
<span style="color:#666; user-select:none;">143</span>  - &quot;How many orders were placed today?&quot;
<span style="color:#666; user-select:none;">144</span>  - &quot;What are the most popular coffee products?&quot;
<span style="color:#666; user-select:none;">145</span>  - &quot;Show me all orders from customers in New York&quot;
<span style="color:#666; user-select:none;">146</span>  - &quot;What&#x27;s the average order value this month?&quot;
<span style="color:#666; user-select:none;">147</span>  - &quot;Find all incomplete orders&quot;
<span style="color:#666; user-select:none;">148</span>  - &quot;Group orders by payment method and show totals&quot;
<span style="color:#666; user-select:none;">149</span>  
<span style="color:#666; user-select:none;">150</span>  Try creating reports by asking questions such as:
<span style="color:#666; user-select:none;">151</span>  
<span style="color:#666; user-select:none;">152</span>  - &quot;Create a sales report for the last 7 days&quot;
<span style="color:#666; user-select:none;">153</span>  - &quot;Generate a summary of customer preferences&quot;
<span style="color:#666; user-select:none;">154</span>  - &quot;Show me the top 10 customers by total spending&quot;
<span style="color:#666; user-select:none;">155</span>  
<span style="color:#666; user-select:none;">156</span>  The MongoDB agent converts your natural language questions into MongoDB aggregation pipelines, executes them against the database, and returns the results. For large result sets, the agent automatically saves the results as artifacts that you can download.
<span style="color:#666; user-select:none;">157</span>  
<span style="color:#666; user-select:none;">158</span>  ## Advanced Configuration
<span style="color:#666; user-select:none;">159</span>  
<span style="color:#666; user-select:none;">160</span>  The MongoDB plugin supports many advanced configuration options. Here is a complete example based on the plugin structure:
<span style="color:#666; user-select:none;">161</span>  
<span style="color:#666; user-select:none;">162</span>  ```yaml
<span style="color:#666; user-select:none;">163</span>  log:
<span style="color:#666; user-select:none;">164</span>    stdout_log_level: INFO
<span style="color:#666; user-select:none;">165</span>    log_file_level: DEBUG
<span style="color:#666; user-select:none;">166</span>    log_file: coffee-shop-mongo.log
<span style="color:#666; user-select:none;">167</span>  
<span style="color:#666; user-select:none;">168</span>  !include ../shared_config.yaml
<span style="color:#666; user-select:none;">169</span>  
<span style="color:#666; user-select:none;">170</span>  apps:
<span style="color:#666; user-select:none;">171</span>    - name: coffee-shop-mongo-app
<span style="color:#666; user-select:none;">172</span>      app_module: solace_agent_mesh.agent.sac.app 
<span style="color:#666; user-select:none;">173</span>      broker:
<span style="color:#666; user-select:none;">174</span>        &lt;&lt;: *broker_connection
<span style="color:#666; user-select:none;">175</span>  
<span style="color:#666; user-select:none;">176</span>      app_config:
<span style="color:#666; user-select:none;">177</span>        namespace: ${NAMESPACE}
<span style="color:#666; user-select:none;">178</span>        agent_name: &quot;CoffeeShopMongo&quot;
<span style="color:#666; user-select:none;">179</span>        display_name: &quot;Coffee Shop MongoDB Agent&quot;
<span style="color:#666; user-select:none;">180</span>        supports_streaming: false
<span style="color:#666; user-select:none;">181</span>        model: *general_model
<span style="color:#666; user-select:none;">182</span>        model_provider: 
<span style="color:#666; user-select:none;">183</span>          - &quot;general&quot;
<span style="color:#666; user-select:none;">184</span>  
<span style="color:#666; user-select:none;">185</span>        instruction: |
<span style="color:#666; user-select:none;">186</span>          You are an expert MongoDB assistant for the coffee shop database.
<span style="color:#666; user-select:none;">187</span>          Your primary goal is to translate user questions into accurate MongoDB aggregation pipelines.
<span style="color:#666; user-select:none;">188</span>          When asked to query the database, generate the pipeline and call the query tool.
<span style="color:#666; user-select:none;">189</span>          If the tool returns an error, analyze the error message and the original pipeline,
<span style="color:#666; user-select:none;">190</span>          then try to correct the pipeline and call the tool again.
<span style="color:#666; user-select:none;">191</span>          Always provide clear explanations of the results you find.
<span style="color:#666; user-select:none;">192</span>  
<span style="color:#666; user-select:none;">193</span>        # Agent initialization with database setup
<span style="color:#666; user-select:none;">194</span>        agent_init_function:
<span style="color:#666; user-select:none;">195</span>          module: &quot;sam_mongodb.lifecycle&quot;
<span style="color:#666; user-select:none;">196</span>          name: &quot;initialize_mongo_agent&quot;
<span style="color:#666; user-select:none;">197</span>          config:
<span style="color:#666; user-select:none;">198</span>            db_host: &quot;${COFFEE_SHOP_MONGO_MONGO_HOST}&quot;
<span style="color:#666; user-select:none;">199</span>            db_port: ${COFFEE_SHOP_MONGO_MONGO_PORT}
<span style="color:#666; user-select:none;">200</span>            db_user: &quot;${COFFEE_SHOP_MONGO_MONGO_USER}&quot;
<span style="color:#666; user-select:none;">201</span>            db_password: &quot;${COFFEE_SHOP_MONGO_MONGO_PASSWORD}&quot;
<span style="color:#666; user-select:none;">202</span>            db_name: &quot;${COFFEE_SHOP_MONGO_MONGO_DB}&quot;
<span style="color:#666; user-select:none;">203</span>            database_collection: &quot;${COFFEE_SHOP_MONGO_MONGO_COLLECTION}&quot;
<span style="color:#666; user-select:none;">204</span>            database_purpose: &quot;${COFFEE_SHOP_MONGO_DB_PURPOSE}&quot;
<span style="color:#666; user-select:none;">205</span>            data_description: &quot;${COFFEE_SHOP_MONGO_DB_DESCRIPTION}&quot;
<span style="color:#666; user-select:none;">206</span>            auto_detect_schema: true
<span style="color:#666; user-select:none;">207</span>            max_inline_results: 10
<span style="color:#666; user-select:none;">208</span>  
<span style="color:#666; user-select:none;">209</span>        agent_cleanup_function:
<span style="color:#666; user-select:none;">210</span>          module: &quot;sam_mongodb.lifecycle&quot;
<span style="color:#666; user-select:none;">211</span>          name: &quot;cleanup_mongo_agent_resources&quot;
<span style="color:#666; user-select:none;">212</span>  
<span style="color:#666; user-select:none;">213</span>        # MongoDB query tool
<span style="color:#666; user-select:none;">214</span>        tools:
<span style="color:#666; user-select:none;">215</span>          - tool_type: builtin-group
<span style="color:#666; user-select:none;">216</span>            group_name: &quot;artifact_management&quot;
<span style="color:#666; user-select:none;">217</span>          - tool_type: builtin-group
<span style="color:#666; user-select:none;">218</span>            group_name: &quot;data_analysis&quot;
<span style="color:#666; user-select:none;">219</span>          - tool_type: python
<span style="color:#666; user-select:none;">220</span>            component_module: &quot;sam_mongodb.search_query&quot;
<span style="color:#666; user-select:none;">221</span>            function_name: &quot;mongo_query&quot;
<span style="color:#666; user-select:none;">222</span>            tool_config:
<span style="color:#666; user-select:none;">223</span>              collection: &quot;${COFFEE_SHOP_MONGO_MONGO_COLLECTION}&quot;
<span style="color:#666; user-select:none;">224</span>  
<span style="color:#666; user-select:none;">225</span>        session_service: *default_session_service
<span style="color:#666; user-select:none;">226</span>        artifact_service: *default_artifact_service
<span style="color:#666; user-select:none;">227</span>  
<span style="color:#666; user-select:none;">228</span>        # Artifact handling
<span style="color:#666; user-select:none;">229</span>        artifact_handling_mode: &quot;reference&quot;
<span style="color:#666; user-select:none;">230</span>        enable_embed_resolution: true
<span style="color:#666; user-select:none;">231</span>        enable_artifact_content_instruction: true
<span style="color:#666; user-select:none;">232</span>  
<span style="color:#666; user-select:none;">233</span>        # Agent capabilities - This is what other agents see during discovery
<span style="color:#666; user-select:none;">234</span>        agent_card:
<span style="color:#666; user-select:none;">235</span>          description: &quot;Coffee Shop MongoDB Agent - Access to comprehensive coffee shop order data including customer information, product details, sales transactions, and order history. Can answer questions about sales analytics, customer behavior, product performance, and business metrics.&quot;
<span style="color:#666; user-select:none;">236</span>          defaultInputModes: [&quot;text&quot;]
<span style="color:#666; user-select:none;">237</span>          defaultOutputModes: [&quot;text&quot;, &quot;file&quot;]
<span style="color:#666; user-select:none;">238</span>          skills:
<span style="color:#666; user-select:none;">239</span>            - id: &quot;mongo_query&quot;
<span style="color:#666; user-select:none;">240</span>              name: &quot;Coffee Shop MongoDB Query&quot;
<span style="color:#666; user-select:none;">241</span>              description: &quot;Queries coffee shop MongoDB database containing customer orders, product catalog, payment transactions, and order history using aggregation pipelines.&quot;
<span style="color:#666; user-select:none;">242</span>  
<span style="color:#666; user-select:none;">243</span>        # A2A Protocol settings
<span style="color:#666; user-select:none;">244</span>        agent_card_publishing: { interval_seconds: 30 }
<span style="color:#666; user-select:none;">245</span>        agent_discovery: { enabled: true }
<span style="color:#666; user-select:none;">246</span>        inter_agent_communication:
<span style="color:#666; user-select:none;">247</span>          allow_list: [&quot;*&quot;]
<span style="color:#666; user-select:none;">248</span>          request_timeout_seconds: 60
<span style="color:#666; user-select:none;">249</span>  ```
<span style="color:#666; user-select:none;">250</span>  
<span style="color:#666; user-select:none;">251</span>  ## Customizing the Agent Card
<span style="color:#666; user-select:none;">252</span>  
<span style="color:#666; user-select:none;">253</span>  The `agent_card` section is crucial as it defines how other agents in your Agent Mesh ecosystem discover and understand this MongoDB agent&#x27;s capabilities. When other agents use agent discovery, they can see this information to decide whether to delegate tasks to your database agent.
<span style="color:#666; user-select:none;">254</span>  
<span style="color:#666; user-select:none;">255</span>  ### Key Agent Card Elements
<span style="color:#666; user-select:none;">256</span>  
<span style="color:#666; user-select:none;">257</span>  1. **Description**: Clearly describe what data the agent has access to and what types of questions it can answer
<span style="color:#666; user-select:none;">258</span>  2. **Skills**: List specific capabilities with concrete examples that show the scope of data available
<span style="color:#666; user-select:none;">259</span>  3. **Data Context**: Mention the business domain, data types, and scope of information available
<span style="color:#666; user-select:none;">260</span>  
<span style="color:#666; user-select:none;">261</span>  ### Example of a Well-Configured Agent Card
<span style="color:#666; user-select:none;">262</span>  
<span style="color:#666; user-select:none;">263</span>  ```yaml
<span style="color:#666; user-select:none;">264</span>  agent_card:
<span style="color:#666; user-select:none;">265</span>    description: &quot;Coffee Shop MongoDB Agent - Access to comprehensive coffee shop order data including customer information, product details, sales transactions, and order history. Can answer questions about sales analytics, customer behavior, product performance, and business metrics.&quot;
<span style="color:#666; user-select:none;">266</span>    defaultInputModes: [&quot;text&quot;]
<span style="color:#666; user-select:none;">267</span>    defaultOutputModes: [&quot;text&quot;, &quot;file&quot;]
<span style="color:#666; user-select:none;">268</span>    skills:
<span style="color:#666; user-select:none;">269</span>      - id: &quot;mongo_query&quot;
<span style="color:#666; user-select:none;">270</span>        name: &quot;Coffee Shop MongoDB Query&quot;
<span style="color:#666; user-select:none;">271</span>        description: &quot;Queries coffee shop MongoDB database containing customer orders, product catalog, payment transactions, and order history using aggregation pipelines.&quot;
<span style="color:#666; user-select:none;">272</span>  ```
<span style="color:#666; user-select:none;">273</span>  
<span style="color:#666; user-select:none;">274</span>  This detailed information helps other agents understand:
<span style="color:#666; user-select:none;">275</span>  - What business domain this agent covers (coffee shop operations)
<span style="color:#666; user-select:none;">276</span>  - What types of data are available (orders, customers, products, payments)
<span style="color:#666; user-select:none;">277</span>  - What kinds of questions can be answered (analytics, behavior, performance, metrics)
<span style="color:#666; user-select:none;">278</span>  - Specific examples of queries that work well with MongoDB aggregation pipelines
<span style="color:#666; user-select:none;">279</span>  
<span style="color:#666; user-select:none;">280</span>  When configuring your own MongoDB agent, customize the description and examples to match your specific data structure and use cases.
<span style="color:#666; user-select:none;">281</span>  
<span style="color:#666; user-select:none;">282</span>  ## MongoDB Query Features
<span style="color:#666; user-select:none;">283</span>  
<span style="color:#666; user-select:none;">284</span>  The MongoDB agent supports various types of queries through natural language:
<span style="color:#666; user-select:none;">285</span>  
<span style="color:#666; user-select:none;">286</span>  ### Aggregation Queries
<span style="color:#666; user-select:none;">287</span>  - &quot;Show me the top 5 products by sales volume&quot;
<span style="color:#666; user-select:none;">288</span>  - &quot;Calculate the average order value by customer segment&quot;
<span style="color:#666; user-select:none;">289</span>  - &quot;Group orders by month and show revenue trends&quot;
<span style="color:#666; user-select:none;">290</span>  
<span style="color:#666; user-select:none;">291</span>  ### Filtering and Search
<span style="color:#666; user-select:none;">292</span>  - &quot;Find all orders placed in the last 24 hours&quot;
<span style="color:#666; user-select:none;">293</span>  - &quot;Show me orders with a total amount greater than $50&quot;
<span style="color:#666; user-select:none;">294</span>  - &quot;Find customers who ordered espresso drinks&quot;
<span style="color:#666; user-select:none;">295</span>  
<span style="color:#666; user-select:none;">296</span>  ### Complex Analytics
<span style="color:#666; user-select:none;">297</span>  - &quot;What&#x27;s the conversion rate from browsing to purchase?&quot;
<span style="color:#666; user-select:none;">298</span>  - &quot;Show me the busiest hours of the day&quot;
<span style="color:#666; user-select:none;">299</span>  - &quot;Calculate customer lifetime value&quot;
<span style="color:#666; user-select:none;">300</span>  
<span style="color:#666; user-select:none;">301</span>  ### Output Formats
<span style="color:#666; user-select:none;">302</span>  
<span style="color:#666; user-select:none;">303</span>  The agent supports multiple output formats:
<span style="color:#666; user-select:none;">304</span>  - **JSON**: Default format, good for structured data
<span style="color:#666; user-select:none;">305</span>  - **YAML**: Human-readable format
<span style="color:#666; user-select:none;">306</span>  - **CSV**: Suitable for spreadsheet import
<span style="color:#666; user-select:none;">307</span>  - **Markdown**: Formatted for documentation
<span style="color:#666; user-select:none;">308</span>  
<span style="color:#666; user-select:none;">309</span>  You can specify the format in your query: &quot;Show me today&#x27;s sales in CSV format&quot;
<span style="color:#666; user-select:none;">310</span>  
<span style="color:#666; user-select:none;">311</span>  ## Troubleshooting
<span style="color:#666; user-select:none;">312</span>  
<span style="color:#666; user-select:none;">313</span>  ### Common Issues and Solutions
<span style="color:#666; user-select:none;">314</span>  
<span style="color:#666; user-select:none;">315</span>  #### Connection Errors
<span style="color:#666; user-select:none;">316</span>  **Issue**: &quot;Unable to connect to MongoDB&quot; errors
<span style="color:#666; user-select:none;">317</span>  **Solution**:
<span style="color:#666; user-select:none;">318</span>  - Verify your MongoDB server is running
<span style="color:#666; user-select:none;">319</span>  - Check connection parameters (host, port, credentials)
<span style="color:#666; user-select:none;">320</span>  - Ensure network connectivity and firewall settings
<span style="color:#666; user-select:none;">321</span>  - Test connection using MongoDB client tools
<span style="color:#666; user-select:none;">322</span>  
<span style="color:#666; user-select:none;">323</span>  #### Authentication Errors
<span style="color:#666; user-select:none;">324</span>  **Issue**: &quot;Authentication failed&quot; errors
<span style="color:#666; user-select:none;">325</span>  **Solution**:
<span style="color:#666; user-select:none;">326</span>  - Verify username and password are correct
<span style="color:#666; user-select:none;">327</span>  - Check that the user has appropriate database permissions
<span style="color:#666; user-select:none;">328</span>  - Ensure the authentication database is correct
<span style="color:#666; user-select:none;">329</span>  
<span style="color:#666; user-select:none;">330</span>  #### Query Errors
<span style="color:#666; user-select:none;">331</span>  **Issue**: &quot;Invalid aggregation pipeline&quot; errors
<span style="color:#666; user-select:none;">332</span>  **Solution**:
<span style="color:#666; user-select:none;">333</span>  - The agent automatically retries with corrected pipelines
<span style="color:#666; user-select:none;">334</span>  - Check that your natural language query is clear and specific
<span style="color:#666; user-select:none;">335</span>  - Verify that referenced fields exist in your collection
<span style="color:#666; user-select:none;">336</span>  
<span style="color:#666; user-select:none;">337</span>  #### Schema Detection Issues
<span style="color:#666; user-select:none;">338</span>  **Issue**: Agent does not understand your data structure
<span style="color:#666; user-select:none;">339</span>  **Solution**:
<span style="color:#666; user-select:none;">340</span>  - Ensure `auto_detect_schema` is set to `true`
<span style="color:#666; user-select:none;">341</span>  - Provide detailed `data_description` in your configuration
<span style="color:#666; user-select:none;">342</span>  - Check that your collection has representative sample documents
</pre>
        </div>
        </div>

</div>
</main>
</div>
</div>


</body>
</html>

