protogrid

Search / io.songlinks/songlinks

Songlinks

R0· no sign-in

Find the songwriter behind a name or IPI name number, under every spelling and number.

v0.10.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality77new
Trust83of 100
Uptime, 30 days100%
Latency p50438 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "songlinks": {
      "type": "http",
      "url": "https://songlinks.io/mcp"
    }
  }
}
claude mcp add --transport http songlinks https://songlinks.io/mcp
[mcp_servers.songlinks]
url = "https://songlinks.io/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "songlinks": {
      "type": "remote",
      "url": "https://songlinks.io/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "songlinks": {
      "type": "http",
      "url": "https://songlinks.io/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=songlinks&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc29uZ2xpbmtzLmlvL21jcCJ9"
}
{
  "servers": {
    "songlinks": {
      "type": "http",
      "url": "https://songlinks.io/mcp"
    }
  }
}
{
  "mcpServers": {
    "songlinks": {
      "httpUrl": "https://songlinks.io/mcp"
    }
  }
}
extensions:
  "songlinks":
    enabled: true
    name: "songlinks"
    type: streamable_http
    uri: "https://songlinks.io/mcp"
    timeout: 300

Quality 77 / 100new

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene79 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations4 of 4 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: songwriter_by_ipi (destructiveHint, idempotentHint, openWorldHint); find_songwriter (destructiveHint, idempotentHint, openWorldHint); get_songwriter (destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 1,249 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool history recorded for 4 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

4 tools, about 1,249 tokens to load them all · tool set 0855c9fa3767 · checked 2026-10-19 13:05 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 83 / 100

no-repository
provenance55
liveness100
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-100% +updated-4d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://songlinks.io/mcp streamable-httpnoneyes100%438 ms2025-11-252026-10-19

Tools (4)

check_writersread-onlyUse when the user has several IPI name numbers, such as the writers on a song, a catalogue or a registration file, and wants to know who each one is, or whether some of a writer's works sit under another spelling or number. Up to 50 numbers per call. For each: the person holding it, their registered names, works in total and on their main number, works_elsewhere (registered only under another spelling or number), and a person_url.
find_songwriterread-onlyUse when the user names a songwriter or composer and wants to know who they are, which person a name belongs to, or every registration of that writer. Returns the persons the name could be: each with a person ID, the names and IPI name numbers they are registered under, how many works, and a person_url to cite. Pairs listed under possibly_the_same_person were held apart and are not merged; `why` says why. Candidates are this lookup's own grouping, made afresh for the name, and can differ from the stored person that get_songwriter and the person page describe: a candidate can include records with no IPI name number that the stored person lists apart, and two candidates can carry the same person_id when this lookup keeps apart records the stored person joined. Each record's person_id is the stored person it belongs to, or null; person_records is how many records that person holds, and records_not_in_this_answer how many of them this candidate does not, because they sit in another candidate or outside this lookup. For a person's registrations as they stand, call get_songwriter. A candidate's works counts every record in it, records held apart from the person included; the person's own count is get_songwriter's works.total. Registrations are under legal names: a writer known by a professional or stage name may not be found by it. If the writer you expect is not among the candidates, or song_match.match is none, try their legal name. truncated means more registrations matched than one answer groups: a fuller name narrows it. Give a song title they wrote, when known, to say which of several namesakes wrote it. A one-word name is not searched: ask for the full name.
get_songwriterread-onlyUse when you have a Songlinks person ID (SLP-XXXX-XXXX-X), from find_songwriter or a person page, and the user wants that writer's details: the registrations grouped into the person, records listed apart as possibly the same person, and their first works. Each record says how it was joined: `main` marks the record the ID was issued on, and `rule` is the evidence: same_ipi (another of the person's records carries the same IPI name number), ipi (it carries the person's own number), model (judged the same writer from works, co-writers and publishers in common; `score` is how sure), corroborated (confirmed by an independent source) or verdict (decided by a person). At most 25 works are listed; works.total is the full count and the person page lists the rest. works.ordered_by is `recordings` when the list starts with the most-recorded works, and `coded` when it is in catalogue-code order: then it is a sample, not the writer's best-known songs.
songwriter_by_ipiread-onlyUse when the user has an IPI name number (up to 11 digits, often written without its leading zeros) and wants to know which songwriter holds it. Returns the person or persons holding the number, each with a person ID and person_url; use get_songwriter for one person's details. `none` means no person here holds it: it may be a publisher's number, or one whose registrations have not been grouped.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.songlinks/songlinks",
  "icons": [
    {
      "src": "https://songlinks.io/favicon.svg",
      "sizes": [
        "any"
      ],
      "mimeType": "image/svg+xml"
    },
    {
      "src": "https://songlinks.io/apple-touch-icon.png",
      "sizes": [
        "180x180"
      ],
      "mimeType": "image/png"
    }
  ],
  "title": "Songlinks",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://songlinks.io/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.10.0",
  "websiteUrl": "https://songlinks.io/mcp-server",
  "description": "Find the songwriter behind a name or IPI name number, under every spelling and number."
}