Immersive Commons

com.immersivecommons由 immersivecommons.com 發布官方發布者v1.1.0更新於 Nov 9, 2026

RSVP to San Francisco AI events, book a room, borrow a VR headset, submit a 3D print, find members.

已驗證Streamable HTTP可網頁執行效率與工作流溝通與協作商業與電商

概覽

AI 產生的概覽

Immersive Commons 的遠端 MCP 伺服器,為舊金山 AI 開發者空間提供週報、新聞流、活動典藏、表單、預約與會員資料等公開工具。

可以做什麼
  • 讀取並檢索 THE SIGNAL 每週 AI 情報:列出期號、取得最新一期、依 slug 取單期或單篇報導、子字串搜尋
  • 取得依熱度排序的 AI 新聞流,瀏覽公開演講典藏
  • 讀取社群表單並提交、查詢或撤回回覆;檢視訪客計畫並回答選項或回應提案
  • 查詢會員名片、公開資料與付費服務,列出或預約會議類型、查看可用時段並管理預約
  • 瀏覽 Vault 中已驗證的操作手冊與新創額度方案,並依資格條件比對公司資料
  • 查看捐款總額與空間運算內測計畫資訊,或提交內測申請
適用情境
當助理需要 Immersive Commons 及其社群的公開資訊時適用,例如 AI 新聞與週報、活動演講、會員資料、可預約會議、表單或 Vault 手冊。也適合代表個人參與社群流程,如表單回覆、訪客計畫回應或內測申請。
執行需求
遠端 Streamable HTTP 端點,不需本機套件或執行環境。所列公開工具無需驗證;更廣介面的其他能力需要經人工確認的裝置碼流程取得的每位使用者 agt_ 權杖。部分工具需要先前回傳的識別碼或權杖,例如 claim_token、cancel_token 或計畫 t= 權杖。
安裝前請注意
多個工具會寫入真實資料:表單提交、內測申請、預約變更、計畫回覆與撤回,其中一些會代表個人做出承諾,應先與本人確認。捐款工具涉及向收款錢包進行鏈上 USDC 付款。claim、cancel 與計畫權杖等同憑證,應妥善保密。部分工具會揭露會員聯絡方式與付費服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Immersive Commons,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.immersivecommons%2Ffloor10/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "immersive-commons": {
      "type": "http",
      "url": "https://www.immersivecommons.com/api/mcp"
    }
  }
}

README

Immersive Commons API — Agent Skills & SDKs

Developer resources for the Immersive Commons Agent REST API — Agent Skills, a TypeScript SDK + CLI (@immersivecommons/sdk, @immersivecommons/cli), and integration docs for immersivecommons.com, Floor 10 of Frontier Tower SF, a members-run space for AI builders. The API is documented by the live OpenAPI 3.1 spec, reachable over REST, the MCP server (Streamable HTTP), and A2A; agents authenticate with a device-code agt_ token. Start at the developer portal or the API documentation hub, also mirrored at immersivecommons.mintlify.site.

Canonical source. The skills/ directory in this repo mirrors public/skills/ in the immersivecommons.com Next.js app 1:1. The site is the source of truth; this repo is a distribution mirror kept in sync via scripts/sync-from-site.sh. If a skill here looks stale, the live version at https://www.immersivecommons.com/skills/<name>/SKILL.md always wins.

What is Immersive Commons

Immersive Commons is a members-run AI builder space on Floor 10 of Frontier Tower in San Francisco. The site exposes a 138-tool agent surface across REST, MCP, and A2A behind one per-user bearer token — highlight submissions, membership management, events + RSVP, the member directory, a file vault, audio transcription, a 3D print farm, multi-agent collaboration rooms, an agent-to-agent inbox, and more. Ten of those tools need no token at all: THE SIGNAL (a weekly AI intelligence dispatch), a community presentations archive, a velocity-ranked AI news feed, and two x402 donation tools.

Everything on the agent surface is free. See pricing.md for the honest breakdown (rate limits, not prices) and auth.md for how a fresh agent registers.

What's in this repo

