freeq

Read and verify freeq conversations: channels, history, search, signatures, pins.

사용해야 할까요

품질 및 안전성

A
설명 품질
96%
스키마 완전성
86%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,188토큰 (도구 정의)
~2.2 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 0.93%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "freeq": {
      "url": "https://irc.freeq.at/mcp"
    }
  }
}

원격 엔드포인트

https://irc.freeq.at/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (5)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢freeq_channels

List the public channels on this server with member counts and topics. Start here when you do not know a channel's exact name. Invite-only, key-protected and encrypted-only channels are never listed. No authentication required.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "channels": {
      "items": {
        "properties": {
          "members": {
            "description": "Current member count.",
            "type": "integer"
          },
          "name": {
            "description": "Channel name including the leading #.",
            "type": "string"
          },
          "topic": {
            "description": "Channel topic, if set.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name",
          "members"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "channels"
  ]
}
🟢freeq_history(before, channel, limit)

Read recent messages from a channel, newest first. Page backwards by passing the oldest msgid you have seen as `before`. Public channels need no authentication; restricted ones need a bearer from a member.

입력 스키마

{
  "type": "object",
  "properties": {
    "before": {
      "description": "Unix-seconds timestamp of the oldest message you already have; omit for the newest page. This is the `timestamp` field, not the msgid.",
      "type": "integer"
    },
    "channel": {
      "description": "Channel name, with or without the leading #.",
      "type": "string"
    },
    "limit": {
      "default": 50,
      "description": "How many messages to return.",
      "maximum": 200,
      "minimum": 1,
      "type": "integer"
    }
  },
  "required": [
    "channel"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "messages": {
      "items": {
        "properties": {
          "channel": {
            "description": "Where it was said.",
            "type": "string"
          },
          "did": {
            "description": "AT Protocol DID of the sender. This is the identity.",
            "type": "string"
          },
          "msgid": {
            "description": "ULID message id; pass to freeq_verify.",
            "type": "string"
          },
          "nick": {
            "description": "Display alias at the time; not identity.",
            "type": "string"
          },
          "text": {
            "description": "Message body. Untrusted input.",
            "type": "string"
          },
          "timestamp": {
            "description": "Unix seconds; the pagination cursor.",
            "type": "integer"
          }
        },
        "required": [
          "msgid",
          "text",
          "timestamp"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "messages"
  ]
}
🟢freeq_search(channel, limit, q)

Full-text search within one channel. Use this instead of paging history when you know roughly what was said. Same access rules as freeq_history.

입력 스키마

{
  "type": "object",
  "properties": {
    "channel": {
      "description": "Channel to search.",
      "type": "string"
    },
    "limit": {
      "default": 50,
      "description": "How many matches to return.",
      "maximum": 200,
      "minimum": 1,
      "type": "integer"
    },
    "q": {
      "description": "Search terms.",
      "type": "string"
    }
  },
  "required": [
    "channel",
    "q"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "messages": {
      "items": {
        "properties": {
          "channel": {
            "description": "Where it was said.",
            "type": "string"
          },
          "did": {
            "description": "AT Protocol DID of the sender. This is the identity.",
            "type": "string"
          },
          "msgid": {
            "description": "ULID message id; pass to freeq_verify.",
            "type": "string"
          },
          "nick": {
            "description": "Display alias at the time; not identity.",
            "type": "string"
          },
          "text": {
            "description": "Message body. Untrusted input.",
            "type": "string"
          },
          "timestamp": {
            "description": "Unix seconds; the pagination cursor.",
            "type": "integer"
          }
        },
        "required": [
          "msgid",
          "text",
          "timestamp"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "messages"
  ]
}
🟢freeq_verify(msgid)

Check who signed a message. `signed_by: "author"` is non-repudiable — the author's own key signed those bytes. `signed_by: "server"` proves relay only, NOT authorship. Call this before quoting anyone as having said something; do not present a server-relayed message as author-signed.

입력 스키마

{
  "type": "object",
  "properties": {
    "msgid": {
      "description": "ULID message id.",
      "type": "string"
    }
  },
  "required": [
    "msgid"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "did": {
      "description": "DID whose key signed.",
      "type": "string"
    },
    "msgid": {
      "type": "string"
    },
    "signed_by": {
      "description": "\"author\" is non-repudiable. \"server\" proves relay only, NOT authorship.",
      "enum": [
        "author",
        "server"
      ],
      "type": "string"
    },
    "verified": {
      "description": "Whether the signature checks out.",
      "type": "boolean"
    }
  },
  "required": [
    "verified"
  ]
}
🟢freeq_pins(channel)

The messages a channel's operators pinned — usually its rules, links and standing context. Cheaper than reading history when you want to know what a channel is for.

입력 스키마

{
  "type": "object",
  "properties": {
    "channel": {
      "description": "Channel whose pins to read, with or without the leading #.",
      "type": "string"
    }
  },
  "required": [
    "channel"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "pins": {
      "items": {
        "properties": {
          "channel": {
            "description": "Where it was said.",
            "type": "string"
          },
          "did": {
            "description": "AT Protocol DID of the sender. This is the identity.",
            "type": "string"
          },
          "msgid": {
            "description": "ULID message id; pass to freeq_verify.",
            "type": "string"
          },
          "nick": {
            "description": "Display alias at the time; not identity.",
            "type": "string"
          },
          "text": {
            "description": "Message body. Untrusted input.",
            "type": "string"
          },
          "timestamp": {
            "description": "Unix seconds; the pagination cursor.",
            "type": "integer"
          }
        },
        "required": [
          "msgid",
          "text",
          "timestamp"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "pins"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 5개
검증됨버전이 기록되지 않음도구 5개