AWS Partner Central API 参考已重新构建。有关支持的 API 操作的更多信息,请参阅 AWS Partner Central API 参考。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
工具参考
Partner Central Agent MCP 服务器公开了两个 MCP 工具:sendMessage用于所有代理交互和getSession用于检索会话状态。Partner Central 的所有操作(机会查询、资金申请、文件分析)均通过自然语言处理sendMessage。
工具概述
| 工具 | 说明 | 类别 |
|---|---|---|
sendMessage |
向合作伙伴中心 AI 代理发送消息。支持文本、文件附件和人工审批响应。 | 读/写 |
getSession |
检索会话状态,包括对话历史记录、事件和元数据。 | Read-only |
发送消息
所有 Partner Central AI 代理互动的主要工具。使用此工具可以提问、请求操作、附加文档以供分析,以及回应写入操作的批准请求。
代理在会话中维护对话上下文,因此您可以提问后续问题,而无需重复之前的上下文。
参数
content(必填)-内容块数组。每个区块必须包含一个用于确定区块结构的type字段。您可以在一封邮件中包含多个方块(例如,文本 + 文档附件)。内容区块类型:
Type 字段 说明 texttype(必填)、text(必填)发送给代理的用户消息文本 documenttype(必填)、filename(必填)、s3Uri(必填)文件附件供代理分析。 s3Uri必须包含versionId参数。tool_approval_responsetype(必填)、toolUseId(必填)、decision(必填)、message(可选)回应人性化批准请求 catalog(必填)-操作的目标环境。有效值:
"AWS"(生产)、"Sandbox"(测试)sessionId(可选)— UUID v4 用于标识要继续的现有会话。省略创建新会话。格式:session-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。默认:自动创建新会话。
stream(可选)— 启用 Server-Sent 事件 (SSE) 流式传输以实现实时响应交付。有效值:
true、false默认值:
false
响应
响应包括以下内容:
| 字段 | 说明 |
|---|---|
sessionId |
后续消息的会话标识符 |
status |
响应状态:"complete""requires_approval"、或 "error" |
content |
来自代理的响应内容块数组 |
示例
基本短信(新会话)
请求:
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "sendMessage", "arguments": { "content": [ { "type": "text", "text": "List my open opportunities with expected close date in Q1 2026" } ], "catalog": "AWS" } } }
响应:
{ "jsonrpc": "2.0", "id": 1, "result": { "content": [ { "type": "text", "text": "I found 12 open opportunities with expected close dates in Q1 2026. Here's a summary:\n\n1. **O1234567890** - Acme Corp Cloud Migration - $250,000 - Qualified stage\n2. **O1234567891** - GlobalTech Data Analytics - $180,000 - Prospect stage\n..." } ], "sessionId": "session-550e8400-e29b-41d4-a716-446655440000", "status": "complete" } }
Follow-up 消息(现有会话)
请求:
{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "sendMessage", "arguments": { "sessionId": "session-550e8400-e29b-41d4-a716-446655440000", "content": [ { "type": "text", "text": "Tell me more about O1234567890. Is it ready for submission?" } ], "catalog": "AWS" } } }
文件附件
先将文档上传到 S3,然后在消息中引用该文档:
{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "sendMessage", "arguments": { "sessionId": "session-550e8400-e29b-41d4-a716-446655440000", "content": [ { "type": "text", "text": "Review this customer proposal and suggest which opportunity it aligns with" }, { "type": "document", "filename": "acme-proposal.pdf", "s3Uri": "s3://aws-partner-central-marketplace-ephemeral-writeonly-files/123456789012/acme-proposal.pdf?versionId=abc123def456" } ], "catalog": "AWS" } } }
文件上传限制:
每封邮件最多 3 个文件
图像大小限制:3.75 MB
文件大小限制:4.5 MB
允许的扩展名:
docdocx、pdf、png、jpeg、xlsx、csv、txt必须将文件上传到
s3://{bucket}/{your-aws-account-id}/S3 URI 必须包含
versionId查询参数
Human-in-the-loop 批准工作流程
当代理需要执行写入操作(例如,更新机会、提交资金申请)时,它会返回包含建议操作详细信息的"requires_approval"状态。您必须使用tool_approval_response内容块进行响应。
步骤 1-代理请求批准:
{ "jsonrpc": "2.0", "id": 4, "result": { "content": [ { "type": "text", "text": "I'd like to update opportunity O1234567890 with the following changes:\n- Target close date: 2026-03-31\n- Expected revenue: $300,000\n- Stage: Qualified\n\nPlease approve, reject, or override this action." }, { "type": "tool_approval_request", "toolUseId": "tool-use-98765", "toolName": "update_opportunity_enhanced", "parameters": { "opportunityId": "O1234567890", "targetCloseDate": "2026-03-31", "expectedRevenue": 300000, "stage": "Qualified" } } ], "sessionId": "session-550e8400-e29b-41d4-a716-446655440000", "status": "requires_approval" } }
步骤 2-批准操作:
{ "jsonrpc": "2.0", "id": 5, "method": "tools/call", "params": { "name": "sendMessage", "arguments": { "sessionId": "session-550e8400-e29b-41d4-a716-446655440000", "content": [ { "type": "tool_approval_response", "toolUseId": "tool-use-98765", "decision": "approve" } ], "catalog": "AWS" } } }
步骤 2(备选)-拒绝操作:
{ "jsonrpc": "2.0", "id": 5, "method": "tools/call", "params": { "name": "sendMessage", "arguments": { "sessionId": "session-550e8400-e29b-41d4-a716-446655440000", "content": [ { "type": "tool_approval_response", "toolUseId": "tool-use-98765", "decision": "reject", "message": "The expected revenue should be $250,000, not $300,000" } ], "catalog": "AWS" } } }
第 2 步(备选)-使用自定义响应进行覆盖:
{ "jsonrpc": "2.0", "id": 5, "method": "tools/call", "params": { "name": "sendMessage", "arguments": { "sessionId": "session-550e8400-e29b-41d4-a716-446655440000", "content": [ { "type": "tool_approval_response", "toolUseId": "tool-use-98765", "decision": "override", "message": "Use expected revenue of $250,000 and keep the stage as Prospect instead" } ], "catalog": "AWS" } } }
批准决策值:
| 决策 | 行为 |
|---|---|
"approve" |
使用建议的参数执行工具 |
"reject" |
请勿执行该工具。message(可选)解释了原因。 |
"override" |
通过以下方式提供自定义响应或修改后的指令 message |
通过 SSE 进行直播
启用流媒体功能,以便在代理处理您的请求时接收增量响应块:
请求:
{ "jsonrpc": "2.0", "id": 6, "method": "tools/call", "params": { "name": "sendMessage", "arguments": { "sessionId": "session-550e8400-e29b-41d4-a716-446655440000", "content": [ { "type": "text", "text": "Analyze my pipeline and identify opportunities at risk" } ], "catalog": "AWS", "stream": true } } }
服务器以 SSE 事件流进行响应:
event: stream_start data: {"sessionId": "session-550e8400-e29b-41d4-a716-446655440000"} event: assistant-response.start data: {} event: server-tool-use data: {"toolName": "analyze_pipeline", "parameters": {}} event: server-tool-response data: {"toolName": "analyze_pipeline", "result": {"opportunitiesAnalyzed": 47, "atRisk": 5}} event: assistant-response.delta data: {"text": "I analyzed your pipeline of 47 opportunities and identified "} event: assistant-response.delta data: {"text": "5 that are at risk of slipping:\n\n"} event: assistant-response.delta data: {"text": "1. **O2345678901** - Close date is past due by 15 days\n"} event: assistant-response.completed data: {"status": "complete"} event: stream_end data: {}
获取会话
检索对话会话的当前状态,包括完整的对话历史记录、事件和元数据。使用它来检查会话状态、查看过去的互动或恢复对话。
参数
sessionId(必填)— 要检索的会话的 UUID。格式:session-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。catalog(必填)-会话所属的环境。有效值:
"AWS"、"Sandbox"
响应
| 字段 | Type | 说明 |
|---|---|---|
sessionId |
字符串 | 会话标识符 |
createdAt |
字符串 | ISO 8601 会话创建的时间戳 |
lastActivity |
字符串 | ISO 8601 上次活动的时间戳 |
sequenceNumber |
integer | 当前事件序列号 |
stateType |
字符串 | 当前会话状态 |
events |
array | 完整的对话历史记录(用户消息、代理回复、工具使用) |
variables |
object | 会话变量和元数据 |
eventCount |
integer | 会话中的事件总数 |
示例
请求:
{ "jsonrpc": "2.0", "id": 7, "method": "tools/call", "params": { "name": "getSession", "arguments": { "sessionId": "session-550e8400-e29b-41d4-a716-446655440000", "catalog": "AWS" } } }
响应:
{ "jsonrpc": "2.0", "id": 7, "result": { "content": [ { "type": "text", "text": "{\"sessionId\":\"session-550e8400-e29b-41d4-a716-446655440000\",\"createdAt\":\"2026-01-15T10:30:00Z\",\"lastActivity\":\"2026-01-15T11:45:00Z\",\"sequenceNumber\":8,\"stateType\":\"END_TURN\",\"eventCount\":8,\"events\":[...],\"variables\":{}}" } ] } }
错误处理
所有错误都遵循 JSON-RPC 2.0错误格式:
{ "jsonrpc": "2.0", "id": 1, "error": { "code": -32001, "message": "Authentication failed. Verify your SigV4 credentials and ensure they have not expired." } }
错误代码有关错误代码及其含义的完整列表,请参阅。
推荐的重试策略
对于
-32004(LIMIT_UXCHERED):从 1 秒开始使用指数退避重试对于
-32603(INTERNAL_ERROR):使用指数退避最多重试 3 次对于
-32001(AUTHENTICATION_FAILURE):刷新凭据并重对于所有其他错误:不要自动重试 — 请检查错误消息并更正请求