Tích hợp

Máy chủ MCP & REST API của FTIR.fun

Kết nối FTIR.fun với trợ lý AI hoặc quy trình tự động hóa của bạn. Máy chủ MCP cho Claude/Cursor/Codex. REST API cho các tích hợp tùy chỉnh. Cùng hơn 130.000 phổ tham khảo và diễn giải AI dựa trên tài liệu trên tất cả các phương thức.

Máy chủ MCP — Claude, Cursor, Codex

Máy chủ MCP (Giao thức ngữ cảnh mô hình) của FTIR.fun đã được xem xét và chính thức niêm yết trên Anthropic MCP Registry, Smithery và MCP.so. Nó cung cấp tìm kiếm phổ FTIR, giải thích đỉnh với tài liệu trích dẫn DOI và nhận dạng vật liệu dưới dạng các công cụ có thể gọi cho bất kỳ máy khách tương thích MCP nào.

Kết nối nhanh

# Claude Desktop / Claude Code claude mcp add ftirfun https://ftir.fun/mcp # Cursor # Add to ~/.cursor/mcp.json: {"mcpServers": {"ftirfun": {"url": "https://ftir.fun/mcp"}}} # OpenAI Codex codex mcp add ftirfun https://ftir.fun/mcp

Các công cụ có sẵn

Công cụMô tả
search_ftir_libraryTìm kiếm hơn 130K phổ tham khảo theo đỉnh hoặc tệp tải lên. Trả về các kết quả khớp được xếp hạng với số CAS và điểm tương tự.
search_public_ftir_resultsTìm kiếm kết quả phân tích do cộng đồng chia sẻ theo từ khóa.
fetch_public_ftir_resultLấy kết quả phân tích FTIR công khai cụ thể theo ID để xem xét chi tiết.

Thẻ máy chủ & Liên kết registry

Xem tất cả tích hợp nền tảng

Plugin Coze — Sử dụng trong Doubao

Open Doubao → Plugin Store → search "FTIR" or "红外分析" → tap Add. No configuration needed. Doubao will automatically route infrared-related queries to our spectral search engine.

Từ khóa tìm kiếm: 红外分析, FTIR, infrared, 光谱检索, 物质识别

API REST

API tìm kiếm thư viện

POST /v1/search

Tìm kiếm thư viện phổ. Chấp nhận tệp (khớp toàn phổ) hoặc danh sách đỉnh (khớp vị trí đỉnh). Nếu cả hai được cung cấp, tìm kiếm tệp được ưu tiên.

Xác thực

X-API-Key: your-api-key

Nội dung yêu cầu

TrườngLoạiBắt buộcMô tả
file_base64stringmột trongTệp thiết bị mã hóa Base64 (hỗ trợ CSV, SPA, OPUS, SPC, JCAMP-DX và hơn 15 định dạng khác)
filenamestringvới file_base64Tên tệp gốc bao gồm phần mở rộng (ví dụ: sample.spa)
peaksnumber[]một trongDanh sách số sóng đỉnh tính bằng cm⁻¹ (ví dụ: [3026, 1601, 1493, 755])
top_kintegerkhông (mặc định 10)Số lượng kết quả trả về, tối đa 50
toleranceintegerkhông (mặc định 8)Dung sai khớp đỉnh tính bằng cm⁻¹, phạm vi 1–30

Phản hồi

{ "success": true, "search_mode": "full_spectrum", "n_matches": 10, "matches": [ { "rank": 1, "name": "Polystyrene", "cas": "25086-18-4", "num": 326, "similarity": 0.9586 } ], "file_format": "Thermo SPA", "n_points": 3601, "error": null }

Ví dụ — Tải lên tệp

import base64, requests with open("sample.spa", "rb") as f: b64 = base64.b64encode(f.read()).decode() resp = requests.post( "https://api.ftir.fun/v1/search", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={"file_base64": b64, "filename": "sample.spa", "top_k": 5}, ) print(resp.json())

Ví dụ — Danh sách Đỉnh

import requests resp = requests.post( "https://api.ftir.fun/v1/search", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={"peaks": [3082, 3026, 2923, 1601, 1493, 1451, 1028, 906, 755, 699], "top_k": 5}, ) print(resp.json())

Phân tích chỉ dùng AI cho kết quả hiện có

Chỉ sử dụng endpoint này sau khi kết quả tìm kiếm đã tồn tại. FTIR.fun trước tiên đọc hoặc OCR báo cáo được cung cấp, trích xuất các ứng viên được báo cáo và bảng đỉnh mẫu, sau đó chạy phân tích KG và tài liệu hạ nguồn.