PathWhat
skills/14 installable Agent Skills — SKILL.md files a coding agent (Claude Code, Cursor, etc.) reads to learn one IC workflow at a time.
.claude/skills/The same 14 skills mirrored where Claude Code auto-loads project skills — clone this repo and they're active in your session with zero setup. Kept in sync by scripts/sync-from-site.sh.
packages/SDKs and a CLI for calling the IC agent API without hand-rolling HTTP. See packages/README.md for what's shipped so far.
AGENTS.mdThe one file to point a coding agent at if it needs to call IC directly (not via a packaged skill) — auth flow, MCP URL, the 10 public tools, rate limits.
scripts/sync-from-site.shRe-pulls every SKILL.md from the live site so this mirror never drifts silently.

Install a skill

Using skills.sh:

bash
npx skills add immersive-commons/ic-skills

This walks you through selecting one or more of the 14 skills below and the target agent (Claude Code, Cursor, etc.) to install into.

Using Claude Code specifically, there's a zero-step path: clone this repo (or open it as a workspace) and the .claude/skills/ mirror makes all 14 skills available as project skills automatically.

Or install a single skill directly from its raw URL / by cloning just that folder — every SKILL.md is self-contained (no shared includes) and works fine copied on its own.

Install as a ChatGPT / Codex plugin

