---
schema: "interfacedelta-service-md/1"
target_key: "sha256:7c5121a6ab2553c44b6a2e3ecd8136a2c6c2aae732683c9e98374b99b7562f64"
origin: "https://upfork.dev"
protocols: ["mcp"]
observed_at: "2026-11-12T17:06:04.392Z"
generated_at: "2026-11-13T00:22:49.218Z"
record_url: "https://interfacedelta.com/atlas/sha256:7c5121a6ab2553c44b6a2e3ecd8136a2c6c2aae732683c9e98374b99b7562f64"
record_api: "https://interfacedelta.com/api/v1/record/services/sha256:7c5121a6ab2553c44b6a2e3ecd8136a2c6c2aae732683c9e98374b99b7562f64"
source: "InterfaceDelta atlas"
license_note: "Use of this record is governed by https://interfacedelta.com/terms."
---

# Service record: https://upfork.dev

## Identity
- Origin: https://upfork.dev
- Endpoints: https://upfork.dev/mcp
- Protocols: mcp
- Registry names: dev.upfork/upfork
- First retained observation: 2026-11-12T17:06:04.392Z
- Latest observation: 2026-11-12T17:06:04.392Z

## Tools
- Tool 1: get\_lesson (mcp); inputs: number; inputs omitted: 0; annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}
- Tool 2: install\_product (mcp); inputs: slug; inputs omitted: 0; annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}
- Tool 3: preflight (mcp); inputs: dependencies, devDependencies, task; inputs omitted: 0; annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}
- Tool 4: read\_product\_file (mcp); inputs: from, path, slug, to; inputs omitted: 0; annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}
- Tool 5: search\_lessons (mcp); inputs: article, full, kind, learned\_by, package, page, pageSize, product; inputs omitted: 1; annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}
- Tool 6: search\_products (mcp); inputs: full, kind, page, pageSize, price, query, sort, tag; inputs omitted: 0; annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}
- Tool 7: sign\_in (mcp); inputs: none shown; inputs omitted: 0; annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}
- Tool 8: view\_product (mcp); inputs: full, slug; inputs omitted: 0; annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}
Tools omitted: 0.

## Effect readings (AI)
- Tool 1 (get\_lesson): ◇ AI reading; state: counted; reads (confidence 0.92); lens: side-effects@1; model: claude-haiku-5.5.
- Tool 4 (read\_product\_file): ◇ AI reading; state: counted; reads (confidence 0.9); lens: side-effects@1; model: claude-haiku-5.5.
- Tool 5 (search\_lessons): ◇ AI reading; state: counted; reads (confidence 0.88); lens: side-effects@1; model: claude-haiku-5.5.
- Tool 6 (search\_products): ◇ AI reading; state: counted; reads (confidence 0.9); lens: side-effects@1; model: claude-haiku-5.5.
- Tool 8 (view\_product): ◇ AI reading; state: counted; reads (confidence 0.9); lens: side-effects@1; model: claude-haiku-5.5.

## Change history
No changes recorded in the retained history.

## Payment rails
- Protocols observed: none.
- HTTP 402 seen in retained observations: false.

## Not covered
- We don't call tools.
- We don't rate or certify.
- We don't publish prices.
- We cover only what was observed.

## Evidence
- Identity: observed / declared; observation time: 2026-11-12T17:06:04.392Z.
- Tools: declared; observation time: 2026-11-12T17:06:04.392Z.
- Effect readings (AI): AI reading; observation time: 2026-11-12T17:06:04.392Z.
- Change history: observed; observation time: 2026-11-12T17:06:04.392Z; change observation times: none.
- Payment rails: observed; observation time: 2026-11-12T17:06:04.392Z.

