Integracija

FTIR.fun MCP serveris ir REST API

Prijunkite FTIR.fun prie savo DI asistento ar automatizavimo grandinės. MCP serveris Claude/Cursor/Codex. REST API pasirinktinėms integracijoms. Tie patys 130 000+ referencinių spektrų ir literatūra pagrįsta DI interpretacija visais metodais.

MCP serveris — Claude, Cursor, Codex

FTIR.fun MCP (Model Context Protocol) serveris buvo peržiūrėtas ir oficialiai įtrauktas į Anthropic MCP Registry, Smithery ir MCP.so. Jis pateikia FTIR spektro paiešką, smailių paaiškinimą su DOI cituojama literatūra ir medžiagų identifikavimą kaip iškviečiamus įrankius bet kuriam MCP suderinamam klientui.

Greitas prisijungimas

# 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

Prieinami įrankiai

ĮrankisAprašymas
search_ftir_libraryIeškokite 130K+ referencinių spektrų pagal smailes arba įkeltą failą. Grąžina reitinguotus atitikmenis su CAS numeriais ir panašumo balais.
search_public_ftir_resultsIeškokite bendruomenės bendrinamų analizės rezultatų pagal raktinį žodį.
fetch_public_ftir_resultGaukite konkretų viešą FTIR analizės rezultatą pagal ID detaliai peržiūrai.

Serverio kortelė ir registro nuorodos

Peržiūrėti visas platformų integracijas

Coze papildinys — naudoti Doubao aplinkoje

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

Paieškos raktiniai žodžiai: 红外分析, FTIR, infrared, 光谱检索, 物质识别

REST API

Bibliotekos paieškos API

POST /v1/search

Spektrinės bibliotekos paieška. Priima failą (viso spektro atitikimas) arba piko sąrašą (piko padėties atitikimas). Jei pateikiami abu, failo paieška turi pirmenybę.

Autentifikavimas

X-API-Key: your-api-key

Užklausos kūnas

LaukasTipasBūtinaAprašymas
file_base64stringvienas išBase64 koduotas instrumento failas (palaiko CSV, SPA, OPUS, SPC, JCAMP-DX ir 15+ kitų formatų)
filenamestringsu file_base64Originalus failo pavadinimas su plėtiniu (pvz., sample.spa)
peaksnumber[]vienas išDidžiausių bangų skaičių sąrašas cm⁻¹ (pvz., [3026, 1601, 1493, 755])
top_kintegerne (numatyta 10)Grąžinamų rezultatų skaičius, daugiausia 50
toleranceintegerne (numatyta 8)Piko atitikimo tolerancija cm⁻¹, diapazonas 1–30

Atsakymas

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

Pavyzdys — failo įkėlimas

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

Pavyzdys — smailių sąrašas

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

AI tik esamų rezultatų analizė

Naudokite šį galutinį tašką tik tada, kai paieškos rezultatas jau egzistuoja. FTIR.fun pirmiausia nuskaito arba atlieka OCR pateiktoje ataskaitoje, ištraukia praneštus kandidatus ir mėginio smailių lentelę, tada atlieka tolesnę KG ir literatūra pagrįstą analizę.

POST /ftir/analyze_existing_results

Ataskaitoje turi būti tiek praneštų paieškos rezultatų sąrašas, tiek mėginio smailių lentelė. Šis galutinis taškas pats neatlieka spektrinės bibliotekos paieškos.

Autentifikavimas

X-API-Key: your-api-key

Užklausos kūnas

LaukasTipasBūtinaAprašymas
report_textstringvienas išPaprastas tekstas, nukopijuotas iš esamos prietaiso ar bibliotekos ataskaitos. Tekste turi būti tiek pranešti rezultatai, tiek mėginio smailių lentelė.
report_file_base64stringvienas išBase64 koduotas ataskaitos failas. Palaikomi formatai: PDF, DOC, DOCX, TXT, CSV, PNG, JPG, JPEG, WEBP, GIF, BMP, TIF, TIFF.
report_filenamestringsu report_file_base64Originalus ataskaitos failo pavadinimas su plėtiniu (pvz., report.pdf arba report.docx).
user_background_textstringneNeprivalomas mėginio fonas. Tai traktuojama tik kaip minkštas kontekstas, o ne kaip įrodymas.

Griežta įvesties riba

  • Reikalingas elementas 1: bent vienas praneštas paieškos rezultato kandidatas, pvz., Top1 pataikymas arba Top15 sąrašas.
  • Reikalingas elementas 2: mėginio smailių sąrašas arba lentelė cm⁻¹ iš tos pačios ataskaitos.
  • Jei trūksta bet kurio elemento, galutinis taškas grąžina HTTP 422 ir nesukuria analizės ataskaitos.

Sėkmės atsakas

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

Trūkstamos įvesties atsakas

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

Pavyzdys – esamas ataskaitos tekstas

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

Pavyzdys – esamas ataskaitos failas

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

Klaidų kodai

HTTP būsenaReikšmė
200Sėkmė
401Trūksta arba neteisingas API raktas
422Neteisingas užklausos turinys, nepalaikomas ataskaitos formatas arba trūksta reikalingų ataskaitos elementų.
500Serverio klaida
Pateikti užklausą Forma