Integracija

FTIR.fun MCP strežnik in REST API

Povežite FTIR.fun s svojim AI pomočnikom ali avtomatizacijsko cevovod. MCP strežnik za Claude/Cursor/Codex. REST API za prilagojene integracije. Isti 130.000+ referenčni spektri in AI interpretacija, podprta z literaturo, pri vseh metodah.

MCP strežnik — Claude, Cursor, Codex

MCP (Model Context Protocol) strežnik FTIR.fun je pregledan in uradno naveden v Anthropic MCP Registry, Smithery in MCP.so. Izpostavlja spektralno iskanje FTIR, razlago vrhov z literaturo, citirano z DOI, in identifikacijo materialov kot klicljiva orodja za kateri koli odjemalec, združljiv z MCP.

Hitra povezava

# 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

Razpoložljiva orodja

OrodjeOpis
search_ftir_libraryIščite 130K+ referenčnih spektrov po vrhovih ali naloženi datoteki. Vrne razvrščene ujemanja s CAS številkami in ocenami podobnosti.
search_public_ftir_resultsIščite rezultate analiz, ki jih je delila skupnost, po ključni besedi.
fetch_public_ftir_resultPridobite določen javni rezultat FTIR analize po ID-ju za podroben pregled.

Kartica strežnika in povezave do registrov

Oglejte si vse integracije platform

Coze Plugin — uporaba znotraj Doubaa

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

Ključne besede iskanja: 红外分析, FTIR, infrared, 光谱检索, 物质识别

REST API

API za iskanje po knjižnici

POST /v1/search

Iskanje spektralne knjižnice. Sprejme datoteko (ujemanje celotnega spektra) ali seznam vrhov (ujemanje položaja vrhov). Če sta podana oboje, ima iskanje datoteke prednost.

Avtentikacija

X-API-Key: your-api-key

Telo zahteve

PoljeVrstaObveznoOpis
file_base64stringeden odDatoteka instrumenta, kodirana v Base64 (podpira CSV, SPA, OPUS, SPC, JCAMP-DX in 15+ drugih formatov)
filenamestringz file_base64Izvirno ime datoteke vključno s končnico (npr. sample.spa)
peaksnumber[]eden odSeznam valovnih števil vrhov v cm⁻¹ (npr. [3026, 1601, 1493, 755])
top_kintegerne (privzeto 10)Število rezultatov za vrnitev, največ 50
toleranceintegerne (privzeto 8)Toleranca ujemanja vrhov v cm⁻¹, območje 1–30

Odziv

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

Primer — nalaganje datoteke

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

Primer — seznam vrhov

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

Analiza samo z AI za obstoječe rezultate

To končno točko uporabite šele, ko rezultat iskanja že obstaja. FTIR.fun najprej prebere ali optično prepozna priloženo poročilo, izvleče prijavljene kandidate in tabelo vzorčnih vrhov, nato izvede nadaljnjo analizo KG in literature.

POST /ftir/analyze_existing_results

Poročilo mora vsebovati tako seznam prijavljenih rezultatov iskanja kot tabelo vzorčnih vrhov. Ta končna točka sama ne izvaja iskanja po spektralni knjižnici.

Avtentikacija

X-API-Key: your-api-key

Telo zahteve

PoljeVrstaObveznoOpis
report_textstringeden odGolo besedilo, kopirano iz obstoječega instrumenta ali knjižničnega poročila. Besedilo mora vsebovati tako prijavljene rezultate kot tabelo vzorčnih vrhov.
report_file_base64stringeden odDatoteka poročila, kodirana v base64. Podprte oblike: PDF, DOC, DOCX, TXT, CSV, PNG, JPG, JPEG, WEBP, GIF, BMP, TIF, TIFF.
report_filenamestrings report_file_base64Izvirno ime datoteke poročila vključno s končnico (na primer report.pdf ali report.docx).
user_background_textstringneIzbirno ozadje vzorca. To se obravnava le kot mehki kontekst in ne kot dokaz.

Trda meja vnosa

  • Obvezen element 1: vsaj en prijavljen kandidat rezultata iskanja, kot je zadetek Top1 ali seznam Top15
  • Obvezen element 2: seznam vzorčnih vrhov ali tabela vrhov v cm-1 iz istega poročila
  • Če kateri koli element manjka, končna točka vrne HTTP 422 in ne ustvari poročila o analizi

Odziv ob uspehu

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

Odziv ob manjkajočem vnosu

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

Primer — obstoječe besedilo poročila

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

Primer — obstoječa datoteka poročila

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

Kode napak

HTTP statusPomen
200Uspeh
401Manjkajoč ali neveljaven API ključ
422Neveljavno telo zahteve, nepodprta oblika poročila ali manjkajoči obvezni elementi poročila
500Napaka na strežniku
Pošlji zahtevo Obrazec