Integrasyon

FTIR.fun MCP Server at REST API

Ikonekta ang FTIR.fun sa iyong AI assistant o automation pipeline. MCP server para sa Claude/Cursor/Codex. REST API para sa custom integrations. Parehong 130,000+ reference spectra at literature-backed AI interpretation sa lahat ng paraan.

MCP Server — Claude, Cursor, Codex

Ang MCP (Model Context Protocol) server ng FTIR.fun ay nasuri at opisyal na nakalista sa Anthropic MCP Registry, Smithery, at MCP.so. Inilalantad nito ang FTIR spectral search, peak explanation na may DOI-cited literature, at material identification bilang callable tools para sa anumang MCP-compatible client.

Mabilis na Koneksyon

# 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

Mga Available na Tool

ToolPaglalarawan
search_ftir_libraryMaghanap ng 130K+ reference spectra sa pamamagitan ng peaks o na-upload na file. Ibinabalik ang mga niraranggo na matches na may CAS numbers at similarity scores.
search_public_ftir_resultsMaghanap ng community-shared analysis results ayon sa keyword.
fetch_public_ftir_resultKunin ang isang partikular na public FTIR analysis result ayon sa ID para sa masusing pagsusuri.

Server Card at Registry Links

Tingnan ang Lahat ng Platform Integrations

Coze Plugin — Gamitin sa Loob ng 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.

Search keywords: 红外分析, FTIR, infrared, 光谱检索, 物质识别

REST API

API ng Paghahanap sa Aklatan

POST /v1/search

Paghahanap sa spectral library. Tumatanggap ng file (full-spectrum matching) o peak list (peak-position matching). Kung pareho ang ibinigay, ang file search ang uunahin.

Autentikasyon

X-API-Key: your-api-key

Katawan ng Kahilingan

FieldUriKinakailanganPaglalarawan
file_base64stringisa saBase64-encoded instrument file (sumusuporta sa CSV, SPA, OPUS, SPC, JCAMP-DX, at 15+ iba pang mga format)
filenamestringmay file_base64Orihinal na filename kasama ang extension (hal. sample.spa)
peaksnumber[]isa saListahan ng peak wavenumbers sa cm⁻¹ (hal. [3026, 1601, 1493, 755])
top_kintegerhindi (default 10)Bilang ng mga resultang ibabalik, max 50
toleranceintegerhindi (default 8)Peak match tolerance sa cm⁻¹, range 1–30

Tugon

{ "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 }

Halimbawa — File Upload

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())

Halimbawa — Peak List

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())

Pagsusuri na AI-Lamang para sa Umiiral na mga Resulta

Gamitin ang endpoint na ito pagkatapos mayroon nang resulta ng paghahanap. Binabasa o ginagawa munang OCR ng FTIR.fun ang ibinigay na ulat, kinukuha ang naiulat na mga kandidato at talahanayan ng peak ng sample, pagkatapos ay pinapatakbo ang downstream KG at pagsusuri na suportado ng literatura.

POST /ftir/analyze_existing_results

Ang ulat ay dapat maglaman ng parehong naiulat na listahan ng resulta ng paghahanap at talahanayan ng peak ng sample. Ang endpoint na ito ay hindi nagsasagawa ng paghahanap sa spectral-library nang mag-isa.

Autentikasyon

X-API-Key: your-api-key

Katawan ng Kahilingan

FieldUriKinakailanganPaglalarawan
report_textstringisa saPlain text na kinopya mula sa isang umiiral na ulat ng instrumento o aklatan. Ang teksto ay dapat magsama ng parehong naiulat na mga resulta at talahanayan ng peak ng sample.
report_file_base64stringisa saBase64-encoded report file. Supported formats: PDF, DOC, DOCX, TXT, CSV, PNG, JPG, JPEG, WEBP, GIF, BMP, TIF, TIFF.
report_filenamestringna may report_file_base64Orihinal na pangalan ng file ng ulat kasama ang extension (halimbawa report.pdf o report.docx).
user_background_textstringhindiOpsyonal na background ng sample. Ito ay itinuturing bilang malambot na konteksto lamang at hindi bilang ebidensya.

Matigas na Hangganan ng Input

  • Kinakailangang elemento 1: kahit isang naiulat na kandidato ng resulta ng paghahanap, tulad ng isang Top1 hit o isang Top15 list
  • Kinakailangang elemento 2: ang listahan ng peak ng sample o talahanayan ng peak sa cm-1 mula sa parehong ulat
  • Kung ang alinman sa elemento ay nawawala, ang endpoint ay nagbabalik ng HTTP 422 at hindi bumubuo ng ulat ng pagsusuri

Tugon ng Tagumpay

{ "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": {} }

Tugon sa Nawawalang Input

{ "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 } } }

Halimbawa — Teksto ng Umiiral na Ulat

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())

Halimbawa — Umiiral na File ng Ulat

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())

Mga Error Code

Katayuan ng HTTPKahulugan
200Tagumpay
401Nawawala o hindi wastong API key
422Hindi wastong katawan ng kahilingan, hindi suportadong format ng ulat, o nawawalang kinakailangang elemento ng ulat
500Error sa panig ng server
Isumite ang Kahilingan Formularyo