_ registry / mcp streamable-http · checked 37m ago

portravo

https://portravo.com

Registry code: 148cd9ce93db9d33

api record

Use Portravo for construction plan takeoffs and reviewed estimates. Account linking is required for every tool except list_pricing_markets and preflight_takeoff without project_id, which show markets, trades and published prices before linking. Start with preflight_takeoff to discover automated trades and existing-credit requirements. Customer create_project requires explicit trades. Before run_takeoff, read the project preflight and obtain approval for its exact trades and creditsRequired; pass confirmed_trades and max_credits with confirm_credit_use=true. Starts never purchase credits or…

endpoint
https://portravo.com/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is portravo live?
Yes — it answered the hub's last check (checked 37m ago). It answered 99% of checks over the last 30 days.
Is portravo free to use?
Partly — some of its tools are open, others need a key or payment.
What tools does portravo have?
10 tools: get_takeoff, create_project, run_takeoff, attach_plan_pdf, export_reviewed_estimate, get_takeoff_status, list_pricing_markets, preflight_takeoff, ….
Is portravo safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
98.6%

90 days 99.2%· all time 99.2%

latency
356ms

last good check

priced tools
0

of 10 tools

_ answered our checks, 90 days 245 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • unknown → live
_ what it is for
used for
  • run a construction plan takeoff
  • create an estimate project
  • attach a plan pdf
  • export a reviewed estimate
