{"schemaVersion":"server402.catalog.search.v1","generatedAt":"2026-06-03T23:51:56Z","query":"thai-ocr","expandedTerms":["extract text","image to text","read text","recognize text","text extraction","text recognition","光学字符识别","图片识别文字","提取文字","文字识别","文本识别","识别文字"],"filters":{"limit":10},"total":8,"services":[{"id":"thai-ocr","canonicalId":"thai-ocr","internalServiceId":"aliyun-ocr-thai","name":"Thai OCR","description":"Recognize printed text from a public image URL. Use this OCR API for Thai document images; pass optional language and layout hints when the schema supports them.","descriptionForModel":"Recognize printed text from a public image URL. Use this OCR API for Thai document images; pass optional language and layout hints when the schema supports them.","category":"ocr","keywords":["ocr","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","thai","tha","泰语","泰文"],"useCases":["Extract text from public image URLs","Read Thai document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"tags":["ocr","image","text-extraction","document-processing","thai","tha","泰语","泰文"],"method":"POST","endpoint":"/api/tools/thai-ocr","legacyEndpoint":"/api/tools/aliyun-ocr-thai","endpointAliases":["/api/tools/thai-ocr","/api/tools/aliyun-ocr-thai"],"inputTypes":["object","string","uri","boolean"],"outputTypes":["object","string"],"inputSchema":{"properties":{"imageUrl":{"format":"uri","type":"string"},"needRotate":{"type":"boolean"},"outputCharInfo":{"type":"boolean"},"outputTable":{"type":"boolean"}},"required":["imageUrl"],"type":"object"},"outputSchema":{"properties":{"code":{"type":"string"},"content":{"type":"string"},"data":{"type":"object"},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["requestId","content","data"],"type":"object"},"exampleRequest":{"imageUrl":"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241218/utgxmk/%E6%B3%B0%E8%AF%AD%E8%AF%86%E5%88%AB.png","needRotate":false,"outputCharInfo":false,"outputTable":false},"exampleResponse":{"code":"200","content":"เริมเห็นผิวที่เรียบเบียน","data":{"content":"เริมเห็นผิวที่เรียบเบียน"},"message":"success","requestId":"example-request-id"},"pricing":{"amountCents":20,"currency":"USD","policyId":"ocr-api","settleMode":"settle_first","billingMode":"per_call","maxCalls":1,"allowReuse":false,"bindClient":true},"payment":{"providerId":"x402-base-usdc","provider":"x402_facilitator"},"quality":{"qualityScore":54,"healthStatus":"healthy","healthCheckedAt":"2026-06-03T13:57:09Z","healthLatencyMs":817,"successRate":0,"callCount":1,"executionCount":1,"successCount":0,"errorCount":1,"paymentRequireds":0,"lastCallAt":"2026-06-03T12:06:29Z"},"discovery":{"toolName":"thai_ocr","searchText":"thai-ocr Thai OCR Recognize printed text from a public image URL. Use this OCR API for Thai document images; pass optional language and layout hints when the schema supports them. Recognize printed text from a public image URL. Use this OCR API for Thai document images; pass optional language and layout hints when the schema supports them. ocr object string uri boolean object string ocr image text-extraction document-processing thai tha 泰语 泰文 ocr text recognition image text extraction document OCR screenshot OCR receipt OCR invoice OCR bill OCR form OCR extract text from image recognize text thai tha 泰语 泰文 Extract text from public image URLs Read Thai document images Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON Only public http or https image URLs are supported in this adapter Image binary upload is not exposed by this Server402 adapter Provider credentials and upstream OCR permissions must be configured on the server /api/tools/thai-ocr","aliases":["Thai OCR","ocr","image","text-extraction","document-processing","thai","tha","泰语","泰文","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","thai-ocr","thai_ocr","/api/tools/thai-ocr"],"localeHints":["en","zh"],"useCases":["Extract text from public image URLs","Read Thai document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"paymentFlow":{"type":"http-402","createPayment":{"method":"POST","url":"/api/payments","bodySchema":{"properties":{"providerId":{"type":"string"},"serviceId":{"description":"Use the canonical service id from the catalog. Legacy internal ids remain accepted for backward compatibility.","type":"string"}},"required":["serviceId"],"type":"object"},"responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"verifyPayment":{"method":"GET","url":"/api/payments/{paymentId}","responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"token":{"header":"X-Payment-Token","mcpArgument":"paymentToken","httpUsage":"Send the paid token in the X-Payment-Token request header when calling /api/tools/*.","mcpUsage":"Pass the paid token as the paymentToken argument when calling the MCP tool."},"requiredResponse":{"status":402,"contentType":"application/json","headers":{"X-Payment-Required":"true","X-Payment-Token":"payment.token"},"bodySchema":{"properties":{"error":{"type":"string"},"payment":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"required":["error","payment"],"type":"object"}},"retry":{"when":"Retry after payment.status is paid and the token has remaining calls.","http":["Call POST /api/payments with serviceId to create a payment if the first service call returned 402.","Complete or verify payment using GET /api/payments/{paymentId}.","Retry the original /api/tools/* request with X-Payment-Token set to payment.token."],"mcp":["Call the tool without paymentToken to receive payment_required structuredContent.","Complete or verify payment using the returned payment.paymentId.","Call the same MCP tool again with paymentToken set to payment.token."],"failures":["payment required","payment token expired","payment token has no remaining calls","api key required","api key is not allowed to call this service"]}},"paymentHint":"Create a payment with POST /api/payments using serviceId=\"thai-ocr\", then pass the returned token in X-Payment-Token or MCP paymentToken.","retryHint":"If the service returns HTTP 402, complete or verify the payment and retry the same request with the payment token.","requiredState":"published, enabled"},"complexity":"moderate","typicalResponseTime":"1500ms","cacheable":true,"idempotent":true,"outputFormat":"json","relatedServices":["multilingual-ocr","english-ocr","japanese-ocr"],"requiredContext":["public-image-url","aliyun-credentials"],"errorExamples":[{"input":{},"error":"imageUrl is required","statusCode":400},{"input":{"imageUrl":"not-a-url"},"error":"imageUrl must be a valid http or https URL","statusCode":400}],"sla":{"uptime":"99.5%","maxLatency":"5000ms"},"matchScore":276,"matchTerms":["thai ocr","thai","ocr","extract text","recognize text","text extraction","text recognition"],"why":"Matched thai ocr, thai, ocr, extract text, recognize text, text extraction, text recognition for \"Thai OCR\". Price is USD 0.20 per policy ocr-api."},{"id":"latin-script-ocr","canonicalId":"latin-script-ocr","internalServiceId":"aliyun-ocr-latin","name":"Latin-script OCR","description":"Recognize printed text from a public image URL. Use this OCR API for Latin-script document images; pass optional language and layout hints when the schema supports them.","descriptionForModel":"Recognize printed text from a public image URL. Use this OCR API for Latin-script document images; pass optional language and layout hints when the schema supports them.","category":"ocr","keywords":["ocr","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","latin","latn","拉丁语","拉丁语系"],"useCases":["Extract text from public image URLs","Read Latin-script document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"tags":["ocr","image","text-extraction","document-processing","latin","latn","拉丁语","拉丁语系"],"method":"POST","endpoint":"/api/tools/latin-script-ocr","legacyEndpoint":"/api/tools/aliyun-ocr-latin","endpointAliases":["/api/tools/latin-script-ocr","/api/tools/aliyun-ocr-latin"],"inputTypes":["object","boolean","string","uri"],"outputTypes":["object","string"],"inputSchema":{"properties":{"imageUrl":{"format":"uri","type":"string"},"needRotate":{"type":"boolean"},"outputCharInfo":{"type":"boolean"},"outputTable":{"type":"boolean"}},"required":["imageUrl"],"type":"object"},"outputSchema":{"properties":{"code":{"type":"string"},"content":{"type":"string"},"data":{"type":"object"},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["requestId","content","data"],"type":"object"},"exampleRequest":{"imageUrl":"https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9788868261/p303424.jpg","needRotate":false,"outputCharInfo":false,"outputTable":false},"exampleResponse":{"code":"200","content":"Lorem ipsum","data":{"content":"Lorem ipsum"},"message":"success","requestId":"example-request-id"},"pricing":{"amountCents":20,"currency":"USD","policyId":"ocr-api","settleMode":"settle_first","billingMode":"per_call","maxCalls":1,"allowReuse":false,"bindClient":true},"payment":{"providerId":"x402-base-usdc","provider":"x402_facilitator"},"quality":{"qualityScore":56,"healthStatus":"healthy","healthCheckedAt":"2026-06-03T13:57:12Z","healthLatencyMs":1204,"latencyMs":2,"successRate":0,"callCount":1,"executionCount":1,"successCount":0,"errorCount":1,"paymentRequireds":0,"lastCallAt":"2026-06-03T12:06:19Z"},"discovery":{"toolName":"latin_script_ocr","searchText":"latin-script-ocr Latin-script OCR Recognize printed text from a public image URL. Use this OCR API for Latin-script document images; pass optional language and layout hints when the schema supports them. Recognize printed text from a public image URL. Use this OCR API for Latin-script document images; pass optional language and layout hints when the schema supports them. ocr object boolean string uri object string ocr image text-extraction document-processing latin latn 拉丁语 拉丁语系 ocr text recognition image text extraction document OCR screenshot OCR receipt OCR invoice OCR bill OCR form OCR extract text from image recognize text latin latn 拉丁语 拉丁语系 Extract text from public image URLs Read Latin-script document images Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON Only public http or https image URLs are supported in this adapter Image binary upload is not exposed by this Server402 adapter Provider credentials and upstream OCR permissions must be configured on the server /api/tools/latin-script-ocr","aliases":["Latin-script OCR","ocr","image","text-extraction","document-processing","latin","latn","拉丁语","拉丁语系","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","latin-script-ocr","latin_script_ocr","/api/tools/latin-script-ocr"],"localeHints":["en","zh"],"useCases":["Extract text from public image URLs","Read Latin-script document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"paymentFlow":{"type":"http-402","createPayment":{"method":"POST","url":"/api/payments","bodySchema":{"properties":{"providerId":{"type":"string"},"serviceId":{"description":"Use the canonical service id from the catalog. Legacy internal ids remain accepted for backward compatibility.","type":"string"}},"required":["serviceId"],"type":"object"},"responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"verifyPayment":{"method":"GET","url":"/api/payments/{paymentId}","responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"token":{"header":"X-Payment-Token","mcpArgument":"paymentToken","httpUsage":"Send the paid token in the X-Payment-Token request header when calling /api/tools/*.","mcpUsage":"Pass the paid token as the paymentToken argument when calling the MCP tool."},"requiredResponse":{"status":402,"contentType":"application/json","headers":{"X-Payment-Required":"true","X-Payment-Token":"payment.token"},"bodySchema":{"properties":{"error":{"type":"string"},"payment":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"required":["error","payment"],"type":"object"}},"retry":{"when":"Retry after payment.status is paid and the token has remaining calls.","http":["Call POST /api/payments with serviceId to create a payment if the first service call returned 402.","Complete or verify payment using GET /api/payments/{paymentId}.","Retry the original /api/tools/* request with X-Payment-Token set to payment.token."],"mcp":["Call the tool without paymentToken to receive payment_required structuredContent.","Complete or verify payment using the returned payment.paymentId.","Call the same MCP tool again with paymentToken set to payment.token."],"failures":["payment required","payment token expired","payment token has no remaining calls","api key required","api key is not allowed to call this service"]}},"paymentHint":"Create a payment with POST /api/payments using serviceId=\"latin-script-ocr\", then pass the returned token in X-Payment-Token or MCP paymentToken.","retryHint":"If the service returns HTTP 402, complete or verify the payment and retry the same request with the payment token.","requiredState":"published, enabled"},"complexity":"moderate","typicalResponseTime":"1500ms","cacheable":true,"idempotent":true,"outputFormat":"json","relatedServices":["multilingual-ocr","english-ocr","japanese-ocr"],"requiredContext":["public-image-url","aliyun-credentials"],"errorExamples":[{"input":{},"error":"imageUrl is required","statusCode":400},{"input":{"imageUrl":"not-a-url"},"error":"imageUrl must be a valid http or https URL","statusCode":400}],"sla":{"uptime":"99.5%","maxLatency":"5000ms"},"matchScore":77,"matchTerms":["ocr","extract text","recognize text","text extraction","text recognition"],"why":"Matched ocr, extract text, recognize text, text extraction, text recognition for \"Latin-script OCR\". Price is USD 0.20 per policy ocr-api."},{"id":"english-ocr","canonicalId":"english-ocr","internalServiceId":"aliyun-ocr-english","name":"English OCR","description":"Recognize printed text from a public image URL. Use this OCR API for English document images; pass optional language and layout hints when the schema supports them.","descriptionForModel":"Recognize printed text from a public image URL. Use this OCR API for English document images; pass optional language and layout hints when the schema supports them.","category":"ocr","keywords":["ocr","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","english","eng","英语","英文"],"useCases":["Extract text from public image URLs","Read English document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"tags":["ocr","image","text-extraction","document-processing","english","eng","英语","英文"],"method":"POST","endpoint":"/api/tools/english-ocr","legacyEndpoint":"/api/tools/aliyun-ocr-english","endpointAliases":["/api/tools/english-ocr","/api/tools/aliyun-ocr-english"],"inputTypes":["object","boolean","string","uri"],"outputTypes":["object","string"],"inputSchema":{"properties":{"imageUrl":{"format":"uri","type":"string"},"needRotate":{"type":"boolean"},"outputCharInfo":{"type":"boolean"},"outputTable":{"type":"boolean"}},"required":["imageUrl"],"type":"object"},"outputSchema":{"properties":{"code":{"type":"string"},"content":{"type":"string"},"data":{"type":"object"},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["requestId","content","data"],"type":"object"},"exampleRequest":{"imageUrl":"https://img.alicdn.com/tfs/TB1K2a4NVY7gK0jSZKzXXaikpXa-2060-800.jpg","needRotate":false,"outputCharInfo":false,"outputTable":false},"exampleResponse":{"code":"200","content":"Dear Ms Jenkins","data":{"content":"Dear Ms Jenkins"},"message":"success","requestId":"example-request-id"},"pricing":{"amountCents":20,"currency":"USD","policyId":"ocr-api","settleMode":"settle_first","billingMode":"per_call","maxCalls":1,"allowReuse":false,"bindClient":true},"payment":{"providerId":"x402-base-usdc","provider":"x402_facilitator"},"quality":{"qualityScore":54,"healthStatus":"healthy","healthCheckedAt":"2026-06-03T13:57:05Z","healthLatencyMs":1489,"successRate":0,"callCount":2,"executionCount":1,"successCount":0,"errorCount":1,"paymentRequireds":1,"lastCallAt":"2026-06-03T14:01:57Z"},"discovery":{"toolName":"english_ocr","searchText":"english-ocr English OCR Recognize printed text from a public image URL. Use this OCR API for English document images; pass optional language and layout hints when the schema supports them. Recognize printed text from a public image URL. Use this OCR API for English document images; pass optional language and layout hints when the schema supports them. ocr object boolean string uri object string ocr image text-extraction document-processing english eng 英语 英文 ocr text recognition image text extraction document OCR screenshot OCR receipt OCR invoice OCR bill OCR form OCR extract text from image recognize text english eng 英语 英文 Extract text from public image URLs Read English document images Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON Only public http or https image URLs are supported in this adapter Image binary upload is not exposed by this Server402 adapter Provider credentials and upstream OCR permissions must be configured on the server /api/tools/english-ocr","aliases":["English OCR","ocr","image","text-extraction","document-processing","english","eng","英语","英文","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","english-ocr","english_ocr","/api/tools/english-ocr"],"localeHints":["en","zh"],"useCases":["Extract text from public image URLs","Read English document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"paymentFlow":{"type":"http-402","createPayment":{"method":"POST","url":"/api/payments","bodySchema":{"properties":{"providerId":{"type":"string"},"serviceId":{"description":"Use the canonical service id from the catalog. Legacy internal ids remain accepted for backward compatibility.","type":"string"}},"required":["serviceId"],"type":"object"},"responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"verifyPayment":{"method":"GET","url":"/api/payments/{paymentId}","responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"token":{"header":"X-Payment-Token","mcpArgument":"paymentToken","httpUsage":"Send the paid token in the X-Payment-Token request header when calling /api/tools/*.","mcpUsage":"Pass the paid token as the paymentToken argument when calling the MCP tool."},"requiredResponse":{"status":402,"contentType":"application/json","headers":{"X-Payment-Required":"true","X-Payment-Token":"payment.token"},"bodySchema":{"properties":{"error":{"type":"string"},"payment":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"required":["error","payment"],"type":"object"}},"retry":{"when":"Retry after payment.status is paid and the token has remaining calls.","http":["Call POST /api/payments with serviceId to create a payment if the first service call returned 402.","Complete or verify payment using GET /api/payments/{paymentId}.","Retry the original /api/tools/* request with X-Payment-Token set to payment.token."],"mcp":["Call the tool without paymentToken to receive payment_required structuredContent.","Complete or verify payment using the returned payment.paymentId.","Call the same MCP tool again with paymentToken set to payment.token."],"failures":["payment required","payment token expired","payment token has no remaining calls","api key required","api key is not allowed to call this service"]}},"paymentHint":"Create a payment with POST /api/payments using serviceId=\"english-ocr\", then pass the returned token in X-Payment-Token or MCP paymentToken.","retryHint":"If the service returns HTTP 402, complete or verify the payment and retry the same request with the payment token.","requiredState":"published, enabled"},"complexity":"moderate","typicalResponseTime":"1500ms","cacheable":true,"idempotent":true,"outputFormat":"json","relatedServices":["multilingual-ocr","japanese-ocr","korean-ocr"],"requiredContext":["public-image-url","aliyun-credentials"],"errorExamples":[{"input":{},"error":"imageUrl is required","statusCode":400},{"input":{"imageUrl":"not-a-url"},"error":"imageUrl must be a valid http or https URL","statusCode":400}],"sla":{"uptime":"99.5%","maxLatency":"5000ms"},"matchScore":77,"matchTerms":["ocr","extract text","recognize text","text extraction","text recognition"],"why":"Matched ocr, extract text, recognize text, text extraction, text recognition for \"English OCR\". Price is USD 0.20 per policy ocr-api."},{"id":"japanese-ocr","canonicalId":"japanese-ocr","internalServiceId":"aliyun-ocr-japanese","name":"Japanese OCR","description":"Recognize printed text from a public image URL. Use this OCR API for Japanese document images; pass optional language and layout hints when the schema supports them.","descriptionForModel":"Recognize printed text from a public image URL. Use this OCR API for Japanese document images; pass optional language and layout hints when the schema supports them.","category":"ocr","keywords":["ocr","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","japanese","jpn","日语","日文"],"useCases":["Extract text from public image URLs","Read Japanese document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"tags":["ocr","image","text-extraction","document-processing","japanese","jpn","日语","日文"],"method":"POST","endpoint":"/api/tools/japanese-ocr","legacyEndpoint":"/api/tools/aliyun-ocr-japanese","endpointAliases":["/api/tools/japanese-ocr","/api/tools/aliyun-ocr-japanese"],"inputTypes":["object","boolean","string","uri"],"outputTypes":["object","string"],"inputSchema":{"properties":{"imageUrl":{"format":"uri","type":"string"},"needRotate":{"type":"boolean"},"outputCharInfo":{"type":"boolean"},"outputTable":{"type":"boolean"}},"required":["imageUrl"],"type":"object"},"outputSchema":{"properties":{"code":{"type":"string"},"content":{"type":"string"},"data":{"type":"object"},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["requestId","content","data"],"type":"object"},"exampleRequest":{"imageUrl":"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241223/igoptb/%E6%97%A5%E8%AF%AD%E8%AF%86%E5%88%AB.png","needRotate":false,"outputCharInfo":false,"outputTable":false},"exampleResponse":{"code":"200","content":"いくらですか","data":{"content":"いくらですか"},"message":"success","requestId":"example-request-id"},"pricing":{"amountCents":20,"currency":"USD","policyId":"ocr-api","settleMode":"settle_first","billingMode":"per_call","maxCalls":1,"allowReuse":false,"bindClient":true},"payment":{"providerId":"x402-base-usdc","provider":"x402_facilitator"},"quality":{"qualityScore":54,"healthStatus":"healthy","healthCheckedAt":"2026-06-03T13:57:07Z","healthLatencyMs":713,"successRate":0,"callCount":1,"executionCount":1,"successCount":0,"errorCount":1,"paymentRequireds":0,"lastCallAt":"2026-06-03T12:06:09Z"},"discovery":{"toolName":"japanese_ocr","searchText":"japanese-ocr Japanese OCR Recognize printed text from a public image URL. Use this OCR API for Japanese document images; pass optional language and layout hints when the schema supports them. Recognize printed text from a public image URL. Use this OCR API for Japanese document images; pass optional language and layout hints when the schema supports them. ocr object boolean string uri object string ocr image text-extraction document-processing japanese jpn 日语 日文 ocr text recognition image text extraction document OCR screenshot OCR receipt OCR invoice OCR bill OCR form OCR extract text from image recognize text japanese jpn 日语 日文 Extract text from public image URLs Read Japanese document images Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON Only public http or https image URLs are supported in this adapter Image binary upload is not exposed by this Server402 adapter Provider credentials and upstream OCR permissions must be configured on the server /api/tools/japanese-ocr","aliases":["Japanese OCR","ocr","image","text-extraction","document-processing","japanese","jpn","日语","日文","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","japanese-ocr","japanese_ocr","/api/tools/japanese-ocr"],"localeHints":["en","zh"],"useCases":["Extract text from public image URLs","Read Japanese document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"paymentFlow":{"type":"http-402","createPayment":{"method":"POST","url":"/api/payments","bodySchema":{"properties":{"providerId":{"type":"string"},"serviceId":{"description":"Use the canonical service id from the catalog. Legacy internal ids remain accepted for backward compatibility.","type":"string"}},"required":["serviceId"],"type":"object"},"responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"verifyPayment":{"method":"GET","url":"/api/payments/{paymentId}","responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"token":{"header":"X-Payment-Token","mcpArgument":"paymentToken","httpUsage":"Send the paid token in the X-Payment-Token request header when calling /api/tools/*.","mcpUsage":"Pass the paid token as the paymentToken argument when calling the MCP tool."},"requiredResponse":{"status":402,"contentType":"application/json","headers":{"X-Payment-Required":"true","X-Payment-Token":"payment.token"},"bodySchema":{"properties":{"error":{"type":"string"},"payment":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"required":["error","payment"],"type":"object"}},"retry":{"when":"Retry after payment.status is paid and the token has remaining calls.","http":["Call POST /api/payments with serviceId to create a payment if the first service call returned 402.","Complete or verify payment using GET /api/payments/{paymentId}.","Retry the original /api/tools/* request with X-Payment-Token set to payment.token."],"mcp":["Call the tool without paymentToken to receive payment_required structuredContent.","Complete or verify payment using the returned payment.paymentId.","Call the same MCP tool again with paymentToken set to payment.token."],"failures":["payment required","payment token expired","payment token has no remaining calls","api key required","api key is not allowed to call this service"]}},"paymentHint":"Create a payment with POST /api/payments using serviceId=\"japanese-ocr\", then pass the returned token in X-Payment-Token or MCP paymentToken.","retryHint":"If the service returns HTTP 402, complete or verify the payment and retry the same request with the payment token.","requiredState":"published, enabled"},"complexity":"moderate","typicalResponseTime":"1500ms","cacheable":true,"idempotent":true,"outputFormat":"json","relatedServices":["multilingual-ocr","english-ocr","korean-ocr"],"requiredContext":["public-image-url","aliyun-credentials"],"errorExamples":[{"input":{},"error":"imageUrl is required","statusCode":400},{"input":{"imageUrl":"not-a-url"},"error":"imageUrl must be a valid http or https URL","statusCode":400}],"sla":{"uptime":"99.5%","maxLatency":"5000ms"},"matchScore":77,"matchTerms":["ocr","extract text","recognize text","text extraction","text recognition"],"why":"Matched ocr, extract text, recognize text, text extraction, text recognition for \"Japanese OCR\". Price is USD 0.20 per policy ocr-api."},{"id":"korean-ocr","canonicalId":"korean-ocr","internalServiceId":"aliyun-ocr-korean","name":"Korean OCR","description":"Recognize printed text from a public image URL. Use this OCR API for Korean document images; pass optional language and layout hints when the schema supports them.","descriptionForModel":"Recognize printed text from a public image URL. Use this OCR API for Korean document images; pass optional language and layout hints when the schema supports them.","category":"ocr","keywords":["ocr","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","korean","kor","韩语","韩文"],"useCases":["Extract text from public image URLs","Read Korean document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"tags":["ocr","image","text-extraction","document-processing","korean","kor","韩语","韩文"],"method":"POST","endpoint":"/api/tools/korean-ocr","legacyEndpoint":"/api/tools/aliyun-ocr-korean","endpointAliases":["/api/tools/korean-ocr","/api/tools/aliyun-ocr-korean"],"inputTypes":["object","boolean","string","uri"],"outputTypes":["object","string"],"inputSchema":{"properties":{"imageUrl":{"format":"uri","type":"string"},"needRotate":{"type":"boolean"},"outputCharInfo":{"type":"boolean"},"outputTable":{"type":"boolean"}},"required":["imageUrl"],"type":"object"},"outputSchema":{"properties":{"code":{"type":"string"},"content":{"type":"string"},"data":{"type":"object"},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["requestId","content","data"],"type":"object"},"exampleRequest":{"imageUrl":"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241223/dgzqnh/%E9%9F%A9%E8%AF%AD%E8%AF%86%E5%88%AB.png","needRotate":false,"outputCharInfo":false,"outputTable":false},"exampleResponse":{"code":"200","content":"등록되었음을 증명합니다","data":{"content":"등록되었음을 증명합니다"},"message":"success","requestId":"example-request-id"},"pricing":{"amountCents":20,"currency":"USD","policyId":"ocr-api","settleMode":"settle_first","billingMode":"per_call","maxCalls":1,"allowReuse":false,"bindClient":true},"payment":{"providerId":"x402-base-usdc","provider":"x402_facilitator"},"quality":{"qualityScore":54,"healthStatus":"healthy","healthCheckedAt":"2026-06-03T13:57:08Z","healthLatencyMs":1292,"successRate":0,"callCount":1,"executionCount":1,"successCount":0,"errorCount":1,"paymentRequireds":0,"lastCallAt":"2026-06-03T12:06:49Z"},"discovery":{"toolName":"korean_ocr","searchText":"korean-ocr Korean OCR Recognize printed text from a public image URL. Use this OCR API for Korean document images; pass optional language and layout hints when the schema supports them. Recognize printed text from a public image URL. Use this OCR API for Korean document images; pass optional language and layout hints when the schema supports them. ocr object boolean string uri object string ocr image text-extraction document-processing korean kor 韩语 韩文 ocr text recognition image text extraction document OCR screenshot OCR receipt OCR invoice OCR bill OCR form OCR extract text from image recognize text korean kor 韩语 韩文 Extract text from public image URLs Read Korean document images Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON Only public http or https image URLs are supported in this adapter Image binary upload is not exposed by this Server402 adapter Provider credentials and upstream OCR permissions must be configured on the server /api/tools/korean-ocr","aliases":["Korean OCR","ocr","image","text-extraction","document-processing","korean","kor","韩语","韩文","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","korean-ocr","korean_ocr","/api/tools/korean-ocr"],"localeHints":["en","zh"],"useCases":["Extract text from public image URLs","Read Korean document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"paymentFlow":{"type":"http-402","createPayment":{"method":"POST","url":"/api/payments","bodySchema":{"properties":{"providerId":{"type":"string"},"serviceId":{"description":"Use the canonical service id from the catalog. Legacy internal ids remain accepted for backward compatibility.","type":"string"}},"required":["serviceId"],"type":"object"},"responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"verifyPayment":{"method":"GET","url":"/api/payments/{paymentId}","responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"token":{"header":"X-Payment-Token","mcpArgument":"paymentToken","httpUsage":"Send the paid token in the X-Payment-Token request header when calling /api/tools/*.","mcpUsage":"Pass the paid token as the paymentToken argument when calling the MCP tool."},"requiredResponse":{"status":402,"contentType":"application/json","headers":{"X-Payment-Required":"true","X-Payment-Token":"payment.token"},"bodySchema":{"properties":{"error":{"type":"string"},"payment":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"required":["error","payment"],"type":"object"}},"retry":{"when":"Retry after payment.status is paid and the token has remaining calls.","http":["Call POST /api/payments with serviceId to create a payment if the first service call returned 402.","Complete or verify payment using GET /api/payments/{paymentId}.","Retry the original /api/tools/* request with X-Payment-Token set to payment.token."],"mcp":["Call the tool without paymentToken to receive payment_required structuredContent.","Complete or verify payment using the returned payment.paymentId.","Call the same MCP tool again with paymentToken set to payment.token."],"failures":["payment required","payment token expired","payment token has no remaining calls","api key required","api key is not allowed to call this service"]}},"paymentHint":"Create a payment with POST /api/payments using serviceId=\"korean-ocr\", then pass the returned token in X-Payment-Token or MCP paymentToken.","retryHint":"If the service returns HTTP 402, complete or verify the payment and retry the same request with the payment token.","requiredState":"published, enabled"},"complexity":"moderate","typicalResponseTime":"1500ms","cacheable":true,"idempotent":true,"outputFormat":"json","relatedServices":["multilingual-ocr","english-ocr","japanese-ocr"],"requiredContext":["public-image-url","aliyun-credentials"],"errorExamples":[{"input":{},"error":"imageUrl is required","statusCode":400},{"input":{"imageUrl":"not-a-url"},"error":"imageUrl must be a valid http or https URL","statusCode":400}],"sla":{"uptime":"99.5%","maxLatency":"5000ms"},"matchScore":77,"matchTerms":["ocr","extract text","recognize text","text extraction","text recognition"],"why":"Matched ocr, extract text, recognize text, text extraction, text recognition for \"Korean OCR\". Price is USD 0.20 per policy ocr-api."},{"id":"multilingual-ocr","canonicalId":"multilingual-ocr","internalServiceId":"aliyun-multilang-ocr","name":"Multilingual OCR","description":"Recognize printed text from a public image URL. Use this OCR API for mixed or unknown-language images; pass optional language and layout hints when the schema supports them.","descriptionForModel":"Recognize printed text from a public image URL. Use this OCR API for mixed or unknown-language images; pass optional language and layout hints when the schema supports them.","category":"ocr","keywords":["ocr","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","multilingual","multi language","auto language","通用多语言","小语种"],"useCases":["Extract text from public image URLs","Read mixed or unknown-language images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"tags":["ocr","image","text-extraction","document-processing","multilingual","multi language","auto language","通用多语言","小语种"],"method":"POST","endpoint":"/api/tools/multilingual-ocr","legacyEndpoint":"/api/tools/aliyun-multilang-ocr","endpointAliases":["/api/tools/multilingual-ocr","/api/tools/aliyun-multilang-ocr"],"inputTypes":["object","boolean","string","uri","array"],"outputTypes":["object","string"],"inputSchema":{"properties":{"imageUrl":{"format":"uri","type":"string"},"languages":{"items":{"type":"string"},"type":"array"},"needRotate":{"type":"boolean"},"needSortPage":{"type":"boolean"},"outputCharInfo":{"type":"boolean"},"outputTable":{"type":"boolean"}},"required":["imageUrl","languages"],"type":"object"},"outputSchema":{"properties":{"code":{"type":"string"},"content":{"type":"string"},"data":{"type":"object"},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["requestId","content","data"],"type":"object"},"exampleRequest":{"imageUrl":"https://img.alicdn.com/tfs/TB1Wo7eXAvoK1RjSZFDXXXY3pXa-2512-3509.jpg","languages":["eng","chn"],"needRotate":false,"needSortPage":false,"outputCharInfo":false,"outputTable":false},"exampleResponse":{"code":"200","content":"PACKING Shipper/Export Invoice No \u0026 Date","data":{"content":"PACKING Shipper/Export Invoice No \u0026 Date"},"message":"success","requestId":"example-request-id"},"pricing":{"amountCents":20,"currency":"USD","policyId":"ocr-api","settleMode":"settle_first","billingMode":"per_call","maxCalls":1,"allowReuse":false,"bindClient":true},"payment":{"providerId":"x402-base-usdc","provider":"x402_facilitator"},"quality":{"qualityScore":54,"healthStatus":"healthy","healthCheckedAt":"2026-05-29T09:54:57Z","healthLatencyMs":1872,"successRate":0,"callCount":1,"executionCount":1,"successCount":0,"errorCount":1,"paymentRequireds":0,"lastCallAt":"2026-06-03T12:06:32Z"},"discovery":{"toolName":"multilingual_ocr","searchText":"multilingual-ocr Multilingual OCR Recognize printed text from a public image URL. Use this OCR API for mixed or unknown-language images; pass optional language and layout hints when the schema supports them. Recognize printed text from a public image URL. Use this OCR API for mixed or unknown-language images; pass optional language and layout hints when the schema supports them. ocr object boolean string uri array object string ocr image text-extraction document-processing multilingual multi language auto language 通用多语言 小语种 ocr text recognition image text extraction document OCR screenshot OCR receipt OCR invoice OCR bill OCR form OCR extract text from image recognize text multilingual multi language auto language 通用多语言 小语种 Extract text from public image URLs Read mixed or unknown-language images Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON Only public http or https image URLs are supported in this adapter Image binary upload is not exposed by this Server402 adapter Provider credentials and upstream OCR permissions must be configured on the server /api/tools/multilingual-ocr","aliases":["Multilingual OCR","ocr","image","text-extraction","document-processing","multilingual","multi language","auto language","通用多语言","小语种","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","multilingual-ocr","multilingual_ocr","/api/tools/multilingual-ocr"],"localeHints":["en","zh"],"useCases":["Extract text from public image URLs","Read mixed or unknown-language images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"paymentFlow":{"type":"http-402","createPayment":{"method":"POST","url":"/api/payments","bodySchema":{"properties":{"providerId":{"type":"string"},"serviceId":{"description":"Use the canonical service id from the catalog. Legacy internal ids remain accepted for backward compatibility.","type":"string"}},"required":["serviceId"],"type":"object"},"responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"verifyPayment":{"method":"GET","url":"/api/payments/{paymentId}","responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"token":{"header":"X-Payment-Token","mcpArgument":"paymentToken","httpUsage":"Send the paid token in the X-Payment-Token request header when calling /api/tools/*.","mcpUsage":"Pass the paid token as the paymentToken argument when calling the MCP tool."},"requiredResponse":{"status":402,"contentType":"application/json","headers":{"X-Payment-Required":"true","X-Payment-Token":"payment.token"},"bodySchema":{"properties":{"error":{"type":"string"},"payment":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"required":["error","payment"],"type":"object"}},"retry":{"when":"Retry after payment.status is paid and the token has remaining calls.","http":["Call POST /api/payments with serviceId to create a payment if the first service call returned 402.","Complete or verify payment using GET /api/payments/{paymentId}.","Retry the original /api/tools/* request with X-Payment-Token set to payment.token."],"mcp":["Call the tool without paymentToken to receive payment_required structuredContent.","Complete or verify payment using the returned payment.paymentId.","Call the same MCP tool again with paymentToken set to payment.token."],"failures":["payment required","payment token expired","payment token has no remaining calls","api key required","api key is not allowed to call this service"]}},"paymentHint":"Create a payment with POST /api/payments using serviceId=\"multilingual-ocr\", then pass the returned token in X-Payment-Token or MCP paymentToken.","retryHint":"If the service returns HTTP 402, complete or verify the payment and retry the same request with the payment token.","requiredState":"published, enabled"},"complexity":"moderate","typicalResponseTime":"1500ms","cacheable":true,"idempotent":true,"outputFormat":"json","relatedServices":["english-ocr","japanese-ocr","korean-ocr"],"requiredContext":["public-image-url","aliyun-credentials"],"errorExamples":[{"input":{},"error":"imageUrl is required","statusCode":400},{"input":{"imageUrl":"not-a-url"},"error":"imageUrl must be a valid http or https URL","statusCode":400}],"sla":{"uptime":"99.5%","maxLatency":"5000ms"},"matchScore":77,"matchTerms":["ocr","extract text","recognize text","text extraction","text recognition"],"why":"Matched ocr, extract text, recognize text, text extraction, text recognition for \"Multilingual OCR\". Price is USD 0.20 per policy ocr-api."},{"id":"russian-ocr","canonicalId":"russian-ocr","internalServiceId":"aliyun-ocr-russian","name":"Russian OCR","description":"Recognize printed text from a public image URL. Use this OCR API for Russian document images; pass optional language and layout hints when the schema supports them.","descriptionForModel":"Recognize printed text from a public image URL. Use this OCR API for Russian document images; pass optional language and layout hints when the schema supports them.","category":"ocr","keywords":["ocr","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","russian","rus","俄语","俄文"],"useCases":["Extract text from public image URLs","Read Russian document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"tags":["ocr","image","text-extraction","document-processing","russian","rus","俄语","俄文"],"method":"POST","endpoint":"/api/tools/russian-ocr","legacyEndpoint":"/api/tools/aliyun-ocr-russian","endpointAliases":["/api/tools/russian-ocr","/api/tools/aliyun-ocr-russian"],"inputTypes":["object","string","uri","boolean"],"outputTypes":["object","string"],"inputSchema":{"properties":{"imageUrl":{"format":"uri","type":"string"},"needRotate":{"type":"boolean"},"outputCharInfo":{"type":"boolean"},"outputTable":{"type":"boolean"}},"required":["imageUrl"],"type":"object"},"outputSchema":{"properties":{"code":{"type":"string"},"content":{"type":"string"},"data":{"type":"object"},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["requestId","content","data"],"type":"object"},"exampleRequest":{"imageUrl":"https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/9788868261/p303421.jpg","needRotate":false,"outputCharInfo":false,"outputTable":false},"exampleResponse":{"code":"200","content":"пример текста","data":{"content":"пример текста"},"message":"success","requestId":"example-request-id"},"pricing":{"amountCents":20,"currency":"USD","policyId":"ocr-api","settleMode":"settle_first","billingMode":"per_call","maxCalls":1,"allowReuse":false,"bindClient":true},"payment":{"providerId":"x402-base-usdc","provider":"x402_facilitator"},"quality":{"qualityScore":54,"healthStatus":"healthy","healthCheckedAt":"2026-06-03T13:57:11Z","healthLatencyMs":1074,"successRate":0,"callCount":1,"executionCount":1,"successCount":0,"errorCount":1,"paymentRequireds":0,"lastCallAt":"2026-06-03T12:06:12Z"},"discovery":{"toolName":"russian_ocr","searchText":"russian-ocr Russian OCR Recognize printed text from a public image URL. Use this OCR API for Russian document images; pass optional language and layout hints when the schema supports them. Recognize printed text from a public image URL. Use this OCR API for Russian document images; pass optional language and layout hints when the schema supports them. ocr object string uri boolean object string ocr image text-extraction document-processing russian rus 俄语 俄文 ocr text recognition image text extraction document OCR screenshot OCR receipt OCR invoice OCR bill OCR form OCR extract text from image recognize text russian rus 俄语 俄文 Extract text from public image URLs Read Russian document images Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON Only public http or https image URLs are supported in this adapter Image binary upload is not exposed by this Server402 adapter Provider credentials and upstream OCR permissions must be configured on the server /api/tools/russian-ocr","aliases":["Russian OCR","ocr","image","text-extraction","document-processing","russian","rus","俄语","俄文","text recognition","image text extraction","document OCR","screenshot OCR","receipt OCR","invoice OCR","bill OCR","form OCR","extract text from image","recognize text","russian-ocr","russian_ocr","/api/tools/russian-ocr"],"localeHints":["en","zh"],"useCases":["Extract text from public image URLs","Read Russian document images","Convert scanned documents, screenshots, receipts, forms, and image text into structured JSON"],"limitations":["Only public http or https image URLs are supported in this adapter","Image binary upload is not exposed by this Server402 adapter","Provider credentials and upstream OCR permissions must be configured on the server"],"paymentFlow":{"type":"http-402","createPayment":{"method":"POST","url":"/api/payments","bodySchema":{"properties":{"providerId":{"type":"string"},"serviceId":{"description":"Use the canonical service id from the catalog. Legacy internal ids remain accepted for backward compatibility.","type":"string"}},"required":["serviceId"],"type":"object"},"responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"verifyPayment":{"method":"GET","url":"/api/payments/{paymentId}","responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"token":{"header":"X-Payment-Token","mcpArgument":"paymentToken","httpUsage":"Send the paid token in the X-Payment-Token request header when calling /api/tools/*.","mcpUsage":"Pass the paid token as the paymentToken argument when calling the MCP tool."},"requiredResponse":{"status":402,"contentType":"application/json","headers":{"X-Payment-Required":"true","X-Payment-Token":"payment.token"},"bodySchema":{"properties":{"error":{"type":"string"},"payment":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"required":["error","payment"],"type":"object"}},"retry":{"when":"Retry after payment.status is paid and the token has remaining calls.","http":["Call POST /api/payments with serviceId to create a payment if the first service call returned 402.","Complete or verify payment using GET /api/payments/{paymentId}.","Retry the original /api/tools/* request with X-Payment-Token set to payment.token."],"mcp":["Call the tool without paymentToken to receive payment_required structuredContent.","Complete or verify payment using the returned payment.paymentId.","Call the same MCP tool again with paymentToken set to payment.token."],"failures":["payment required","payment token expired","payment token has no remaining calls","api key required","api key is not allowed to call this service"]}},"paymentHint":"Create a payment with POST /api/payments using serviceId=\"russian-ocr\", then pass the returned token in X-Payment-Token or MCP paymentToken.","retryHint":"If the service returns HTTP 402, complete or verify the payment and retry the same request with the payment token.","requiredState":"published, enabled"},"complexity":"moderate","typicalResponseTime":"1500ms","cacheable":true,"idempotent":true,"outputFormat":"json","relatedServices":["multilingual-ocr","english-ocr","japanese-ocr"],"requiredContext":["public-image-url","aliyun-credentials"],"errorExamples":[{"input":{},"error":"imageUrl is required","statusCode":400},{"input":{"imageUrl":"not-a-url"},"error":"imageUrl must be a valid http or https URL","statusCode":400}],"sla":{"uptime":"99.5%","maxLatency":"5000ms"},"matchScore":77,"matchTerms":["ocr","extract text","recognize text","text extraction","text recognition"],"why":"Matched ocr, extract text, recognize text, text extraction, text recognition for \"Russian OCR\". Price is USD 0.20 per policy ocr-api."},{"id":"hair-segmentation","canonicalId":"hair-segmentation","internalServiceId":"aliyun-imageseg-segment-hair","name":"Segment Hair Image Segmentation","description":"Use this visual AI API when the task needs segmenting hair regions in an image. Send the schema keys exactly as listed (ImageURL); required parameters: ImageURL.","descriptionForModel":"Use this visual AI API when the task needs segmenting hair regions in an image. Send the schema keys exactly as listed (ImageURL); required parameters: ImageURL.","category":"image-segmentation","keywords":["SegmentHair","阿里云分割抠图 头发分割","image segmentation","background removal","cutout","matting","mask generation","foreground extraction","segment","hair"],"useCases":["segmenting hair regions in an image","Call one focused visual AI capability directly with JSON inputs","Use public image or video URLs and structured parameters to get machine-readable results"],"limitations":["Pass parameter names exactly as listed in the input schema","Only public http or https URLs and JSON/base64 text parameters are supported in this adapter","Binary file upload is not exposed by this Server402 adapter","Provider credentials and upstream permissions must be configured on the server"],"tags":["computer-vision","image-segmentation","background-removal"],"method":"POST","endpoint":"/api/tools/hair-segmentation","legacyEndpoint":"/api/tools/aliyun-imageseg-segment-hair","endpointAliases":["/api/tools/hair-segmentation","/api/tools/aliyun-imageseg-segment-hair"],"inputTypes":["object","string","uri"],"outputTypes":["object","string"],"inputSchema":{"description":"Use Alibaba Cloud RPC parameter names exactly, for example ImageURL, ImageUrl, Url, URL, JobId, or Tasks depending on the service.","properties":{"ImageURL":{"description":"Public http or https image URL accepted by the Alibaba Cloud API.","format":"uri","type":"string"}},"required":["ImageURL"],"type":"object"},"outputSchema":{"properties":{"code":{"type":"string"},"content":{"type":"string"},"data":{"type":"object"},"message":{"type":"string"},"requestId":{"type":"string"}},"required":["requestId","data"],"type":"object"},"exampleRequest":{"ImageURL":"https://example.com/image.jpg"},"exampleResponse":{"code":"200","content":"","data":{"Action":"SegmentHair","Result":"example result from Alibaba Cloud imageseg"},"message":"success","requestId":"example-request-id"},"pricing":{"amountCents":20,"currency":"USD","policyId":"aliyun-viapi","settleMode":"settle_first","billingMode":"per_call","maxCalls":1,"allowReuse":false,"bindClient":true},"payment":{"providerId":"x402-base-usdc","provider":"x402_facilitator"},"quality":{"qualityScore":4,"healthStatus":"unhealthy","healthCheckedAt":"2026-06-03T13:57:29Z","healthLatencyMs":110,"successRate":0,"callCount":1,"executionCount":1,"successCount":0,"errorCount":1,"paymentRequireds":0,"lastCallAt":"2026-06-03T12:06:52Z"},"discovery":{"toolName":"hair_segmentation","searchText":"hair-segmentation Segment Hair Image Segmentation Use this visual AI API when the task needs segmenting hair regions in an image. Send the schema keys exactly as listed (ImageURL); required parameters: ImageURL. Use this visual AI API when the task needs segmenting hair regions in an image. Send the schema keys exactly as listed (ImageURL); required parameters: ImageURL. image-segmentation object string uri object string computer-vision image-segmentation background-removal SegmentHair 阿里云分割抠图 头发分割 image segmentation background removal cutout matting mask generation foreground extraction segment hair segmenting hair regions in an image Call one focused visual AI capability directly with JSON inputs Use public image or video URLs and structured parameters to get machine-readable results Pass parameter names exactly as listed in the input schema Only public http or https URLs and JSON/base64 text parameters are supported in this adapter Binary file upload is not exposed by this Server402 adapter Provider credentials and upstream permissions must be configured on the server /api/tools/hair-segmentation","aliases":["Segment Hair Image Segmentation","image-segmentation","computer-vision","background-removal","SegmentHair","阿里云分割抠图 头发分割","image segmentation","background removal","cutout","matting","mask generation","foreground extraction","segment","hair","hair-segmentation","hair_segmentation","/api/tools/hair-segmentation"],"localeHints":["en","zh"],"useCases":["segmenting hair regions in an image","Call one focused visual AI capability directly with JSON inputs","Use public image or video URLs and structured parameters to get machine-readable results"],"limitations":["Pass parameter names exactly as listed in the input schema","Only public http or https URLs and JSON/base64 text parameters are supported in this adapter","Binary file upload is not exposed by this Server402 adapter","Provider credentials and upstream permissions must be configured on the server"],"paymentFlow":{"type":"http-402","createPayment":{"method":"POST","url":"/api/payments","bodySchema":{"properties":{"providerId":{"type":"string"},"serviceId":{"description":"Use the canonical service id from the catalog. Legacy internal ids remain accepted for backward compatibility.","type":"string"}},"required":["serviceId"],"type":"object"},"responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"verifyPayment":{"method":"GET","url":"/api/payments/{paymentId}","responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"token":{"header":"X-Payment-Token","mcpArgument":"paymentToken","httpUsage":"Send the paid token in the X-Payment-Token request header when calling /api/tools/*.","mcpUsage":"Pass the paid token as the paymentToken argument when calling the MCP tool."},"requiredResponse":{"status":402,"contentType":"application/json","headers":{"X-Payment-Required":"true","X-Payment-Token":"payment.token"},"bodySchema":{"properties":{"error":{"type":"string"},"payment":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"required":["error","payment"],"type":"object"}},"retry":{"when":"Retry after payment.status is paid and the token has remaining calls.","http":["Call POST /api/payments with serviceId to create a payment if the first service call returned 402.","Complete or verify payment using GET /api/payments/{paymentId}.","Retry the original /api/tools/* request with X-Payment-Token set to payment.token."],"mcp":["Call the tool without paymentToken to receive payment_required structuredContent.","Complete or verify payment using the returned payment.paymentId.","Call the same MCP tool again with paymentToken set to payment.token."],"failures":["payment required","payment token expired","payment token has no remaining calls","api key required","api key is not allowed to call this service"]}},"paymentHint":"Create a payment with POST /api/payments using serviceId=\"hair-segmentation\", then pass the returned token in X-Payment-Token or MCP paymentToken.","retryHint":"If the service returns HTTP 402, complete or verify the payment and retry the same request with the payment token.","requiredState":"published, enabled"},"complexity":"moderate","typicalResponseTime":"1200ms","cacheable":true,"idempotent":true,"outputFormat":"json","relatedServices":["sky-replacement","image-segmentation-job-result","face-segmentation-parsing"],"requiredContext":["public-image-url","aliyun-credentials"],"errorExamples":[{"input":{},"error":"ImageURL is required","statusCode":400},{"input":{"ImageURL":"not-a-url"},"error":"ImageURL must be a valid http or https URL","statusCode":400}],"sla":{"uptime":"99.5%","maxLatency":"5000ms"},"matchScore":11,"matchTerms":["thai"],"why":"Matched thai for \"Segment Hair Image Segmentation\". Price is USD 0.20 per policy aliyun-viapi."}],"payment":{"paymentHeader":"X-Payment-Token","createPayment":"/api/payments","verifyPayment":"/api/payments/{paymentId}","token":{"header":"X-Payment-Token","mcpArgument":"paymentToken","httpUsage":"Send the paid token in the X-Payment-Token request header when calling /api/tools/*.","mcpUsage":"Pass the paid token as the paymentToken argument when calling the MCP tool."},"requiredResponse":{"status":402,"contentType":"application/json","headers":{"X-Payment-Required":"true","X-Payment-Token":"payment.token"},"bodySchema":{"properties":{"error":{"type":"string"},"payment":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"required":["error","payment"],"type":"object"}},"retry":{"when":"Retry after payment.status is paid and the token has remaining calls.","http":["Call POST /api/payments with serviceId to create a payment if the first service call returned 402.","Complete or verify payment using GET /api/payments/{paymentId}.","Retry the original /api/tools/* request with X-Payment-Token set to payment.token."],"mcp":["Call the tool without paymentToken to receive payment_required structuredContent.","Complete or verify payment using the returned payment.paymentId.","Call the same MCP tool again with paymentToken set to payment.token."],"failures":["payment required","payment token expired","payment token has no remaining calls","api key required","api key is not allowed to call this service"]},"flow":{"type":"http-402","createPayment":{"method":"POST","url":"/api/payments","bodySchema":{"properties":{"providerId":{"type":"string"},"serviceId":{"description":"Use the canonical service id from the catalog. Legacy internal ids remain accepted for backward compatibility.","type":"string"}},"required":["serviceId"],"type":"object"},"responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"verifyPayment":{"method":"GET","url":"/api/payments/{paymentId}","responseSchema":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"token":{"header":"X-Payment-Token","mcpArgument":"paymentToken","httpUsage":"Send the paid token in the X-Payment-Token request header when calling /api/tools/*.","mcpUsage":"Pass the paid token as the paymentToken argument when calling the MCP tool."},"requiredResponse":{"status":402,"contentType":"application/json","headers":{"X-Payment-Required":"true","X-Payment-Token":"payment.token"},"bodySchema":{"properties":{"error":{"type":"string"},"payment":{"properties":{"amountCents":{"type":"integer"},"billingMode":{"type":"string"},"clientId":{"type":"string"},"currency":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"internalServiceId":{"description":"Legacy internal service id, included only for backward compatibility.","type":"string"},"maxCalls":{"type":"integer"},"paidAt":{"format":"date-time","type":"string"},"payTo":{"type":"string"},"paymentId":{"type":"string"},"provider":{"type":"string"},"providerId":{"type":"string"},"remainingCalls":{"type":"integer"},"serviceId":{"description":"Canonical public service id.","type":"string"},"status":{"type":"string"},"token":{"type":"string"},"usedCalls":{"type":"integer"}},"type":"object"}},"required":["error","payment"],"type":"object"}},"retry":{"when":"Retry after payment.status is paid and the token has remaining calls.","http":["Call POST /api/payments with serviceId to create a payment if the first service call returned 402.","Complete or verify payment using GET /api/payments/{paymentId}.","Retry the original /api/tools/* request with X-Payment-Token set to payment.token."],"mcp":["Call the tool without paymentToken to receive payment_required structuredContent.","Complete or verify payment using the returned payment.paymentId.","Call the same MCP tool again with paymentToken set to payment.token."],"failures":["payment required","payment token expired","payment token has no remaining calls","api key required","api key is not allowed to call this service"]}}}}
