Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions python/semantic_kernel/connectors/dns_aid.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
"""DNS-AID plugin for Microsoft Semantic Kernel."""

from semantic_kernel.functions import kernel_function


class DnsAidPlugin:
"""DNS-AID plugin for Microsoft Semantic Kernel.

Provides agent discovery, publishing, and unpublishing via DNS-AID.
"""

def __init__(self, backend_name: str | None = None, backend=None):
from dns_aid.integrations import DnsAidOperations

self._ops = DnsAidOperations(backend_name=backend_name, backend=backend)

@kernel_function(
name="discover_agents",
description="Discover AI agents at a domain via DNS-AID SVCB records.",
)
async def discover_agents(
self,
domain: str,
protocol: str | None = None,
name: str | None = None,
require_dnssec: bool = False,
) -> str:
"""Discover AI agents at a domain via DNS-AID SVCB records."""
return await self._ops.discover_async(
domain=domain,
protocol=protocol,
name=name,
require_dnssec=require_dnssec,
)

@kernel_function(
name="publish_agent",
description="Publish an AI agent to DNS via DNS-AID SVCB records.",
)
async def publish_agent(
self,
name: str,
domain: str,
protocol: str = "mcp",
endpoint: str = "",
port: int = 443,
capabilities: list[str] | None = None,
version: str = "1.0.0",
description: str | None = None,
ttl: int = 3600,
) -> str:
"""Publish an AI agent to DNS via DNS-AID SVCB records."""
return await self._ops.publish_async(
name=name,
domain=domain,
protocol=protocol,
endpoint=endpoint,
port=port,
capabilities=capabilities,
version=version,
description=description,
ttl=ttl,
)

@kernel_function(
name="unpublish_agent",
description="Remove an AI agent from DNS via DNS-AID SVCB records.",
)
async def unpublish_agent(
self,
name: str,
domain: str,
protocol: str = "mcp",
) -> str:
"""Remove an AI agent from DNS via DNS-AID SVCB records."""
return await self._ops.unpublish_async(
name=name,
domain=domain,
protocol=protocol,
)
Loading