CoinList · Arazzo Workflow

CoinList Passage - Invest flow

Version 1.0.0

Load an offer, check on-chain balance/allowance, prove and allow-list the wallet, then create and track a participation.

1 workflow 4 source APIs 1 provider
View Spec View on GitHub CompanyFintechCryptocurrencyToken SalesTokenized EquitiesKYCAuthenticationBlockchainDigital AssetsEmbedded FinanceArazzoWorkflows

Provider

coinlist

Workflows

invest-in-offer
Take a signed-in user from an offer to a tracked participation.
The full Passage invest path. Requires a user-scoped (authorization_code + PKCE) access token.
7 steps inputs: chain, offer_id, owner, spender, token_address, wallet_address outputs: participation_id
1
load-offer
2
check-balance
3
check-allowance
5
allow-wallet
6
create-participation
7
track-participation

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: CoinList Passage - Invest flow
  version: 1.0.0
  description: Load an offer, check on-chain balance/allowance, prove and allow-list the wallet, then create and track a participation.
sourceDescriptions:
- name: offersApi
  url: ../openapi/coinlist-offers-api-openapi.yml
  type: openapi
- name: participationsApi
  url: ../openapi/coinlist-participations-api-openapi.yml
  type: openapi
- name: tokenApi
  url: ../openapi/coinlist-token-api-openapi.yml
  type: openapi
- name: walletOwnershipApi
  url: ../openapi/coinlist-wallet-ownership-api-openapi.yml
  type: openapi
workflows:
- workflowId: invest-in-offer
  summary: Take a signed-in user from an offer to a tracked participation.
  description: The full Passage invest path. Requires a user-scoped (authorization_code + PKCE) access token.
  inputs:
    type: object
    properties:
      offer_id: {type: string}
      token_address: {type: string}
      owner: {type: string}
      spender: {type: string}
      wallet_address: {type: string}
      chain: {type: string}
  steps:
  - stepId: load-offer
    operationId: getPartnerOffer
    parameters:
    - name: id
      in: path
      value: $inputs.offer_id
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      offer: $response.body
  - stepId: check-balance
    operationId: getTokenBalance
    parameters:
    - name: token_address
      in: query
      value: $inputs.token_address
    - name: owner
      in: query
      value: $inputs.owner
    - name: chain
      in: query
      value: $inputs.chain
    successCriteria:
    - condition: $statusCode == 200
  - stepId: check-allowance
    operationId: getTokenAllowance
    parameters:
    - name: token_address
      in: query
      value: $inputs.token_address
    - name: owner
      in: query
      value: $inputs.owner
    - name: spender
      in: query
      value: $inputs.spender
    - name: chain
      in: query
      value: $inputs.chain
    successCriteria:
    - condition: $statusCode == 200
  - stepId: prove-wallet
    operationId: createWalletOwnershipChallenge
    requestBody:
      contentType: application/json
      payload:
        wallet_address: $inputs.wallet_address
        chain: $inputs.chain
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      challenge: $response.body
  - stepId: allow-wallet
    operationId: allowWallet
    parameters:
    - name: offer_id
      in: path
      value: $inputs.offer_id
    requestBody:
      contentType: application/json
      payload:
        wallet_address: $inputs.wallet_address
    successCriteria:
    - condition: $statusCode == 200
  - stepId: create-participation
    operationId: createPartnerParticipation
    requestBody:
      contentType: application/json
      payload:
        offer_id: $inputs.offer_id
        wallet_address: $inputs.wallet_address
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      participation_id: $response.body.id
  - stepId: track-participation
    operationId: getPartnerParticipation
    parameters:
    - name: id
      in: path
      value: $steps.create-participation.outputs.participation_id
    successCriteria:
    - condition: $statusCode == 200
  outputs:
    participation_id: $steps.create-participation.outputs.participation_id

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/coinlist-invest-flow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.