SharePoint Document Classifier
Automatically classifies and organizes SharePoint documents using AI-powered content analysis and metadata extraction
Available Skills
classifyDocument
#1Analyzes document content and automatically assigns appropriate categories and tags
extractMetadata
#2Extracts relevant metadata from documents for enhanced searchability and organization
Integration Examples
// A2A Java Client Example
// Source: https://github.com/a2aproject/a2a-samples/tree/main/samples/java/client
import com.google.a2a.client.*;
import com.google.a2a.model.*;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public class AgentClientExample {
public static void main(String[] args) {
// Create client pointing to your agent
A2AClient client = new A2AClient("https://sharepoint-classifier.fabrikam.com/a2a");
try {
// Get agent card
System.out.println("=== Getting Agent Card ===");
AgentCard agentCard = client.getAgentCard();
System.out.println("Agent: " + agentCard.name());
System.out.println("Description: " + agentCard.description());
System.out.println("Version: " + agentCard.version());
System.out.println("Skills: " + agentCard.skills());
// Send a task to the agent
TextPart textPart = new TextPart("Your input text here", null);
Message message = new Message(
UUID.randomUUID().toString(), // messageId
"message", // kind
"user", // role
List.of(textPart), // parts
null, null, null, null // contextId, taskId, etc.
);
TaskSendParams params = new TaskSendParams(
"classifyDocument-task",
null, // sessionId
message,
null, // pushNotification
null, // historyLength
Map.of() // metadata
);
JSONRPCResponse response = client.sendTask(params);
Task task = (Task) response.result();
System.out.println("Task ID: " + task.id());
System.out.println("Status: " + task.status().state());
} catch (A2AClientException e) {
System.err.println("A2A Client Error: " + e.getMessage());
e.printStackTrace();
}
}
}
# A2A Python Client Example
# Source: https://github.com/a2aproject/a2a-samples/tree/main/samples/python
import asyncio
import httpx
from uuid import uuid4
from a2a.client import A2ACardResolver, A2AClient
from a2a.types import (
AgentCard,
Message,
MessageSendParams,
Part,
Role,
SendStreamingMessageRequest,
TextPart,
)
class AgentClient:
def __init__(self, agent_url: str):
self.agent_url = agent_url
async def get_agent_card(self) -> AgentCard:
"""Get the agent card information."""
async with httpx.AsyncClient() as httpx_client:
card_resolver = A2ACardResolver(httpx_client, self.agent_url)
return await card_resolver.get_agent_card()
async def send_message(self, message_text: str):
"""Send a message to the agent and get streaming response."""
async with httpx.AsyncClient() as httpx_client:
# Get agent card first
agent_card = await self.get_agent_card()
client = A2AClient(httpx_client, agent_card=agent_card)
# Create message
message = MessageSendParams(
message=Message(
role=Role.user,
parts=[Part(TextPart(text=message_text))],
messageId=uuid4().hex,
taskId=uuid4().hex,
)
)
# Send streaming message
streaming_request = SendStreamingMessageRequest(
id=str(uuid4().hex),
params=message
)
async for chunk in client.send_message_streaming(streaming_request):
if hasattr(chunk.root, 'result') and hasattr(chunk.root.result, 'status'):
message = chunk.root.result.status.message
if message and message.parts:
yield message.parts[0].root.text
async def main():
"""Example usage of the agent client."""
client = AgentClient("https://sharepoint-classifier.fabrikam.com/a2a")
# Get agent information
agent_card = await client.get_agent_card()
print(f"Agent: {agent_card.name}")
print(f"Description: {agent_card.description}")
# Send a message and stream the response
async for response_chunk in client.send_message("Your input text here"):
print(response_chunk, end='', flush=True)
if __name__ == '__main__':
asyncio.run(main())
Agent Configuration
Complete JSON configuration for this agent:
{
"capabilities": {
"pushNotifications": false,
"streaming": false
},
"defaultInputModes": [
"application/json",
"multipart/form-data"
],
"defaultOutputModes": [
"application/json",
"text/plain"
],
"description": "Automatically classifies and organizes SharePoint documents using AI-powered content analysis and metadata extraction",
"documentationUrl": "https://sharepoint-classifier.fabrikam.com/docs",
"filename": "sharepoint-document-classifier.json",
"iconUrl": "https://sharepoint-classifier.fabrikam.com/icon.png",
"name": "SharePoint Document Classifier",
"protocolVersion": "0.2.6",
"provider": {
"organization": "Fabrikam Inc",
"url": "https://fabrikam.com"
},
"security": [
{
"oAuth2": []
}
],
"securitySchemes": {
"oAuth2": {
"flows": {
"authorizationCode": {
"authorizationUrl": "https://login.microsoftonline.com/authorize",
"tokenUrl": "https://login.microsoftonline.com/token"
}
},
"type": "oauth2"
}
},
"skills": [
{
"description": "Analyzes document content and automatically assigns appropriate categories and tags",
"examples": [
"Classify uploaded contract documents",
"Categorize project documentation",
"Auto-tag financial reports"
],
"id": "classifyDocument",
"inputModes": [
"application/json",
"multipart/form-data"
],
"name": "classifyDocument",
"outputModes": [
"application/json",
"text/plain"
],
"tags": [
"sharepoint",
"classification",
"documents",
"ai"
]
},
{
"description": "Extracts relevant metadata from documents for enhanced searchability and organization",
"examples": [
"Extract metadata from PDF reports",
"Analyze document properties and content",
"Generate searchable tags for documents"
],
"id": "extractMetadata",
"inputModes": [
"application/json",
"multipart/form-data"
],
"name": "extractMetadata",
"outputModes": [
"application/json"
],
"tags": [
"sharepoint",
"metadata",
"extraction",
"search"
]
}
],
"slug": "sharepoint-document-classifier",
"url": "https://sharepoint-classifier.fabrikam.com/a2a",
"version": "2.1.0"
}