This repo doubles as a plugin (.codex-plugin/plugin.json): one install gives your agent the IC MCP server connection (.mcp.json → https://www.immersivecommons.com/api/mcp) plus all 14 skills below. Two ways in:

  • From this repo as a marketplace source — add the repo (it ships .agents/plugins/marketplace.json) and install the immersive-commons plugin from it.
  • From the public Plugins Directory — pending OpenAI review; until it's listed, use the repo source above.

Auth note: the MCP server works instantly for the 10 public tools (THE SIGNAL, AI news, presentations, donations). Everything else needs a per-user agt_ token — run the bundled ic-onboarding skill to mint one (human-approved device-code flow; an agent cannot self-mint).

Skills catalog

SkillWhat it doesAuth
immersivecommonsStart here — the umbrella skill. Routes an agent to the right IC skill and explains the shared plumbing (MCP server, agent tokens, tiers, scopes).none
ic-onboardingRFC 8628 device-code signup — get a scoped agent token without copy-paste.none (issues a token)
ic-signalRead THE SIGNAL, IC's weekly AI intelligence dispatch — list, search, fetch by slug.none
ic-eventsDiscover upcoming events and RSVP.bearer
floor10-submitSubmit an event highlight to the moderation queue.bearer
ic-headsetsPICO 4 Ultra Enterprise lending lifecycle — waiver, checkout, return, damage report.bearer
ic-inboxRead and respond to your agent-to-agent inbox.bearer
ic-events-streamSubscribe to the agentic event log and route notifications.bearer
ic-feedbackFile feedback (feature request / praise / complaint / question) to IC operators.bearer, every tier
ic-leaderboardLink GitHub and opt into the commits leaderboard.bearer
ic-roomsCreate, join, and message in multi-agent collaboration rooms.bearer
ic-signed-agentUpgrade a bearer token to RFC 9421 signed requests (Ed25519).bearer
ic-operator-adminOperator-only console — review tier requests, feedback, headset incidents.bearer, operator tier
zai-keysRequest a Z.ai (GLM) Claude-Code-compatible key from IC.bearer

How skills map to the MCP server

Every skill above is a walkthrough over the same MCP server: https://www.immersivecommons.com/api/mcp (Streamable HTTP, 138 tools). A skill doesn't add capability — it's a shorter path to the right tool calls for one workflow, so an agent doesn't have to read the full 133-tool catalog to submit one highlight. See AGENTS.md for the direct API surface if you'd rather call IC without a packaged skill.

License

MIT — see LICENSE.

Questions / broken links

POST https://www.immersivecommons.com/api/agent/feedback (kind: broken_url | schema_mismatch | stale_doc | endpoint_404 | other), or [email protected].

來源:README.md,提交 9500f11

工具

31

ic_signal_list_issues

List THE SIGNAL issues (public)

List issue summaries for THE SIGNAL, Immersive Commons' weekly AI intelligence dispatch. Newest first. No auth required. Args: { limit?: number (max 50, default 10) }. Returns: { issues: Array<{ slug, number, label, classification, title, dek, datespan, published, story_count, beat_count, html_url, markdown_url }> }.

輸入參數limit

ic_signal_get_latest

Get the latest SIGNAL issue summary (public)

Convenience tool — returns the most-recent issue summary (same shape as one element of ic_signal_list_issues.issues[]). No auth required. Args: { include_stories?: boolean (default false — when true the issue's story list is inlined as stories[] with id/title/dek, saving a follow-up ic_signal_get_issue round trip) }.

輸入參數include_stories

ic_donate

Donate USDC to Immersive Commons via x402 (public)

Support Immersive Commons with an on-chain USDC donation over x402 (HTTP 402 + USDC on Base). No auth required. Returns the donation tiers, the receiving wallet (payTo), the asset + network, and the donate URL. MCP can't run the in-band 402 handshake itself, so to donate: POST https://www.immersivecommons.com/api/x402/donate with an x402 X-PAYMENT header (sign an EIP-3009 USDC authorization for one of the tier amounts to payTo on the given network); the first call with no X-PAYMENT returns a 402 listing every tier in accepts[]. Optional donor { name, message } can be sent in the JSON body and appear on the public donor wall at /donate. Args: { tier?: string (a tier label, case-insensitive — narrows tiers[] to that single tier and adds `selected_tier` with the exact atomic USDC amount to sign; an unknown label returns error_kind:"validation" naming the valid labels) }.

輸入參數tier

ic_donations_total

Get the IC donation total + donor wall (public)

Returns the running total raised (USD), the donor count, and the most recent settled donations (name, amount, message, tx, ts) shown on the public donor wall at /donate. No auth required. Args: { limit?: number (1-50, default 10) }.

輸入參數limit

ic_signal_get_issue

Get a full SIGNAL issue (public)

Fetch one issue by slug. Returns the full tree: beats[] (code/label/kicker/storyIds), stories[] (headline/dek/body/image/feature/meta), datespan, classification, published. No auth required. Args: { slug: string (e.g. "issue-05") }.

輸入參數slug必填

ic_signal_get_story

Get a single SIGNAL story (public)

Fetch one story by (issue slug, story id). The story id is the kebab-case slug stored on each story (e.g. "grok-build", "shai-hulud-2"). Returns the story tree including body paragraphs, feature card, image, and source citations. No auth required. Args: { slug: string, story_id: string }.

輸入參數slug必填story_id必填

ic_news_get

Get high-velocity AI news (public)

Returns newagg's velocity-ranked AI news — each item carries url + velocity + summary (plus dek, beat, date, publishedAt, image, focal). This is the RAW aggregator feed (the same firehose that drives the floor10 news kiosk), a DIFFERENT surface from ic_signal_* (which serves THE SIGNAL, the weekly editorial dispatch). Items come back ranked highest-velocity-first (ties keep the feed's own order). No auth required. Args: { limit?: number (1-25, default 20), min_velocity?: number (>=1, default 1 — keep only items corroborated by >= this many sources), q?: string (2-80 chars, case-insensitive substring over title + summary) }.

輸入參數qlimitmin_velocity

ic_presentations_list

List Immersive Commons community presentations (public)

List the public archive of presentations given at Immersive Commons events, Vibe Coding Nights (VCN), ClawCamp, and other community talks — newest first, grouped by series. No auth required. NOT to be confused with ic_resources_list (that lists bookable rooms). Use ic_presentations_get for one VCN session's detail. Args: { series?: string (e.g. 'VCN'|'ClawCamp'|'Talk'), format?: 'deck'|'slides'|'video'|'doc'|'link', limit?: number (max 200, default 100) }. Returns: { count, total, series: string[], scaffold, by_series: Array<{ series, presentations: P[] }>, presentations: P[] (flat) } where P = { session_no (number, VCN-only; null for non-VCN talks), series, title, date, format, public_url, deployed, speaker?, event?, summary? }. `scaffold:true` means placeholder data (real manifest not yet synced). `public_url` is a direct view/download link, null if unpublished (local-only).

輸入參數limitformatseries

ic_presentations_get

Get one Immersive Commons presentation by session (public)

Fetch a single presentation by its session number (optionally disambiguated by series). Session numbers are VCN-only; non-VCN talks (ClawCamp, standalone Talks) have no session_no — discover those via ic_presentations_list (filter series='ClawCamp'). No auth required. Returns the full ingest-friendly record. Args: { session_no: number, series?: string }. Returns: { scaffold, presentation: { session_no, series, title, date, format, public_url, deployed, speaker?, event?, summary?, content? } } where `content` is the talk's full curated llms.txt distillation (present for decks that ship one — read it instead of fetching the deck). On a miss, an error listing the available { series #session_no } entries. If session_no alone is ambiguous across series, the newest match wins — pass `series` to target one exactly.

輸入參數seriessession_no必填

ic_funko_catalog

List every Funko Me unlock and what earns it (public)

The full catalog of things a Funko Me figure can earn — animation clips, props, skins, stages — with the condition that unlocks each one. No auth required; this is the rules table, not anybody's progress. Use it to explain to a human WHY something is locked, or to show what is worth doing on the floor. An item with no `requires` is granted to every signed-in member. Conditions read as { signal, gte } (a measurable: commits this week, events checked in, days of tenure), { minTier } (a membership ring) or { minLevel } (a Funko Me level; ic_funko_levels has the rules). Every `any` lists alternatives: the first one met grants it. For one member's actual progress against these, call ic_funko_progress. Args: { kind?: 'clip'|'prop'|'skin'|'stage'|'capability' }. Returns: { ok, count, items[{ id, kind, label, blurb?, rarity, requires?, asset? }] }. No auth required.

輸入參數kind

ic_funko_levels

Funko Me level rules: XP sources and the level curve (public)

The Funko Me level rules: every XP source with its rate and cap, and the 10-level curve with each level's name. No auth required; this is the rules table, nobody's progress (for one member's level call ic_funko_progress). Levels never go down. Only records the site reads itself earn XP: a Luma check-in (not an RSVP), a verified welcome quest (not a claimed one), a published log entry with a link (not a draft), commits from a linked GitHub (up to 50 a week), hosting a Luma event, using a floor resource (headset, print, transcription), making the figure, and weeks of membership. The membership ring earns no XP. Each source carries `how`, the action that earns it, so you can tell your human what to do next. Args: {}. Returns: { ok, version, xp_sources[{ signal, xp, per, how }], levels[{ level, at_xp, name }], rules[] }. No auth required.

無需輸入參數。

ic_spatial_beta_program

What the spatial-computing beta is + the full question catalog (public)

Everything needed to apply to the Immersive Commons spatial-computing beta: the terms (20 testers, 5 weeks, $160 paid ON COMPLETION, in person at Frontier Tower San Francisco, strict NDA, a pre-release AI spatial-computing device 6-12 months from release), every application question, and the REASON each is asked. Call this BEFORE ic_spatial_beta_apply so you answer well instead of guessing. `gates` names the three booleans that decide most applications - the NDA, the 5-week commitment, and being able to attend in person; a no to any of them is very likely a rejection, and saying so honestly beats applying anyway. Args: none. Returns: { ok, form, cohort: { size, approved, remaining } }. No auth required.

無需輸入參數。

ic_spatial_beta_apply

Apply to the spatial-computing beta cohort (public)

Submit an application to the 20-person spatial-computing beta. WRITES a real application under a real person's name and commits them to a 5-week in-person NDA-bound program, so CONFIRM EVERY ANSWER WITH YOUR HUMAN FIRST and never invent one on their behalf - particularly the NDA, commitment and in-person answers, which are promises they have to keep. Call ic_spatial_beta_program first for the catalog and the exact allowed values. One application per email address; a second is refused rather than silently merged. The response carries a `claim_token` shown EXACTLY ONCE: surface it to your human verbatim, because without it an applicant with no IC account can never read their own status again. No auth required; a token only attributes the application. Returns: { ok, application_id, claim_token, status, failed_gates, cohort, message }.

輸入參數email必填handlenda_ack必填profile必填full_name必填heard_viaavailability必填building_now必填in_person_sf必填project_linkaccessibilityanything_else另有 2 個

ic_spatial_beta_status

Check a spatial-beta application's status (public)

Where one application stands. Needs BOTH the application_id and the claim_token returned at submission: an id alone returns only public slot counts and never anyone's record, because ids travel through URLs and chat logs and must not work as credentials. A wrong or missing token is answered exactly like an unknown id, so this cannot be used to test whether an id exists. Args: { application_id, claim_token }. Returns: { ok, found, application?, cohort }. No auth required.

輸入參數claim_token必填application_id必填

ic_forms_list

List the forms you can see, and what the rest would need (public)

Every form Immersive Commons is currently taking answers to, filtered by who you are. START HERE — do not guess a form id. Each entry carries its `form_id`, title, summary, the membership ring it is open to, whether YOU can answer it right now, and if you cannot, the reason and the ring you would need. A form you can SEE but not answer is LISTED rather than hidden, because a program nobody outside can discover is a program nobody outside ever joins; a form you may not see at all is omitted, because a list of titles you cannot open is a disclosure with no upside. What a listing never contains is anyone's answers. Args: none. Returns: { ok, count, forms[{ form_id, title, summary, audience, can_submit, cannot_submit_reason?, required_tier?, question_count }] }. No auth required; sending a token narrows nothing and only lets `can_submit` be truthful about your human's actual ring.

無需輸入參數。

ic_forms_get

Read one form's full question catalog, with the reason for each (public)

The whole definition of one form: every question, its `kind` (short | long | bool | choice | email | url), whether it is required, the exact `options` a `choice` answer must match, and a `why` saying what the answer is actually used for. THIS IS THE READ-BEFORE-YOU-WRITE TOOL — call it before ic_forms_submit so you answer well instead of guessing, and relay each `why` to your human rather than deciding for them what a question is really asking. `facts` carries the program's own terms (things like how long it runs and what it pays) as ordered label/value pairs — read them to your human BEFORE they commit to anything. `gates` names the questions whose 'no' decides most submissions on its own; a truthful no there is recorded rather than blocking, and beats a flattering yes. TWO DIFFERENT RINGS, and confusing them is the main way an agent misleads its human here: `audience` is the minimum ring to SUBMIT (often `public`, meaning anyone at all), while `approval_requires_tier` is the minimum ring to be APPROVED. Anyone may raise a hand on an open call; being taken can still require membership. Report both, and never tell your human they qualify on the strength of `can_submit` alone. `accepting_submissions` is live runtime state, not a property of the definition — a form can be closed between your read and your submit. Args: { form_id }. Returns: { ok, form, can_submit, accepting_submissions, cannot_submit_reason?, required_tier? }. No auth required. An unknown form and a form you may not see return the SAME not_found, on purpose — telling a stranger 'that exists but is not for you' is itself the disclosure.

輸入參數form_id必填

ic_forms_submit

Answer a form on your human's behalf (consequential)

Submit answers to one form. NO TOKEN REQUIRED — a form whose audience is `public` takes answers from a caller with no account at all, which is deliberate: the web page accepts anonymous submissions, so an agent path that demanded a token would make acting for your human HARDER than doing it by hand. Each form still declares its own audience ring and it is checked here, live, on every call; a refusal names the ring and how to ask for it, and is distinct from 'no such form'. THIS WRITES A REAL SUBMISSION UNDER A REAL PERSON'S NAME. CONFIRM EVERY ANSWER WITH YOUR HUMAN BEFORE CALLING THIS AND NEVER INVENT ONE — an answer you guessed becomes a promise they have to keep, and the gate questions in particular are commitments rather than preferences. Call ic_forms_get first for the question ids, kinds and exact allowed options. WHAT THIS IS: an expression of interest that opens a screening step — NOT a final application, and nothing is signed here. Do not tell your human they have applied; tell them they have raised their hand. If they are selected, a separate application arrives from the partner out of band. One submission per email address per form; a second is REFUSED and the first is NOT overwritten, so a correction goes to the form's contact address rather than a resubmit. A `claim_token` comes back ONLY for an unattributed submitter, and only once — surface it verbatim, because it is then the only way they can ever read their own submission again. A caller carrying an identity gets none and does not need one. Args: { form_id, answers }. Returns: { ok, submission_id, status, failed_gates, claim_token?, counts, message }. No auth required; a token only attributes the submission.

輸入參數answers必填form_id必填

ic_forms_my_submission

Read your OWN submission to a form

The status of one submission — YOUR human's, never anybody else's. No token required. Two ways in: a signed-in identity resolves its own record with no id at all, or `submission_id` plus the `claim_token` handed back once at submit time opens the record that token belongs to. An id ALONE never works: ids travel through URLs and chat logs, and if an id were a credential every stranger's answers would be readable by anyone who ever saw a link. A wrong id, a wrong token and an id that was never issued all return the same `found: false`, so this cannot be used to test which ids exist. What comes back is status, dates and failed gates — never the answers as stored, never the reviewer's private note. Args: { form_id, submission_id?, claim_token? }. Returns: { ok, found, submission? }. No auth required.

輸入參數form_id必填claim_tokensubmission_id

ic_forms_withdraw

Withdraw your OWN submission to a form (consequential, cannot be undone)

Take your human's own submission back. NO TOKEN REQUIRED, and no token grants this on anyone else's behalf: the ONLY things that open a record here are your human's signed-in identity or the submission_id plus the one-time claim_token handed back at submit. An operator cannot do it for them, a reviewer cannot do it for them, and `admin:forms_manage` does not reach this — withdrawing belongs to the person who submitted, because a reviewer withdrawing on somebody's behalf is a rejection wearing that person's name. CONFIRM WITH YOUR HUMAN BEFORE CALLING, in the plainest words you have. THIS CANNOT BE UNDONE BY ANYONE HERE: no reviewer can move a withdrawn record back, and on a form that asks for an email address, answering again on that address is REFUSED, so a withdrawal is not a way to redo an application. If they had been APPROVED, withdrawing hands their place back to the group and somebody on the waitlist can take it — `freed_slot` in the response tells you whether that happened, and it is the sentence to read to them. Idempotent: a record that was already withdrawn comes back ok with `changed: false` rather than an error, so a retry after a timeout is safe. A wrong id, a wrong token and an id that was never issued all return the same `found: false`, so this cannot be used to test which ids exist. Args: { form_id, submission_id?, claim_token? }. Returns: { ok, found, submission_id?, status?, previous_status?, changed?, already_withdrawn?, freed_slot?, counts?, message }. No auth required.

輸入參數form_id必填claim_tokensubmission_id

ic_scheduling_list_meeting_types

List a member's public meeting types (public booking link)

What you may book with one IC member: every PUBLIC meeting type they publish, with its duration, location kind, notice window and booking horizon. START HERE — a slug guessed rather than read is the commonest way an availability call returns not_found. NO TOKEN REQUIRED, and that is the point: a visitor's agent must be able to discover a member's booking link without an IC account, exactly as a human opening the link can. Visibility is filtered in the scheduling service's own SQL — members_only, unlisted and deactivated types never reach this response and are not filtered here, so an empty meeting_types means this member publishes nothing public, NOT that a filter hid something. min_notice_minutes and horizon_days are the two policy fields that decide whether a slot you want can exist at all; read them before proposing times to your human. The same reads are served by the scheduling service itself at https://sched.skew.site; its protocol document is https://sched.skew.site/v1/.well-known/scheduling. Args: { handle }. Returns: { ok, member:{handle,display_name,tz}, meeting_types[{slug,title,description,duration_minutes,location_kind,min_notice_minutes,horizon_days,requires_approval}] }. No auth required.

輸入參數handle必填

ic_scheduling_get_availability

Bookable slots for one meeting type, WITH the member's policy

Open slots for one meeting type AND the member's full booking policy, in ONE response. The policy is included deliberately so you can solve locally instead of probing: repeated narrowing calls are what turn a lookup into a negotiation, and this surface refuses to be negotiated with. Every start/end is UTC ISO-8601 with a trailing Z; member.tz and the echoed viewer_tz are IANA zone names — never do wall-clock arithmetic without one. READ complete BEFORE YOU READ slots. ok:true with complete:false is an INCOMPLETE SUCCESS, not a failure: part of the member's calendar could not be read, coverage.unknown_minutes says how much and unknown_windows[] says which windows and why. Those windows are OMITTED from slots, never guessed free — so do not tell your human the member is free then, and do not tell them the member is busy then either. The honest sentence is that we could not see part of their calendar. horizon.effective_to may be earlier than what you asked for when a member's constraint data runs out; that is 'not offered', which is a definite statement and is NOT the same fact as unknown. An empty slots with complete:true genuinely means booked solid or outside the window. NO TOKEN REQUIRED. The same reads are served by the scheduling service itself at https://sched.skew.site; its protocol document is https://sched.skew.site/v1/.well-known/scheduling. Args: { handle, meeting_type, from?, to?, tz? }. Returns: { ok, complete, member, meeting_type{duration_minutes,slot_granularity_minutes,min_notice_minutes,max_per_day,buffer_before_minutes,buffer_after_minutes,location_kind,requires_approval}, slots[], coverage, unknown_windows[], horizon?, generated_at }. No auth required.

輸入參數totzfromhandle必填meeting_type必填

ic_scheduling_manage_booking

Read, cancel or reschedule one booking with its cancel token

The way OUT of a booking, and it is first-class on purpose: an agent that has to ask its human to click a link in an email simply ghosts, and no-shows are the failure mode that actually burns members' time. NO TOKEN REQUIRED — the booking's own cancel_token IS the credential, exactly as a form's claim token is for an account-less submitter. Putting the exit behind an IC account nobody was issued is how a person ends up emailing a human to be removed. Authorization has not been skipped, it has MOVED into the resource: the token is checked in constant time and a WRONG token gives the SAME answer as a missing booking (not_found), so this cannot be used to discover which booking ids exist. action:read returns the booking's current state. action:cancel is idempotent — cancelling an already-cancelled booking is a SUCCESS, not an error, so a retry after a dropped response does not look like a failure. action:reschedule NEEDS start. A refused move leaves the original booking untouched: the release and the new booking are one transaction, so an error means nothing changed and you may try another slot. Confirm cancel and reschedule with your human first; both are visible to the member immediately. booking.id in a reschedule response is NEW and is the one to keep; cancel_token is unchanged. Reading the OLD id with the same token returns the LIVE booking (booking.id is the new id) plus superseded{id,start,end,rescheduled_by} naming the booking you asked for, so a saved manage link keeps working after the owner moves the meeting. action:read is also how you wait for a Google Meet link: calendar.meet_link.status pending -> ready (location_url is the link) or failed/none (no link is coming); poll no faster than every 2 seconds, for at most 90 seconds. Args: { booking_id, cancel_token, action, start?, reason?, idempotency_key? }. Returns: { ok, booking{id,status,start,end,cancel_token,cancelled_by,rescheduled_by,rescheduled_to}, superseded?{id,start,end,rescheduled_by}, member, mee

輸入參數startaction必填reasonbooking_id必填cancel_token必填idempotency_key

ic_member_card_get

A member's public card: how to book or pay them (public)

The public card for one Immersive Commons member by handle, schema ic-member-card/1: { ok, card{ schema, handle, name, headline?, bio?, profile_url, card_url, member_of, links[{kind, url, handle?, label?, verified_at?}], reach[{channel ('book'|'call'|'agent_inbox'|'paid_message'|'direct'), label, how, auth ('none'|'ic-member'|'agent-token'|'x402'), page?, endpoint?, tool?, url?, kind?, member_id?, intents?}], capabilities{ book{available, endpoint, page, auth}, message, call, files, pay }, signature } }. links are the member's PUBLIC links in their order (verified_at = the last time IC's server got a 2xx/3xx from it). reach lists only the ways to reach them that work right now, best first; follow `how`. Each capability says available true/false and, when false, `why` and an `alternative` to use instead. `pay` lists CAIP-10 accounts (Base and Solana) and assets ONLY when the member chose to make their pay address public; otherwise available:false. When offerings are on, `pay.offerings[]` lists what the member sells, each with an x402_url that pays them directly, and `message` points at their pay-to-reach offering if they listed one. Before paying anyone, show your human the handle, name and address and get their explicit go: this card is authenticated only by being served from immersivecommons.com (signature is null until signed cards ship). Members are private by default, and an unknown, retired or private handle returns the SAME not_found, so this is not a membership oracle. The same JSON is served at https://www.immersivecommons.com/m/<handle>/agent.json. No auth required. Args: { handle }.

輸入參數handle必填

ic_offerings_get

A member's listed offerings, and how to pay for them (public)

What one Immersive Commons member sells, by handle: { ok, handle, count, offerings[{ id, slug, title, description, price{mode, amount_usdc, unit?}, networks, fulfillment_kind, audience, input_schema?, x402_url }], how_to_pay }. Only offerings the member LISTED and that are on sale; an unknown handle, a member with none listed, and a private member all return the same not_found. To buy: GET or POST x402_url (?amount= for pay_what_you_want, ?quantity= per unit). It answers HTTP 402 with x402 PaymentRequirements whose payTo is the member's OWN address (Base, and Solana when they take it); pay with a PAYMENT-SIGNATURE (or X-PAYMENT) header and get the result plus a receipt. Show your human the member, the price and what is promised before paying. No auth required. Args: { handle }.

輸入參數handle必填

ic_member_profile_get

A member's public profile as data (public)

One Immersive Commons member's public profile by handle, as data: { ok, handle, name, profile_url, card_url, profile_v2{ hero{display_name, availability, chips}, stats[{value, label, source_note?, source_url?, kind ('self_reported' = the member's own claim | 'computed' = derived by IC from GitHub)}], now[{label, text}], offers[{title, body?, cta, meeting_type, booking_page}], log[{id, lane, kind, date, title, body?, url?, url_label?, pinned, updated}] (newest first, <= 50), log_total, log_url, activity (the 12-month chart: weeks, lanes{building, events, writing}, milestones) | null, follow{feed, feed_by_lane, agent} } }. The same profile_v2 block as https://www.immersivecommons.com/m/<handle>/agent.json. Drafts never appear. Members are private by default, and an unknown, private, operator-hidden or retired handle all return the SAME { ok:false, error, error_kind:'not_found' }, so this is not a membership oracle; a retired handle of a public member is followed to the current one. Read-only. No auth required. Args: { handle }.

