Skip to main content
Glama
query-agent.ts2.98 kB
import { createAction, Property } from "@activepieces/pieces-framework"; import { contextualAiAuth } from "../../index"; import { ContextualAI } from 'contextual-client'; import type { Agent } from 'contextual-client/resources/agents'; export const queryAgentAction = createAction({ auth: contextualAiAuth, name: 'query_agent', displayName: 'Query Agent', description: 'Send a message to a Contextual AI agent and get a response', props: { agentId: Property.Dropdown({ displayName: 'Agent', description: 'Select the agent to query', required: true, refreshers: [], options: async ({ auth }) => { try { const { apiKey, baseUrl } = auth as { apiKey: string; baseUrl?: string }; const client = new ContextualAI({ apiKey: apiKey, baseURL: baseUrl || 'https://api.contextual.ai/v1', }); const allAgents: Agent[] = []; for await (const agent of client.agents.list()) { allAgents.push(agent); } return { options: allAgents.map((agent: Agent) => ({ label: agent.name, value: agent.id, })), }; } catch (error) { return { options: [], error: 'Failed to fetch agents. Please check your API key.', }; } }, }), message: Property.LongText({ displayName: 'Message', description: 'The message to send to the agent', required: true, }), conversationId: Property.ShortText({ displayName: 'Conversation ID', description: 'Optional conversation ID to continue an existing conversation (leave empty for new conversation)', required: false, }), includeRetrievalContent: Property.Checkbox({ displayName: 'Include Retrieval Content', description: 'Include the text of retrieved contents in the response', required: false, defaultValue: false, }), }, async run({ auth, propsValue }) { const { apiKey, baseUrl } = auth; const { agentId, message, conversationId, includeRetrievalContent } = propsValue; const client = new ContextualAI({ apiKey: apiKey, baseURL: baseUrl || 'https://api.contextual.ai/v1', }); const messages: Array<{ role: 'user' | 'system' | 'assistant' | 'knowledge'; content: string }> = conversationId ? [] : [{ role: 'user' as const, content: message }]; const response = await client.agents.query.create(agentId, { messages: messages, conversation_id: conversationId, include_retrieval_content_text: includeRetrievalContent, }); return { conversation_id: response.conversation_id, message: response.message, retrieval_contents: response.retrieval_contents, attributions: response.attributions, groundedness_scores: response.groundedness_scores, message_id: response.message_id, }; }, });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server