MCPcopy
hub / github.com/simstudioai/sim / parseToolRequest

Function parseToolRequest

apps/sim/lib/api/server/tool-validation.ts:31–75  ·  view source on GitHub ↗
(
  contract: C,
  request: NextRequest,
  options: ParseToolRequestOptions = {}
)

Source from the content-addressed store, hash-verified

29 * back to the default `{ error: 'Request body must be valid JSON' }` shape.
30 */
31export async function parseToolRequest<C extends AnyApiRouteContract>(
32 contract: C,
33 request: NextRequest,
34 options: ParseToolRequestOptions = {}
35) {
36 const errorFormat: ToolValidationErrorFormat = options.errorFormat ?? 'details'
37
38 return parseRequest(
39 contract,
40 request,
41 {},
42 {
43 invalidJsonResponse:
44 errorFormat === 'toolDetails'
45 ? () =>
46 NextResponse.json(
47 { success: false, error: 'Request body must be valid JSON' },
48 { status: 400 }
49 )
50 : undefined,
51 validationErrorResponse: (error) => {
52 options.logger?.warn(options.logMessage ?? 'Invalid request data', { errors: error.issues })
53
54 if (errorFormat === 'firstError') {
55 return NextResponse.json(
56 { error: error.issues[0]?.message ?? 'Invalid request' },
57 { status: 400 }
58 )
59 }
60
61 if (errorFormat === 'toolDetails') {
62 return NextResponse.json(
63 { success: false, error: 'Invalid request data', details: error.issues },
64 { status: 400 }
65 )
66 }
67
68 return NextResponse.json(
69 { error: 'Invalid request data', details: error.issues },
70 { status: 400 }
71 )
72 },
73 }
74 )
75}

Callers 15

route.tsFile · 0.90
route.tsFile · 0.90
route.tsFile · 0.90
route.tsFile · 0.90
route.tsFile · 0.90
route.tsFile · 0.90
route.tsFile · 0.90
route.tsFile · 0.90
route.tsFile · 0.90
route.tsFile · 0.90
route.tsFile · 0.90
route.tsFile · 0.90

Calls 2

parseRequestFunction · 0.90
warnMethod · 0.65

Tested by

no test coverage detected