POST /ftir/analyze_existing_results

Báo cáo phải chứa cả danh sách kết quả tìm kiếm được báo cáo và bảng đỉnh mẫu. Endpoint này tự nó không thực hiện tìm kiếm thư viện phổ.

Xác thực

X-API-Key: your-api-key

Nội dung yêu cầu

TrườngLoạiBắt buộcMô tả
report_textstringmột trongVăn bản thuần sao chép từ một báo cáo thiết bị hoặc thư viện hiện có. Văn bản phải bao gồm cả kết quả được báo cáo và bảng đỉnh mẫu.
report_file_base64stringmột trongTệp báo cáo mã hóa Base64. Các định dạng được hỗ trợ: PDF, DOC, DOCX, TXT, CSV, PNG, JPG, JPEG, WEBP, GIF, BMP, TIF, TIFF.
report_filenamestringvới report_file_base64Tên tệp báo cáo gốc bao gồm phần mở rộng (ví dụ report.pdf hoặc report.docx).
user_background_textstringkhôngThông tin nền mẫu tùy chọn. Điều này chỉ được coi là ngữ cảnh mềm và không phải bằng chứng.

Ranh giới đầu vào cứng

  • Phần tử bắt buộc 1: ít nhất một ứng viên kết quả tìm kiếm được báo cáo, chẳng hạn như kết quả Top1 hoặc danh sách Top15
  • Phần tử bắt buộc 2: danh sách đỉnh mẫu hoặc bảng đỉnh tính bằng cm-1 từ cùng một báo cáo
  • Nếu thiếu bất kỳ phần tử nào, endpoint trả về HTTP 422 và không tạo báo cáo phân tích

Phản hồi thành công

{ "success": true, "analysis_mode": "ai_only_existing_results", "message": "AI-only analysis completed from the supplied existing results report.", "input_requirements": { "service_boundary": "AI-only analysis starts after a search result already exists.", "required_inputs": [ "At least one reported search result candidate (Top1 or Top15).", "The sample peak table or peak list in cm-1." ] }, "missing_requirements": [], "missing_requirement_messages": [], "extracted_report": { "source_kind": "pdf", "used_ocr": true, "peak_values_cm1": [1736, 1601, 1241], "library_candidates": [ {"rank": 1, "name": "Polyethylene terephthalate", "cas_number": "25038-59-9", "raw_score_text": "856/1000", "normalized_similarity": 0.856} ] }, "summary": "Reported library results rank Polyethylene terephthalate first.", "report_view": {}, "final_decision": {}, "direct_evidence": {}, "related_literature": {} }

Phản hồi thiếu đầu vào

{ "detail": { "success": false, "analysis_mode": "ai_only_existing_results", "error": "missing_required_report_elements", "message": "AI-only analysis requires both reported library results and a sample peak table.", "missing_requirements": ["sample_peak_table"], "missing_requirement_messages": [ "Missing sample peak table. Provide the sample peak list or peak table in cm-1 from the same report." ], "input_requirements": { "failure_behavior": "If either the reported result list or the sample peak table is missing, the service stops and returns a 422 response." }, "extracted_report": { "report_has_library_results": true, "report_has_peak_table": false } } }

Ví dụ — Văn bản báo cáo hiện có

import requests report_text = """ Sample: PET fragment Top1: Polyethylene terephthalate Score: 856/1000 Top2: Polyester resin Score: 801/1000 Peak table (cm-1): 3435, 2932, 1715, 1409, 1241, 1093, 1017, 872, 722 """ resp = requests.post( "https://api.ftir.fun/ftir/analyze_existing_results", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={"report_text": report_text, "user_background_text": "consumer packaging fragment"}, ) print(resp.json())

Ví dụ — Tệp báo cáo hiện có

import base64, requests with open("instrument-report.pdf", "rb") as f: b64 = base64.b64encode(f.read()).decode() resp = requests.post( "https://api.ftir.fun/ftir/analyze_existing_results", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={ "report_file_base64": b64, "report_filename": "instrument-report.pdf", "user_background_text": "suspected packaging adhesive", }, ) print(resp.json())

Mã lỗi

Trạng thái HTTPÝ nghĩa
200Thành công
401Thiếu hoặc khóa API không hợp lệ
422Nội dung yêu cầu không hợp lệ, định dạng báo cáo không được hỗ trợ, hoặc thiếu các phần tử báo cáo bắt buộc
500Lỗi phía máy chủ
Gửi Yêu cầu Biểu mẫu