takes → gives
documents, text → data, documents
tools
5 reads3 changes data
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 10 tools
2 open2 auth-required 6 never probed 4 of 10 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • list_pricing_markets reads open 7h ago

    List the regional construction pricing markets supported by Portravo. The returned markets are the accepted metro_code values for create_project. Works before account linking (the standard markets by code, name and state, marked accountLinked false; a linked account also sees local markets and cost indexes).

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {},
      "additionalProperties": false
    }
    arguments 6 lines
  • preflight_takeoff open 3h ago

    Before creating or starting a takeoff, inspect current automatic/team-assisted trades, the exact existing-credit requirement, balance, upload limits, published prices and review link. Supply either project_id or proposed trades, or neither to discover availability. Works before account linking without project_id: trades, credit rule and prices only, with existingCreditsAvailable null and accountLinked false. Does not reserve credits, start work, buy anything or bill overage. Reviewer scope is identified separately.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "trades": {
          "type": "array",
          "items": {
            "enum": [
              "electrical",
              "framing",
              "mechanical",
              "plumbing",
              "landscape",
              "painting",
              "concrete",
              "roofing",
              "drywall",
              "whole_job"
            ],
            "type": "string"
          },
          "maxItems": 9,
          "minItems": 1
        },
        "project_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]+$",
          "maxLength": 128,
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 33 lines
  • get_profile reads auth-required 7h ago

    Identify the signed-in Portravo account after OAuth account linking.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {},
      "additionalProperties": false
    }
    arguments 6 lines
  • list_projects reads auth-required 7h ago

    Find construction projects in the connected Portravo account, including draft, review, priced and final estimates. Returns 50 projects per page; nextOffset is the offset of the next page, or null on the last page.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "offset": {
          "type": "integer",
          "maximum": 999999,
          "minimum": 0
        }
      },
      "additionalProperties": false
    }
    arguments 12 lines
  • get_takeoff reads unknown 3h ago

    Read an owned construction project's plan files (attached from chat or uploaded in Portravo) and extracted takeoff quantities, trades, confidence and human review status. reviewRequired reports whether any line still needs estimator review. Quantities require estimator review before pricing or bidding.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "project_id"
      ],
      "properties": {
        "project_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]+$",
          "maxLength": 128,
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • create_project changes data unknown never probed

    Create a new construction estimate project in the connected Portravo account from a project name, an explicit trades selection returned by preflight_takeoff, an optional address and an optional supported metro_code. Trades are required for customer projects; only the isolated synthetic reviewer may omit them. Repeating a call with the same idempotency_key returns the original project instead of creating another. Returns reviewUrl, the project page where the user can also upload a plan PDF in the browser. Does not run extraction or consume estimate credits.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "name",
        "idempotency_key"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "trades": {
          "type": "array",
          "items": {
            "enum": [
              "electrical",
              "framing",
              "mechanical",
              "plumbing",
              "landscape",
              "painting",
              "concrete",
              "roofing",
              "drywall",
              "whole_job"
            ],
            "type": "string"
          },
          "maxItems": 9,
          "minItems": 1
        },
        "address": {
          "type": "string",
          "maxLength": 200
        },
        "metro_code": {
          "type": "string",
          "maxLength": 40,
          "minLength": 1
        },
        "idempotency_key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_.:-]+$",
          "maxLength": 128,
          "minLength": 8
        }
      },
      "additionalProperties": false
    }
    arguments 51 lines
  • run_takeoff changes data unknown never probed

    Run the initial AI takeoff for a new project whose plan PDF was attached with attach_plan_pdf or uploaded by the user on the project page in Portravo. Call preflight_takeoff first and obtain approval for its selected trades and creditsRequired. Set confirmed_trades to the approved selection and max_credits to that approved ceiling (defaults to one for older clients). Uses only existing plan allowance and purchased credits, never billed overage; a changed selection/cost or insufficient balance is refused before starting. The isolated synthetic reviewer retains its bounded one-credit standard fixture. Repeating a call with the same idempotency_key does not charge again. Returns asynchronous progress; use get_takeoff_status until done, then get_takeoff for source-linked human review. A completed run is not a bid-ready estimate. Failed provider runs refund the reservation; existing review work cannot be overwritten.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "project_id",
        "confirm_credit_use",
        "idempotency_key"
      ],
      "properties": {
        "project_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]+$",
          "maxLength": 128,
          "minLength": 1
        },
        "max_credits": {
          "type": "integer",
          "maximum": 3,
          "minimum": 0
        },
        "idempotency_key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_.:-]+$",
          "maxLength": 128,
          "minLength": 8
        },
        "confirmed_trades": {
          "type": "array",
          "items": {
            "enum": [
              "electrical",
              "framing",
              "mechanical",
              "plumbing",
              "landscape",
              "painting",
              "concrete",
              "roofing",
              "drywall",
              "whole_job"
            ],
            "type": "string"
          },
          "maxItems": 9,
          "minItems": 1
        },
        "confirm_credit_use": {
          "type": "boolean",
          "const": true
        }
      },
      "additionalProperties": false
    }
    arguments 53 lines
  • attach_plan_pdf changes data unknown never probed

    Attach a PDF the user selected in this conversation as the first plan for a new Portravo project. Plan PDFs must be 10 MiB or smaller. Accepts exactly one of plan, a host-provided download_url and file_id, or plan_inline, canonical base64 of the exact user-uploaded PDF bytes with file_name and application/pdf mime_type, up to 32 KiB. A PDF with no file link above 32 KiB, or any PDF above the direct limit, is uploaded in the browser at the project's reviewUrl instead. That browser path streams up to 50 MiB for the selected automatic trades. Projects that already have a plan or review work are refused, so existing work is never replaced. Repeating a call with the same idempotency_key returns the original result. Stores the selected PDF privately in the connected account; does not extract or consume credits.

    mcp-tool

    {
      "type": "object",
      "oneOf": [
        {
          "not": {
            "required": [
              "plan_inline"
            ]
          },
          "required": [
            "plan"
          ]
        },
        {
          "not": {
            "required": [
              "plan"
            ]
          },
          "required": [
            "plan_inline"
          ]
        }
      ],
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "project_id",
        "idempotency_key"
      ],
      "properties": {
        "plan": {
          "type": "object",
          "required": [
            "download_url",
            "file_id"
          ],
          "properties": {
            "file_id": {
              "type": "string",
              "maxLength": 256,
              "minLength": 1
            },
            "file_name": {
              "type": "string",
              "pattern": "^[^/\\\\\\x00-\\x1f]+\\.pdf$",
              "maxLength": 200,
              "minLength": 5
            },
            "mime_type": {
              "type": "string",
              "const": "application/pdf"
            },
            "download_url": {
              "type": "string",
              "format": "uri",
              "maxLength": 8192
            }
          },
          "description": "Host-provided signed file link for a PDF the user attached (PDF up to 10 MiB).",
          "additionalProperties": false
        },
        "project_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]+$",
          "maxLength": 128,
          "minLength": 1
        },
        "plan_inline": {
          "type": "object",
          "required": [
            "data_base64",
            "mime_type",
            "file_name"
          ],
          "properties": {
            "file_name": {
              "type": "string",
              "pattern": "^[^/\\\\\\x00-\\x1f]+\\.pdf$",
              "maxLength": 200,
              "minLength": 5
            },
            "mime_type": {
              "type": "string",
              "const": "application/pdf"
            },
            "data_base64": {
              "type": "string",
              "maxLength": 43692,
              "minLength": 4
            }
          },
          "description": "Exact bytes of a user-uploaded PDF as canonical base64, only when no file link exists. PDF up to 32 KiB.",
          "additionalProperties": false
        },
        "idempotency_key": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_.:-]+$",
          "maxLength": 128,
          "minLength": 8
        }
      },
      "additionalProperties": false
    }
    arguments 103 lines
  • export_reviewed_estimate reads unknown never probed

    Get a short-lived Excel XLSX download for an owned Portravo estimate after every takeoff line has been reviewed and the estimate is priced or final. If review is incomplete, the call returns a review_required error with the Portravo review link, where quantities, assembly mappings and pricing are completed. Never exports unreviewed estimates.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "project_id"
      ],
      "properties": {
        "project_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]+$",
          "maxLength": 128,
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • get_takeoff_status unknown 3h ago

    Read an owned project and its latest asynchronous takeoff progress, completion limitations and review link. Never advances or restarts a run, uses credits or changes billing. Poll this tool after run_takeoff returns a running result.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "project_id"
      ],
      "properties": {
        "project_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]+$",
          "maxLength": 128,
          "minLength": 1
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 148cd9ce93db9d33.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/148cd9ce93db9d33/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/148cd9ce93db9d33/badge.svg)](https://brick.blue/agent/148cd9ce93db9d33?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.