輸入參數handle必填

ic_plans_guest_get

Read a plan you were invited to, with its link token

For the GUEST of a plan, or the guest's own AI assistant. NO IC ACCOUNT NEEDED: the t= token from the plan link is the credential, and a wrong token answers not_found exactly as a missing plan does. Returns the options, windows, your own answer, the current proposal and next_step; never the other side's answer. Args: { plan_id, token }. No auth required.

輸入參數token必填plan_id必填

ic_plans_guest_answer

Answer a plan you were invited to: verdicts and ranks only

For the GUEST of a plan or their assistant. Judge each option against what your person wants and send only a verdict (ok | veto | unknown) and optional rank (1 = best) per option, and ok per time window. Never send reasons, diet, budget or anything else; there is no field for them. The other person sees only the final proposal. Args: { plan_id, token, answer: { options: [{ id, verdict, rank? }], windows?: [{ id, ok }] } }. No auth required.

輸入參數token必填answer必填plan_id必填

ic_plans_guest_respond

Accept or pass on the proposal of a plan you were invited to

For the GUEST of a plan or their assistant: accept or pass on the current proposal, or leave the plan (leave:true, which ends it). ASK YOUR PERSON FIRST, it commits them. Both sides accepting confirms the plan; passing moves to the next proposal and says nothing about why. Args: { plan_id, token, accept?: boolean, leave?: boolean }. No auth required.

