Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

osc-bridge

REMOTE · MCP.SYNTHHUB.ROOMI-FIELDS.COM · 2 COMPONENTS

OSC ↔ MIDI bridge — 986 synthesizers and DAWs. A MIDI MCP and OSC MCP for controlling them.

60 Trust /100

Last scanned (2 hours ago)

Scores higher than 46% of remote servers

Reachable. Last reached 25 Oct 2026.

Category Entertainment and Games

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security57
Transport & Reachability100
Schema Quality & AI Usability59
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 5925 tokens (~211/item across 28 items; 28 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
  • Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage93
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 76% of tool parameters carry a description.Partial
  • Structured output schemas are declared (18% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 29 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 25 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “list_devices” rewrote its description, which is the text the model reads security
    • Tool “set_profile” rewrote its description, which is the text the model reads security
    • Schema quality: 5366 → 5925 ▼ functional
    • Server version: 0.15.0 → 0.16.0 functional
    • New tool “claim_presets” functional
    • New tool “take_sound” functional
    • “find_presets” added an optional parameter “offset” cosmetic
    • “load_preset” added an optional parameter “device” cosmetic
    • “set_profile” added an optional parameter “bio” cosmetic
    • “set_profile” added an optional parameter “featured” cosmetic
    • “find_presets” reworded the description of “query” cosmetic
  • 24 Oct 26 +1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “list_devices” rewrote its description, which is the text the model reads security
    • Stability: unverified → 0.03 ▲ functional
    • New tool “link_account” functional
    • “share_preset” added an optional parameter “librarian” cosmetic
  • 23 Oct 26 59

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 25 Oct 2026 · Probed https://mcp.synthhub.roomi-fields.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.osc-bridge.roomi-fields.com CN=YR2,O=Let's Encrypt,C=US 23 Oct 2026 21 Jan 2027 RSA 4096 SHA256-RSA 501fbd9d814207e768c1ab59a4b90647f13
SANs: mcp.osc-bridge.roomi-fields.com, mcp.synthhub.roomi-fields.com
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.synthhub.roomi-fields.com. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
roomi-fields.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.synthhub.roomi-fields.com/mcp Verified 200
http (plaintext) http://mcp.synthhub.roomi-fields.com/mcp HTTPS enforced 301 https://mcp.synthhub.roomi-fields.com/mcp
MCP tools · 28 exposed · ~5,684 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
claim_presets ~157

Claim presets SynthHub imported from another site (their page says 'imported', with the author's name and page there) when the user is that author: give the id of one of them; the server answers with a code for the user to add to their author page at that site (profile or bio). Once it is there, call again with verify: true: every preset imported from that author becomes the user's, to edit or withdraw.

NameTypeReqDescription
idstringyesId of one of the imported presets.
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.
verifyboolean–True once the code is on the author page.

No output schema declared.

No examples provided.

comment_preset ~187

Comment on a shared preset — how it sounds, how you used it, what you changed — optionally attaching your remix (a preset you shared with derived_from). Comments are public at once. Also: remove one of this account's comments (remove), or flag someone else's as abusive or off-topic (flag); comments several accounts flag are hidden until reviewed.

NameTypeReqDescription
flaginteger–Id of someone else's comment to flag (instead of commenting).
idstring–The preset to comment on.
remixstring–Id of your remix, to attach.
removeinteger–Id of this account's comment to remove (instead of commenting).
textstring–The comment (2000 characters at most).
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

favorite_preset ~81

Mark a shared preset as a favorite of this account (on: false to unmark). Without id, lists this account's favorites.

NameTypeReqDescription
idstring––
onboolean–Default true.
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

find_presets ~304

Search what SynthHub users shared (CC BY-SA 4.0): sounds, sequences, kits, projects, banks, MIDI clips. Filter by device, kind, category, genre, tag, author (pseudonym) or words; sort by newest, most popular (favorites and real loads) or most trusted (confirmed on real devices). Returns, per preset, its id, name, kind, device, description, author, version, whether it has device data, settings, a MIDI file or an audio preview (URL), and its counts. Get one with get_preset.

NameTypeReqDescription
authorstring–An author's pseudonym (e.g. 'u1a2b3c4d').
categorystring––
devicestring–Driver id or slug (its other variants are included).
genrestring––
kindstring––
limitinteger–At most this many (default 20).
offsetinteger–Skip this many: the next page (the reply's total says how many match).
querystring–Words that must all appear in the name, description, tags, genres, category or device id ('dx7 piano').
sortstring–Default new.
tagstring––
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

follow_author ~107

Follow an author of shared presets (by pseudonym), or stop (on: false); with author alone and on omitted, shows their page: profile, presets, followers. Without author, lists the newest presets of the authors this account follows.

NameTypeReqDescription
authorstring––
limitinteger––
onboolean––
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

get_contribution ~80

Where a contribution stands: pending (waiting for the merge job), merged (with its pull request), rejected (with the reason), or held (its account is under review).

NameTypeReqDescription
idintegeryes–
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

get_device_docs ~98

Fetch the markdown companion documentation for one device, if present. The slug is the device's OSC prefix without the leading slash (e.g. 'ableton' for /ableton).

NameTypeReqDescription
slugstringyesDevice slug, e.g. 'ableton' or 'minilab3'
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.
NameTypeReqDescription
has_docsbooleanyesFalse when no companion .md exists for the device.
markdownstringyesThe companion documentation, or a not-found message when has_docs is false.
slugstringyes–

No examples provided.

get_preset ~166

One shared preset in full: its content (SysEx hex, settings by driver address, MIDI file), description and playing tips, versions with their change notes, what it was derived from and its derivatives (remixes), comments, preview URLs, author, licence and attribution line, trust and counts. Load it with load_preset; credit it as the attribution line says when you publish something made from it.

NameTypeReqDescription
idstringyesPreset id from find_presets (e.g. 'p3fa9c1d2e4b7').
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.
versioninteger–An earlier version (default the current one).

No output schema declared.

No examples provided.

get_trust ~170

How far a driver has been confirmed by people who used it, per firmware: status (unreported, unconfirmed, usage-verified, firmware-dependent, failing, disputed), how many users report it works / fails / partly works, each firmware's own status, the device identities seen for each firmware, and the same per OSC address. needs_firmware: true means reports disagree and some have no firmware — identify the device before reporting (see learn). Check it before relying on a driver, together with its source_tier.

NameTypeReqDescription
devicestringyesDriver id (e.g. 'korg/minilogue') or slug, from list_devices.
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.
NameTypeReqDescription
addressesobjectyes–
devicestringyes–
overallobjectyes–

No examples provided.

link_account ~123

Link this account to the user's SynthHub account on the site: returns a one-time address (valid 15 minutes) for the user to open and sign in (passkey, e-mail, Google or Discord). Afterwards what this account shared appears under their profile, and they manage it — and their favorites, collections, comments — from the site. Offer it when the user wants to see or manage what you shared for them.

NameTypeReqDescription
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

list_devices ~195

Find device drivers in the catalogue (about 988 synths, drum machines, controllers and DAWs). Without arguments it lists them all; `query` keeps drivers whose vendor, name or slug contain every word (e.g. 'korg minilogue'). Returns name, vendor, OSC prefix (slug), kind, source tier and firmware version when the source states one. Pass the slug to list_routes for the full CC/NRPN/SysEx map.

NameTypeReqDescription
kindstring––
limitinteger–Return at most this many drivers.
querystring–Words that must all appear in the vendor, name or slug (case-insensitive).
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.
vendorstring–Exact vendor name, case-insensitive (e.g. 'Moog').
NameTypeReqDescription
countintegeryesNumber of matching drivers, before `limit`.
devicesarrayyes–

No examples provided.

list_routes ~104

Return the OSC routes a device exposes: declarative commands (OSC paths it accepts), cc/nrpn params, sysex params, named note triggers (drum sounds), and reply patterns. Use this to discover what a device can do.

NameTypeReqDescription
slugstringyesDevice slug, e.g. 'minilab3'
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.
NameTypeReqDescription
cc_paramsarrayyesCC / NRPN parameters, each mapped to an OSC address. Every entry carries an 'expects' field (continuous/switch/momentary/trigger/clock/discrete) describing the device-side nature of the control — inf…
commandsarrayyesDeclarative OSC paths the device accepts, with typed args and mode (forward/frame).
devicestringyes–
kindstring––
osc_prefixstringyes–
paramsarrayyesSysEx parameters, each mapped to an OSC address. Each entry carries an 'expects' field — see cc_params.
repliesarrayyesReply patterns the device emits back onto the OSC surface.
triggersarrayyesNamed note-triggered sounds (drum machines, samplers). Send '<address> [velocity] [note] [channel]' to fire a Note On; 'note' is required when the entry has no natural note.
vendorstring––

No examples provided.

load_preset ~258

Load a shared preset (find_presets, get_preset) into the user's device through a relay: its settings are sent through the driver, its patch data as SysEx — which replaces the sound the device holds, so the relay asks the user to accept it and this call waits for the answer (up to 2 minutes): tell the user first. Afterwards, tell SynthHub how it went with report_preset.

NameTypeReqDescription
codestringyesThe pairing code the relay page or program shows.
devicestring–The device it goes into, when not the preset's own: one of get_preset's loads_on (an M-VAVE FM-1 takes DX7 voices); the sound is sent unchanged.
gap_msinteger–Pause between the SysEx messages, for devices that write slowly (default 50).
idstringyesPreset id (e.g. 'p3fa9c1d2e4b7').
portstring–Output port name (or part of it); needed when the relay has several.
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

preset_collection ~183

Collections of shared presets, public, made by one account (e.g. 'Dark basses for minilogue'). action: create (name, description), rename (collection, name, description), add or remove (collection, id), delete (collection), get (collection: its presets), list (this account's collections, or author: someone's).

NameTypeReqDescription
actionstringyes–
authorstring–With list: an author's pseudonym.
collectionstring–Collection id (e.g. 'c1a2b3c4d5e6').
descriptionstring––
idstring–Preset id to add or remove.
namestring––
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

relay_detect ~169

Find which devices are connected to the user's machine through a relay: sends the MIDI Identity Request (F0 7E 7F 06 01 F7, changes nothing on the device) to every output and matches the answers — manufacturer, model, firmware version — against the catalogue. Returns the best driver ids and identity_hex to pass to report_result. Devices that do not answer are only listed by port name.

NameTypeReqDescription
codestringyesThe pairing code the relay page or program shows (e.g. 'K7QM-2XPA').
timeout_msinteger–How long to wait for answers (default 1000).
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

relay_listen ~190

Listen to what the user's hardware sends through a relay for a few seconds: notes, CC, NRPN, SysEx, decoded. With a device, each CC or NRPN that moved is matched to the driver's OSC addresses — ask the user to move one control on the device while listening to learn which address it is, or to check that the driver's map is right (then record what you saw with report_mapping, so the catalogue learns it).

NameTypeReqDescription
codestringyesThe pairing code the relay page or program shows (e.g. 'K7QM-2XPA').
devicestring–Driver id or slug, to match what moved to its addresses.
secondsinteger–How long to listen (default 3).
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

relay_send ~357

Play or set something on the user's hardware through a relay: give a driver (id or slug) and one of its OSC addresses from list_routes with its arguments (e.g. address '/filter/cutoff', args [64]; '/note/on', args [60, 100]) — the server turns it into the right CC, NRPN, note or SysEx message. Or give raw MIDI bytes as hex. Values are the device's own numbers, clamped to the parameter's range. Any SysEx but the Identity Request (patch dumps, stores, settings, preset restores) may overwrite the device's memory: the relay asks the user to accept it first and this call waits for the answer (up to 2 minutes), so tell the user what you are about to send.

NameTypeReqDescription
addressstring–OSC address of the driver, with or without its prefix.
argsarray–OSC arguments (numbers, strings, booleans).
codestringyesThe pairing code the relay page or program shows (e.g. 'K7QM-2XPA').
devicestring–Driver id (e.g. 'korg/minilogue') or slug.
gap_msinteger–Pause between the SysEx messages of a dump, for devices that write slowly (default 50).
hexstring–Raw MIDI messages instead of device/address, e.g. 'B0 2B 40'.
portstring–Output port name (or part of it); needed when the relay has several.
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

relay_status ~116

Check a relay: the user opened https://synthhub.roomi-fields.com/connect/ (or ran osc-bridge connect) and gave you its pairing code. Returns the MIDI output and input ports of their machine. Nothing is sent to the hardware.

NameTypeReqDescription
codestringyesThe pairing code the relay page or program shows (e.g. 'K7QM-2XPA').
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

report_mapping ~256

Teach the catalogue which MIDI message a control really sends: after the user moved one control on the device (see relay_listen), give the driver address it is (from list_routes) — or, for a control the driver lacks, its panel label — and the CC, NRPN or note it sent, with the firmware and the device's Identity Reply when you have them. When several accounts observe the same thing on one firmware the mapping is learned; get_trust shows learned mappings and where they differ from the driver.

NameTypeReqDescription
addressstring–The driver's OSC address for the control.
ccinteger––
channelinteger––
devicestringyesDriver id or slug.
firmwarestring––
identity_hexstring–The device's reply to the MIDI Identity Request, in hex.
labelstring–The control's panel label, when the driver has no address for it.
noteinteger––
nrpn_lsbinteger––
nrpn_msbinteger––
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

report_preset ~140

Tell SynthHub how a shared preset behaved once loaded on a real device: 'works' (it loaded and sounds as described), 'fails' (refused, wrong sound), or 'factory' (it is a factory preset or someone else's sound: presets that several users flag are hidden until reviewed). Give the firmware.

NameTypeReqDescription
firmwarestring––
idstringyes–
notestring–What happened, briefly (500 characters at most).
outcomestringyes–
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

report_result ~355

Tell the catalogue how a driver behaved on a real device, after testing it: 'works', 'fails' or 'partial', for the whole driver or one OSC address (from list_routes). Give the firmware version, and the device's reply to the MIDI Identity Request (F0 7E 7F 06 01 F7) as identity_hex when you can: trust is counted per firmware, so a failure on another firmware does not count against the driver, and a report of unknown firmware cannot be placed. Several accounts that agree on one firmware mark the driver usage-verified there; a report that several others contradict is rolled back and puts its account under review. Report only what was actually tested.

NameTypeReqDescription
addressstring–One OSC address of the driver (e.g. '/minilogue/filter/cutoff'); omit to report on the whole driver.
devicestringyesDriver id (e.g. 'korg/minilogue') or slug, from list_devices.
firmwarestring–Firmware version of the tested device.
identity_hexstring–The device's reply to the MIDI Identity Request, in hex (e.g. 'F0 7E 00 06 02 42 2C 01 00 00 02 01 00 00 F7'). Proves the device was connected and carries its firmware version.
notestring–What happened, briefly (500 characters at most): wrong range, no effect, other parameter moved…
outcomestringyes–
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.
NameTypeReqDescription
recordedbooleanyes–
reportintegeryesThe report's id.
statusstringyesaccepted: counts in the trust; pending: the account is under review; rolled-back: other accounts contradict it on this firmware.
trustobjectyesThe driver's trust after this report (see get_trust).

No examples provided.

set_profile ~185

Set the public profile shown on this account's author page and with its shared presets and comments, instead of its pseudonym alone: display name, link (https), a few words, the presets put first. A field left out stays as it is; an empty one is cleared. Ask the user what they want shown; all of it is public.

NameTypeReqDescription
biostring–A few words about them and their sounds, 600 characters at most.
featuredarray–Ids of their own listed presets, shown first on their page, in this order.
linkstring–An https:// address: their site, SoundCloud, Bandcamp…
namestring–40 characters at most.
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

share_preset ~804

Share something the user made on a device with every SynthHub user, under CC BY-SA 4.0: a sound, a sequence or pattern, a kit, a project, a bank of their own sounds, or a MIDI clip any device can play. Its content: the device's own data (SysEx, e.g. from backup_presets), settings by driver address (from list_routes, e.g. {'/filter/cutoff': [90]}, which also works for devices without dumps), and/or a standard MIDI file. Only what the user made: never factory presets, nor sounds or sequences bought or downloaded from others — set own_sound only after asking the user. Made from someone else's shared preset? Pass derived_from: it credits them, as the licence requires. Describe it well (category, genres, tags, tempo, key, tips): that is how people find it. The same content shared twice returns the existing id; the author publishes new versions with update_preset and can withdraw it (withdraw_preset). Through a relay, the device data can be captured from the device itself: pass code and start the dump from the device's menu during the call, or give request_hex (the device's dump-request message, which the user accepts at the relay). An audio preview is added by its author with PUT /u/<account>/v1/presets/<id>/audio (MP3, Ogg, M4A or WebM, 1 MB at most).

NameTypeReqDescription
categorystring–The kind of sound or part.
codestring–A relay's pairing code: capture the device data from the device instead of hex.
derived_fromstring–Id of the shared preset it was made from.
descriptionstring–What it sounds like (500 characters at most).
devicestringyesDriver id (e.g. 'korg/minilogue') or slug.
firmwarestring–Firmware version of the device it was made on.
genresarray–Musical styles: 'techno', 'ambient'… (8 at most).
hexstring–The device data as SysEx, in hex (64 KB at most).
keystring–Musical key, e.g. 'A minor'.
kindstring–What it is (default sound).
librarianstring–The synth the librarian took it from (take_sound's librarian): loading it then goes through the same exchange, fitted to the receiving synth.
midi_base64string–A standard MIDI file, base64 (64 KB at most).
namestringyesIts name (80 characters at most).
own_soundbooleanyesMust be true: the user made it (not a factory preset, not someone else's).
portstring–With code: the device's port name (or part of it), when the relay has several.
request_hexstring–With code: the device's dump-request SysEx, sent first (e.g. 'F0 42 30 00 01 2C 10 F7').
secondsinteger–With code: how long to wait for the dump (default 5).
settingsobject–Settings by driver address: {'/filter/cutoff': [90], '/amp/attack': [12]} (512 at most).
tagsarray–Character and free words: 'warm', 'dark', 'evolving'… (8 at most).
temponumber–BPM, for sequences and clips.
tipsstring–How to play it: mod wheel, aftertouch, register… (500 characters at most).
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

submit_driver ~221

Contribute a driver for a device the catalogue lacks (or a better one): the full driver file as a JSON object, in the osc-bridge device schema (device.name, device.vendor, device.osc_prefix, and cc_params / params / commands / triggers — see https://synthhub.roomi-fields.com/DEVICE_JSON_SCHEMA/). It is checked, then merged into the public catalogue by the merge job if it parses, lints and passes the tests, as its own file of source 'agent-contributed'. Say where the data comes from (manual page, tested on the device).

NameTypeReqDescription
driverobjectyesThe driver file.
firmwarestring–Firmware the driver was written or tested for.
notestring––
sourcestring–Where the mapping comes from (e.g. 'manual v1.2 p. 34, tested on the device').
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

submit_fix ~131

Contribute a corrected variant of a driver from what the catalogue learned: where learned mappings (get_trust → mappings, differs: true) disagree with the driver on one firmware, builds a copy of the driver with the learned CC / NRPN numbers, as a new file for that firmware, and queues it for the merge job.

NameTypeReqDescription
devicestringyesDriver id or slug.
firmwarestring–Needed when learned mappings differ on several firmwares.
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

take_sound ~257

Take the sound the user's synth is playing — or one of its stored programs — straight from the synth through a relay, with its name. The synth is found among those SynthHub's librarian can talk to (the KnobKraft Orm adaptations, about 90 synths) by the identity and detect messages, then asked for its sound. The person accepts each step at the relay (finding the synth, asking it): tell them first. To share it: ask the user whether they made this sound themselves (never a factory preset, nor one bought or downloaded), then call share_preset with the device, name, hex, librarian and firmware returned here, and own_sound: true. When several synths answer, or none did, call again with port.

NameTypeReqDescription
codestringyesThe pairing code the relay page or program shows.
portstring–Output port name (or part of it): look on that port only, for every synth the librarian knows.
programinteger–A stored program (from 1) instead of the sound being played.
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

update_preset ~220

Publish a new version of a preset this account shared: new content (hex, file, settings or midi_file) makes a new version, kept with a change note — earlier versions stay available; the description fields alone change it in place. Someone else's preset: share yours with derived_from instead.

NameTypeReqDescription
categorystring––
changelogstring–What changed in this version (500 characters at most).
descriptionstring––
firmwarestring––
genresarray––
hexstring––
idstringyes–
keystring––
midi_base64string–A standard MIDI file, base64 (64 KB at most).
namestring––
settingsobject––
tagsarray––
temponumber––
tipsstring––
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

withdraw_preset ~70

Withdraw a preset this account shared: it is no longer listed nor served. Copies others already made stay under CC BY-SA.

NameTypeReqDescription
idstringyes–
user_idstring–Your anonymous SynthHub id, if you kept it from an earlier session (see the server instructions). Optional.

No output schema declared.

No examples provided.

Install

How do I install the osc-bridge MCP server?

osc-bridge is a hosted endpoint at https://mcp.synthhub.roomi-fields.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.synthhub.roomi-fields.com

# add to Claude Code
claude mcp add --transport http roomi-fields-osc-bridge 'https://mcp.synthhub.roomi-fields.com/mcp'
Common questions

What is the osc-bridge MCP server?

osc-bridge is an MCP server listed in the public MCP registry as io.github.roomi-fields/osc-bridge. OSC ↔ MIDI bridge, 986 synthesizers and DAWs. A MIDI MCP and OSC MCP for controlling them. This page covers its hosted endpoint (https://mcp.synthhub.roomi-fields.com/mcp).

Is the osc-bridge MCP server safe to use?

osc-bridge scores 60 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the osc-bridge MCP server expose?

osc-bridge exposes 28 tools: list_devices, get_device_docs, list_routes, report_result, get_trust, and 23 more. Their descriptions and schemas cost roughly 5,684 tokens of context every time the server is loaded.

Does the osc-bridge MCP server require authentication?

No. We connected to osc-bridge without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the osc-bridge MCP server still maintained?

osc-bridge is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.