{
  "name": "Unlinked",
  "homepage": "https://www.unlinked.ai",
  "login": "https://www.unlinked.ai/login",
  "importInstructions": "https://www.unlinked.ai/import-linkedin",
  "agentSetup": "https://www.unlinked.ai/settings",
  "authentication": {
    "browser": "Ideaflow ID issuer/subject",
    "mcp": "revocable account-scoped bearer grant",
    "mcpOAuth": {
      "protectedResourceMetadata": "https://www.unlinked.ai/.well-known/oauth-protected-resource/mcp",
      "authorizationServer": "https://www.unlinked.ai",
      "clientRegistration": [
        "client_id_metadata_document",
        "dynamic_client_registration"
      ],
      "scopes": [
        "network",
        "people",
        "connections"
      ],
      "note": "Paste https://www.unlinked.ai/mcp into a Claude or ChatGPT custom connector and sign in; each connection is a revocable account grant."
    },
    "manualKeys": {
      "settings": "https://www.unlinked.ai/settings#api-keys",
      "copyKeyLabel": "Copy API key",
      "copySetupLabel": "Copy agent setup",
      "repeatableReveal": true,
      "namedIndependentKeys": true,
      "expiry": "until revoked",
      "instructions": "Manual key setup: https://www.unlinked.ai/agents. Lifecycle and release contract: docs/agent-key-settings.md in the repository.",
      "connectionActionsToggle": "Send and manage connection requests",
      "savePermissionsLabel": "Save permissions",
      "permissionChangesKeepToken": true,
      "newToolsWithinPermissionKeepToken": true
    }
  },
  "data": {
    "ownNetwork": true,
    "ownerAiSearchRanking": "Owner-network AI search requires supplied title/position evidence for a requested role, omits domain-only matches, and gives short conversational reasons grounded in supplied fields, stating when sector focus is unknown; response shapes and grant versions are unchanged.",
    "globalSearch": true,
    "recoveredLegacyProfileConfirmation": true,
    "rawArchiveAgentAccess": false,
    "anonymousPublicPeople": true,
    "recordedConnectionDegrees": [
      1,
      2
    ],
    "connectionAnchor": "explicitly confirmed recovered profile",
    "recoveredOriginals": "browser-only after explicit recovered-account confirmation"
  },
  "mcp": {
    "url": "https://www.unlinked.ai/mcp",
    "transport": "streamable-http",
    "tools": [
      "unlinked_search_network",
      "unlinked_search_everyone",
      "unlinked_whoami",
      "unlinked_list_people",
      "unlinked_list_connections",
      "unlinked_get_profile",
      "unlinked_ai_search",
      "unlinked_list_connection_requests",
      "unlinked_list_notifications",
      "unlinked_lookup_contact"
    ],
    "grantVersioning": "Manual-key controls and connector choice: docs/agent-key-settings.md. Historical-grant normalization, tool refresh and OAuth permission consent: docs/agent-api.md (repository).",
    "optionalWriteScope": {
      "scope": "owner_network_and_public_and_write",
      "default": false,
      "tools": [
        "unlinked_send_connection_request",
        "unlinked_accept_connection_request",
        "unlinked_ignore_connection_request",
        "unlinked_withdraw_connection_request"
      ],
      "ownerOnlyScope": "owner_network_and_write"
    },
    "toolListChangePush": false,
    "privateNotesScope": {
      "permission": "Private people notes & relations",
      "scopeSuffix": "_and_private_notes",
      "oauthScope": "private_notes",
      "defaultForApiKeys": true,
      "oauthConsent": "checkbox, starts ticked; connections made before catalog v7 reconnect",
      "tools": [
        "unlinked_get_person_private",
        "unlinked_get_private_thing",
        "unlinked_list_private_things",
        "unlinked_search_private",
        "unlinked_get_neighbourhood",
        "unlinked_save_private_thing",
        "unlinked_add_private_note",
        "unlinked_delete_private_note",
        "unlinked_add_private_link",
        "unlinked_update_private_link",
        "unlinked_delete_private_link",
        "unlinked_delete_private_thing"
      ],
      "visibility": "owner-only; shown in Unlinked and OpenChat; never notifies anyone; not a connection request; not messaging",
      "messaging": "OpenChat via the shared Ideaflow connector https://id.ideaflow.app/mcp (OpenChat permission); never an Unlinked key permission"
    }
  },
  "agentHttpApi": {
    "base": "https://www.unlinked.ai/api/agent/v1/",
    "authentication": "same revocable account-scoped bearer grant",
    "contract": "docs/agent-api.md (repository)",
    "maxPageSize": 50,
    "errors": [
      "already_connected",
      "client_unauthorized",
      "cooldown_active",
      "cursor_invalid",
      "degree_unproven",
      "grant_revoked",
      "invalid_input",
      "not_a_member",
      "not_found",
      "not_linked",
      "rate_limited",
      "request_pending",
      "request_unavailable",
      "result_too_large",
      "scope_not_granted",
      "upstream_unavailable"
    ],
    "grantProvisioning": "POST /api/agent/v1/provision-grant — server-to-server, allow-listed confidential clients only (client_secret_basic), keyed on verified OIDC issuer+subject, never email; disabled unless operator-configured; contract v1.1 in docs/agent-api.md"
  },
  "agentSetupAutomatic": true,
  "meet": "https://www.unlinked.ai/meet",
  "card": "https://www.unlinked.ai/card",
  "webManifest": "https://www.unlinked.ai/manifest.webmanifest",
  "connectionBrowsing": {
    "browserPath": "/people/{id}/connections",
    "sort": [
      "detail",
      "name"
    ],
    "queryParameter": "q",
    "detailLevel": [
      "basic",
      "detailed"
    ],
    "description": "Page depth describes visible content, independently of membership. Only published connections are browsed."
  },
  "publicWebSearch": {
    "url": "https://www.unlinked.ai/search-public",
    "authentication": "none",
    "methods": [
      "GET",
      "HEAD"
    ],
    "queryParameter": "q",
    "maxPageSize": 50,
    "scope": "published professional People only; excludes private networks and contact details",
    "format": "server-rendered HTML without JavaScript",
    "alternateTransport": {
      "url": "https://unlinked-ideaflowco.vercel.app/search-public",
      "experimental": true,
      "scope": "same live canonical public page; no credentials forwarded or stored publication",
      "readerVerification": "ordinary ChatGPT access not established"
    }
  },
  "messaging": {
    "provider": "OpenChat",
    "identity": "shared Ideaflow account",
    "documentation": "https://www.unlinked.ai/AGENTS.md",
    "agentSending": false,
    "confidentialRecipientResolver": "/api/messaging/v1/recipient",
    "webInbox": "/messages",
    "browserMessagesApi": {
      "path": "/messages/api",
      "authorization": "browser-session-and-csrf",
      "agentAccess": false
    },
    "agentSetup": "https://chat.globalbr.ai/agents",
    "agentCredential": "Separate OpenChat oc_ key for messages and Context; Unlinked grants cannot send messages."
  },
  "publicProfileDetails": {
    "documentation": "docs/profile-details.md"
  },
  "shared_connector": {
    "url": "https://id.ideaflow.app/mcp",
    "setup_url": "https://id.ideaflow.app/agents",
    "scopes": [
      "unlinked:read",
      "unlinked:write"
    ]
  },
  "browserCardSharing": {
    "ownerCard": "https://www.unlinked.ai/card",
    "contactCardJoin": "Explicit browser-only same-origin POST /c/<token>/add preserves the card through verified signup and adds the connection. Scanning alone does not connect. Not an agent capability."
  },
  "requestDiagnostics": {
    "enabledByDefault": false,
    "responseHeader": "X-Request-ID",
    "idTrust": "server-generated; incoming trace IDs ignored",
    "privacy": "No credentials, queries, result bodies or sensitive URL parameters. Opaque account correlation only after successful authentication.",
    "gatewayLimitation": "Shared gateway does not currently forward the downstream Unlinked request ID."
  },
  "publicPeoplePresence": {
    "values": [
      "member",
      "legacy",
      "shadow"
    ],
    "description": "Presence semantics and the historical-account reclaim boundary are owned by docs/public-people-reader.md#historical-membership in the repository."
  }
}