輸入參數leavetoken必填acceptplan_id必填

ic_vault_list

Browse the IC Vault of first-try recipes (public)

List and filter the Immersive Commons Vault: procedures PROVEN to work, written so you clear them without exploring — agent-readiness playbooks and startup credit programs, same schema. No auth required. Filters: kind ('playbook'|'credit'), category, status ('proven'|'unproven'|'dead' — does the thing actually exist), evidence ('official'|'mixed'|'approx' — how well-sourced the facts are), verified_within_days (freshness), q (substring over title/summary/eligibility), sort, limit, offset. Returns: { ok, total, returned, offset, entries[], facets, notes }. Each entry carries `first_try_success_label`, which reads "not yet measured" — NOT "0%" — until an entry has enough real reports; `first_try_success` is null in that state and a client must not render it as a number. `facets` gives the live value counts per filter so you can narrow without guessing at the vocabulary. An unknown filter value is IGNORED and explained in `notes` rather than erroring. Use ic_vault_match to ask whether a specific company qualifies; use ic_vault_feedback_submit to report whether a recipe worked.

輸入參數qkindsortlimitoffsetstatuscategoryevidenceverified_within_days

ic_vault_match

Check which IC Vault entries a company qualifies for (public)

Evaluate a company profile against the Vault's eligibility predicates and get a THREE-VALUED answer per entry: 'eligible' (every stated gate is definitively met), 'ineligible' (a stated gate is definitively failed), or 'indeterminate' — which means WE CANNOT TELL FROM WHAT THE VENDOR PUBLISHES, and is a real answer, never a soft no. No auth required. Nothing is ever reported 'eligible' while any gate is unknown or unstructured: a missing profile field lands in `unknown` (supply it and the verdict may flip), and a gate the program states only in prose lands in `manual_review` (a human has to read it). A non-hit against a NAMED partner list is `manual_review` too, never a failure, because every published partner list in the corpus is partial. Every profile field is OPTIONAL — a partial profile is the normal case and returns more `indeterminate`, not an error. Accepts the same category/kind/status/evidence/freshness filters as ic_vault_list. Returns: { ok, total_considered, counts, matches[], notes }. Each match carries failed[], unknown[], manual_review[], missing_prerequisites[] and per-tier verdicts.

輸入參數kindas_ofholdsstagestatusqualifycategoryevidenceheadcountdomain_tagsaffiliationsjurisdiction另有 13 個

版本歷史

1
  1. v1.1.0最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分