```json
{
  "schema": "interfacedelta-service-md/1",
  "target_key": "sha256:7c5121a6ab2553c44b6a2e3ecd8136a2c6c2aae732683c9e98374b99b7562f64",
  "origin": "https://upfork.dev",
  "protocols": [
    "mcp"
  ],
  "observed_at": "2026-11-12T17:06:04.392Z",
  "generated_at": "2026-11-13T00:22:49.218Z",
  "record_url": "https://interfacedelta.com/atlas/sha256:7c5121a6ab2553c44b6a2e3ecd8136a2c6c2aae732683c9e98374b99b7562f64",
  "record_api": "https://interfacedelta.com/api/v1/record/services/sha256:7c5121a6ab2553c44b6a2e3ecd8136a2c6c2aae732683c9e98374b99b7562f64",
  "source": "InterfaceDelta atlas",
  "license_note": "Use of this record is governed by https://interfacedelta.com/terms.",
  "identity": {
    "origin": "https://upfork.dev",
    "endpoints": [
      "https://upfork.dev/mcp"
    ],
    "protocols": [
      "mcp"
    ],
    "registry_names": [
      "dev.upfork/upfork"
    ],
    "first_retained_observation": "2026-11-12T17:06:04.392Z",
    "latest_observation": "2026-11-12T17:06:04.392Z"
  },
  "tools": [
    {
      "name": "get_lesson",
      "protocol": "mcp",
      "inputs": [
        "number"
      ],
      "inputs_omitted": 0,
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.92
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      }
    },
    {
      "name": "install_product",
      "protocol": "mcp",
      "inputs": [
        "slug"
      ],
      "inputs_omitted": 0,
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "effects": null
    },
    {
      "name": "preflight",
      "protocol": "mcp",
      "inputs": [
        "dependencies",
        "devDependencies",
        "task"
      ],
      "inputs_omitted": 0,
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "effects": null
    },
    {
      "name": "read_product_file",
      "protocol": "mcp",
      "inputs": [
        "from",
        "path",
        "slug",
        "to"
      ],
      "inputs_omitted": 0,
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.9
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      }
    },
    {
      "name": "search_lessons",
      "protocol": "mcp",
      "inputs": [
        "article",
        "full",
        "kind",
        "learned_by",
        "package",
        "page",
        "pageSize",
        "product"
      ],
      "inputs_omitted": 1,
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.88
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      }
    },
    {
      "name": "search_products",
      "protocol": "mcp",
      "inputs": [
        "full",
        "kind",
        "page",
        "pageSize",
        "price",
        "query",
        "sort",
        "tag"
      ],
      "inputs_omitted": 0,
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.9
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      }
    },
    {
      "name": "sign_in",
      "protocol": "mcp",
      "inputs": [],
      "inputs_omitted": 0,
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "effects": null
    },
    {
      "name": "view_product",
      "protocol": "mcp",
      "inputs": [
        "full",
        "slug"
      ],
      "inputs_omitted": 0,
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "effects": {
        "marker": "◇ AI reading",
        "state": "counted",
        "classes": [
          {
            "class": "reads",
            "confidence": 0.9
          }
        ],
        "lens": "side-effects@1",
        "model": "claude-haiku-5.5"
      }
    }
  ],
  "tools_omitted": 0,
  "tools_state": "recorded",
  "changes": [],
  "payment_rails": {
    "protocols": [],
    "http_402_seen": false
  },
  "not_covered": [
    "We don't call tools.",
    "We don't rate or certify.",
    "We don't publish prices.",
    "We cover only what was observed."
  ],
  "evidence": [
    {
      "section": "Identity",
      "classes": [
        "observed",
        "declared"
      ],
      "observed_at": "2026-11-12T17:06:04.392Z"
    },
    {
      "section": "Tools",
      "classes": [
        "declared"
      ],
      "observed_at": "2026-11-12T17:06:04.392Z"
    },
    {
      "section": "Effect readings (AI)",
      "classes": [
        "AI reading"
      ],
      "observed_at": "2026-11-12T17:06:04.392Z"
    },
    {
      "section": "Change history",
      "classes": [
        "observed"
      ],
      "observed_at": "2026-11-12T17:06:04.392Z",
      "observation_times": []
    },
    {
      "section": "Payment rails",
      "classes": [
        "observed"
      ],
      "observed_at": "2026-11-12T17:06:04.392Z"
    }
  ]
}
```
